> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamsoclo.site/llms.txt
> Use this file to discover all available pages before exploring further.

# cURL / Python / Node.js

> 使用 OpenAI 官方庫直接呼叫 API

所有 OpenAI 官方庫都可用，只需修改 `base_url`。示例使用 `gpt-5.6-sol`，Astra 套餐改為 `gpt-astra`。

## Chat Completions

<CodeGroup>
  ```bash cURL theme={null}
  curl https://gpt.teamsoclo.site/v1/chat/completions \
    -H "Authorization: Bearer sk-xxx" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "gpt-5.6-sol",
      "messages": [
        {"role": "system", "content": "你是一個樂於助人的助手。"},
        {"role": "user", "content": "解釋 JavaScript 中的閉包"}
      ]
    }'
  ```

  ```python Python theme={null}
  from openai import OpenAI

  client = OpenAI(
      api_key="sk-xxx",
      base_url="https://gpt.teamsoclo.site/v1",
  )

  resp = client.chat.completions.create(
      model="gpt-5.6-sol",
      messages=[
          {"role": "system", "content": "你是一個樂於助人的助手。"},
          {"role": "user", "content": "解釋 JavaScript 中的閉包"},
      ],
  )

  print(resp.choices[0].message.content)
  print(resp.usage)
  ```

  ```javascript Node.js theme={null}
  import OpenAI from "openai"

  const client = new OpenAI({
    apiKey: "sk-xxx",
    baseURL: "https://gpt.teamsoclo.site/v1",
  })

  const resp = await client.chat.completions.create({
    model: "gpt-5.6-sol",
    messages: [
      { role: "system", content: "你是一個樂於助人的助手。" },
      { role: "user", content: "解釋 JavaScript 中的閉包" },
    ],
  })

  console.log(resp.choices[0].message.content)
  console.log(resp.usage)
  ```
</CodeGroup>

<Warning>
  `base_url` 必須包含 `/v1`，且**不能**以 `/` 結尾。庫會自動拼接 `/chat/completions`。
</Warning>

響應完全符合 OpenAI 規範：`id` 為 `chatcmpl-...`，`usage` 含 `prompt_tokens`、`completion_tokens` 與 `completion_tokens_details.reasoning_tokens`。額度按 `usage.total_tokens` 精確扣除。

## Responses API

Codex 與新版 SDK 使用此協議。推理引數位於 `reasoning.effort`。

<CodeGroup>
  ```bash cURL theme={null}
  curl https://gpt.teamsoclo.site/v1/responses \
    -H "Authorization: Bearer sk-xxx" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "gpt-5.6-sol",
      "input": "寫一個判斷質數的 Python 函式",
      "reasoning": {"effort": "medium"}
    }'
  ```

  ```python Python theme={null}
  resp = client.responses.create(
      model="gpt-5.6-sol",
      input="寫一個判斷質數的 Python 函式",
      reasoning={"effort": "medium"},
  )
  print(resp.output_text)
  ```
</CodeGroup>

## 推理強度

Chat Completions 使用 `reasoning_effort`（`low`、`medium`、`high`）。不設定時閘道器使用 `high`。簡單任務設為 `low` 可省 Token：

```python theme={null}
resp = client.chat.completions.create(
    model="gpt-5.6-sol",
    reasoning_effort="low",
    messages=[{"role": "user", "content": "翻譯成英文：早上好"}],
)
```

<Warning>
  `reasoning_effort` 僅用於 Chat Completions。Responses API 請用 `reasoning: {"effort": ...}`；向 `/v1/responses` 傳送 `reasoning_effort` 會被拒絕為 “Unsupported parameter”。
</Warning>

## 流式輸出

<CodeGroup>
  ```python Python theme={null}
  stream = client.chat.completions.create(
      model="gpt-5.6-sol",
      messages=[{"role": "user", "content": "寫一段關於秋天的短文"}],
      stream=True,
      stream_options={"include_usage": True},
  )

  for chunk in stream:
      if chunk.choices and chunk.choices[0].delta.content:
          print(chunk.choices[0].delta.content, end="", flush=True)
      if chunk.usage:
          print("\n", chunk.usage)
  ```

  ```bash cURL theme={null}
  curl https://gpt.teamsoclo.site/v1/chat/completions \
    -H "Authorization: Bearer sk-xxx" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "gpt-5.6-sol",
      "messages": [{"role": "user", "content": "寫一段關於秋天的短文"}],
      "stream": true,
      "stream_options": {"include_usage": true}
    }'
  ```
</CodeGroup>

<Tip>
  遇到難題時模型可能思考較久才輸出第一個 Token。開啟 `stream: true` 可避免連線被中斷。`stream_options.include_usage` 讓最後一個資料塊攜帶 `usage`，便於自行核對額度。
</Tip>

## 傳送圖片（視覺）

圖片放在 `content` 陣列中，可用公開 URL，或本地檔案的 base64。

<CodeGroup>
  ```python 圖片 URL theme={null}
  resp = client.chat.completions.create(
      model="gpt-5.6-sol",
      messages=[{
          "role": "user",
          "content": [
              {"type": "text", "text": "這張圖報了什麼錯？"},
              {"type": "image_url", "image_url": {"url": "https://example.com/screenshot.png"}},
          ],
      }],
  )
  print(resp.choices[0].message.content)
  ```

  ```python 本地檔案（base64） theme={null}
  import base64

  with open("screenshot.png", "rb") as f:
      b64 = base64.b64encode(f.read()).decode()

  resp = client.chat.completions.create(
      model="gpt-5.6-sol",
      messages=[{
          "role": "user",
          "content": [
              {"type": "text", "text": "這張圖報了什麼錯？"},
              {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
          ],
      }],
  )
  print(resp.choices[0].message.content)
  ```
</CodeGroup>

<Warning>
  圖片按尺寸計費。裁剪到需要的部分，不要傳送整張 4K 截圖。
</Warning>

## 透過 API 檢視模型與額度

```bash theme={null}
# 該 Key 可呼叫的模型
curl https://gpt.teamsoclo.site/v1/models -H "Authorization: Bearer sk-xxx"

# 額度（OpenAI 舊版介面）
curl https://gpt.teamsoclo.site/v1/dashboard/billing/subscription -H "Authorization: Bearer sk-xxx"
curl https://gpt.teamsoclo.site/v1/dashboard/billing/usage -H "Authorization: Bearer sk-xxx"
```

`subscription` 在 `hard_limit_usd` 返回總額度；`usage` 在 `total_usage` 返回已用量，單位為**美分**（比較前先除以 100）。不想自己算就用 [檢查頁](https://gpt.teamsoclo.site/check)。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.