# 文案怎么用 (/docs/models/chat)

一次非流式补全。`model` 用对照表里的文案 ID。渠道 Model ID 见 [概览](/docs/models)。

```bash
export BASE=https://www.dexbuddy.app
export DEX_API_KEY='dbh_sk_…'

curl -sS "$BASE/v1/chat/completions" \
  -H "Authorization: Bearer $DEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dexbuddy/chat",
    "messages": [{"role": "user", "content": "用一句话介绍 Dex Buddy"}]
  }'
```

## 请求 [#请求]

`POST /v1/chat/completions`

body 按 OpenAI Chat Completions 写。`thinking`、`max_tokens`、`tools`、`response_format`、消息里的 `tool_calls` 都原样进上游。关思考、加大输出上限，跟上游文档即可。

| 字段 | 必填 | 说明 |
|------|------|------|
| `model` | 建议填 | 渠道 Model ID。可省略时走默认文案渠道；示例仍写明 `dexbuddy/chat` |
| `messages` | 是 | OpenAI 风格消息数组 |

`stream: true` → 拒绝（hold 前）。没写 `max_tokens` / `max_completion_tokens` 时按 4096 **预留积分**，不会把 4096 写进上游请求。写满额度时上游会回 `finish_reason=length`，网关按成功交回。

## 识图 [#识图]

同一条接口。渠道须支持识图。把 `messages[].content` 写成数组，放入 `image_url`：

```json
{
  "model": "dexbuddy/chat",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "图里是什么天气？" },
        {
          "type": "image_url",
          "image_url": { "url": "https://example.com/sky.jpg" }
        }
      ]
    }
  ]
}
```

## 成功 [#成功]

HTTP 200。OpenAI `choices` / `usage`（含用量明细）。`model` 是渠道 Model ID，不是上游名。无 `system_fingerprint`。**无**顶层 `billing`。

## 错误 [#错误]

仅本接口使用：

```json
{ "error": { "message": "积分余额不足", "type": "insufficient_credits", "code": "INSUFFICIENT_CREDITS" } }
```

常见：`401` 无身份；`402` 余额不足；`400` `MODEL_NOT_ALLOWED` 或 `INVALID_BODY`。

插件里不要 `fetch` 这一段，用 [bindModels](/docs/plugins/models)。
