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

# Responses

> OpenAI Responses API 端点（无状态）。Codex CLI 等新一代编码智能体使用的协议。

## 端点

```
POST https://vibetoken.cn/v1/responses
```

以**无状态**模式兼容 OpenAI 的 [Responses API](https://platform.openai.com/docs/api-reference/responses)。目录中的所有对话模型都可通过此端点调用，计费、配额与日志和[对话补全](/api-reference/chat-completions)完全一致。

这个端点存在的主要原因：新版本的 **Codex CLI** 只支持 Responses 协议（`wire_api = "chat"` 已被移除），有了它，Codex 以及其他只讲 Responses 协议的客户端就能把 VibeToken 用作模型服务商。

## 在 Codex 中使用 VibeToken

在 `~/.codex/config.toml` 中添加 provider：

```toml theme={null}
[model_providers.routerbase]
name = "VibeToken"
base_url = "https://vibetoken.cn/v1"
env_key = "VIBETOKEN_API_KEY"
wire_api = "responses"

# 设为默认
model_provider = "routerbase"
model = "deepseek/deepseek-v4"
```

然后导出 key，照常使用 Codex：

```bash theme={null}
export VIBETOKEN_API_KEY=sk-rb-xxxxxxxxxxxx
codex "解释一下这个仓库"
```

Codex 对自定义 provider 的默认无状态行为（每轮重发完整历史、`store: false`）正是此端点期望的方式——无需额外配置。

## 请求头

| Header          | Value                       |
| --------------- | --------------------------- |
| `Authorization` | `Bearer sk-rb-xxxxxxxxxxxx` |
| `Content-Type`  | `application/json`          |

## 请求体

<ParamField body="model" type="string" required>
  模型 ID（仅限对话模型）。见[模型总览](/overview)或实时的[模型 API](/api-reference/models)。
</ParamField>

<ParamField body="input" type="string | array" required>
  纯字符串（视为单条 user 消息）或输入项数组。支持的项类型：`message`（角色为 `user`、`assistant`、`system`、`developer`——`developer` 映射为 `system`）、`function_call`、`function_call_output`、`reasoning`（接受但跳过）。消息内容可以是字符串或类型化片段（`input_text`、`output_text`、`input_image`）。
</ParamField>

<ParamField body="instructions" type="string">
  系统级指令，会作为 system 消息置于最前。
</ParamField>

<ParamField body="max_output_tokens" type="integer">
  生成 token 的上限。
</ParamField>

<ParamField body="temperature" type="number">
  采样温度，0–2。
</ParamField>

<ParamField body="top_p" type="number">
  核采样概率，0–1。
</ParamField>

<ParamField body="stream" type="boolean">
  设为 `true` 时，响应为 `response.*` 事件的 Server-Sent Events 流：`response.created` → `response.output_item.added` → `response.output_text.delta` … → `response.output_item.done` → `response.completed`。函数调用项在 `response.output_item.done` 中完整给出。
</ParamField>

<ParamField body="tools" type="array">
  扁平 Responses 格式的函数工具：`{"type": "function", "name": "...", "description": "...", "parameters": {...}}`。服务端工具类型（`web_search` 等）会被接受并静默丢弃——VibeToken 不托管它们，模型只是拿不到该工具。
</ParamField>

<ParamField body="tool_choice" type="string | object">
  `"auto"`、`"none"`、`"required"`，或 `{"type": "function", "name": "..."}`。
</ParamField>

## 无状态设计

**不支持** `previous_response_id` 和服务端会话存储——携带 `previous_response_id` 的请求会返回 400 并附带说明。请每轮发送完整的输入项历史（客户端若发送 `store: false` 会被接受并忽略）。这正是 Codex 对自定义 provider 的默认模式，也是大多数 Responses SDK 的常见用法。

## 示例

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://vibetoken.cn/v1/responses \
    -H "Authorization: Bearer sk-rb-xxxxxxxxxxxx" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "deepseek/deepseek-v4",
      "input": "2+2 等于几？"
    }'
  ```

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

  client = OpenAI(
      api_key="sk-rb-xxxxxxxxxxxx",
      base_url="https://vibetoken.cn/v1",
  )

  resp = client.responses.create(
      model="deepseek/deepseek-v4",
      input="2+2 等于几？",
  )
  print(resp.output_text)
  ```

  ```javascript JavaScript theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: "sk-rb-xxxxxxxxxxxx",
    baseURL: "https://vibetoken.cn/v1",
  });

  const resp = await client.responses.create({
    model: "deepseek/deepseek-v4",
    input: "2+2 等于几？",
  });
  console.log(resp.output_text);
  ```
</CodeGroup>

## 响应

```json theme={null}
{
  "id": "resp_...",
  "object": "response",
  "created_at": 1755600000,
  "status": "completed",
  "model": "deepseek/deepseek-v4",
  "output": [
    {
      "type": "message",
      "id": "msg_...",
      "status": "completed",
      "role": "assistant",
      "content": [{ "type": "output_text", "text": "4", "annotations": [] }]
    }
  ],
  "parallel_tool_calls": true,
  "usage": {
    "input_tokens": 12,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 1,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 13
  }
}
```

当模型调用工具时，`output` 数组会包含 `function_call` 项（`call_id`、`name`、`arguments`）；请在下一次请求的 `input` 中以 `function_call_output` 项返回每个结果。

## 计费

与[对话补全](/api-reference/chat-completions)完全相同：请求走同一条管线，按相同的 token 价格计量，并以相同方式出现在你的生成日志中。
