通过统一 API 调用文本对话模型,支持标准 Chat Completions、流式响应、结构化输出、工具调用和服务商路由策略。
https://api.tokensapi.cn/v1POST /chat/completions请求地址固定,模型 ID 和可用参数以模型详情页当前展示为准。
${base_url}/chat/completions| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
Authorization | string | 是 | — | Bearer API Key。完整 API Key 仅在创建成功后展示一次。 |
Content-Type | string | 是 | application/json | 请求体使用 JSON 格式。 |
X-Session-Id | string | 否 | — | 可选 Session ID;仅在请求未提供顶层 session_id 或 extra_body.session_id 时使用。 可选值 / 约束:最长 256 个字符。 |
X-Client-Request-Id | string | 否 | — | 可选调用方关联 ID;提供时响应会回显此值。 |
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
model | string | 是 | — | 模型广场中的真实 model ID。不同模型支持的参数和能力以模型详情页当前展示为准。 可选值 / 约束:从模型列表或模型详情页获取。 |
messages | array | 是 | — | 按顺序排列的对话消息。assistant 携带 tool_calls 时 content 可为 null。 可选值 / 约束:role:system、developer、user、assistant、tool;兼容旧 function 消息。 |
messages[].name | string | 否 | — | 消息发送方名称。 可选值 / 约束:模型支持时可用于区分同角色消息。 |
messages[].content | string | array | null | 否 | — | 条件必填:普通消息使用字符串;多模态模型使用内容数组。assistant 仅回传 tool_calls 时可以为 null。 可选值 / 约束:内容项 type:text、image_url、video_url、input_audio、file。 |
messages[].content[].text | string | 否 | — | 文本内容项的正文。 可选值 / 约束:当 type=text 时使用。 |
messages[].content[].image_url | object | 否 | — | 图片资源对象,使用可访问的图片 URL。 可选值 / 约束:当 type=image_url 时使用;字段:url、detail。 |
messages[].content[].image_url.detail | string | 否 | — | 图片细节等级。 可选值 / 约束:当 type=image_url 时使用。 |
messages[].content[].video_url | object | 否 | — | 视频资源对象,使用可访问的视频 URL。 可选值 / 约束:当 type=video_url 时使用;字段:url。 |
messages[].content[].input_audio | object | 否 | — | 输入音频数据和格式。 可选值 / 约束:当 type=input_audio 时使用;字段:data、format。 |
messages[].content[].file | object | 否 | — | 输入文件对象。 可选值 / 约束:当 type=file 时使用;字段:file_data、file_id、filename。 |
messages[].content[].file.file_data | string | 否 | — | 文件数据。 可选值 / 约束:当 type=file 时按模型支持的编码发送。 |
messages[].content[].file.file_id | string | 否 | — | 已上传文件的标识。 可选值 / 约束:当 type=file 时使用。 |
messages[].content[].file.filename | string | 否 | — | 文件名称。 可选值 / 约束:当 type=file 时使用。 |
messages[].content[].prompt_cache_breakpoint | object | 否 | — | 内容项的提示缓存断点。 可选值 / 约束:模型支持时使用。 |
messages[].tool_call_id | string | 否 | — | role=tool 时关联要回传结果的工具调用 ID。 |
messages[].tool_calls | array | 否 | — | assistant 发起的工具调用;应用负责执行并在后续 tool 消息中回传结果。 |
messages[].audio | object | 否 | — | 消息中的音频信息。 可选值 / 约束:模型支持时使用。 |
messages[].refusal | string | 否 | — | 模型拒绝内容。 可选值 / 约束:模型支持时返回或发送。 |
messages[].reasoning_content | string | 否 | — | 消息中的推理内容。 可选值 / 约束:模型支持时使用。 |
messages[].reasoning | object | string | 否 | — | 消息中的推理配置或内容。 可选值 / 约束:模型支持时使用。 |
messages[].reasoning_details | array | 否 | — | 消息中的推理明细。 可选值 / 约束:模型支持时使用。 |
messages[].function_call | object | 否 | — | 已弃用的旧版函数调用。 可选值 / 约束:Deprecated;新接入优先使用 tool_calls。 |
functions | array | 否 | — | 已弃用的旧版函数定义。 可选值 / 约束:Deprecated;新接入优先使用 tools。 |
max_completion_tokens | integer | 否 | — | 限制生成预算,包含可见输出与 reasoning tokens。 可选值 / 约束:根据所选模型使用 max_completion_tokens 或 max_tokens。 |
max_tokens | integer | 否 | — | 兼容旧模型的最大生成 Token 数量。 可选值 / 约束:根据所选模型使用 max_completion_tokens 或 max_tokens。 |
temperature / top_p | float | 否 | — | 采样参数。取值范围和是否支持由模型决定。 可选值 / 约束:通常只调整其中一个。 |
presence_penalty / frequency_penalty | float | 否 | — | 调整重复主题或 token 的可能性。 可选值 / 约束:是否支持和取值范围以模型为准。 |
logit_bias | object | 否 | — | 调整指定 token 的采样偏好。 可选值 / 约束:模型支持时使用。 |
n / stop / seed | integer | string | string[] | 否 | — | 候选数、停止序列和可重复性控制。 可选值 / 约束:stop 最多 4 个;只在模型支持时发送。 |
stream | boolean | 否 | false | 是否通过 SSE 流式返回增量内容。开启后客户端需要逐个处理 chunk,并处理断开和重试。 可选值 / 约束:true / false。 |
stream_options | object | 否 | — | 流式响应的附加选项。 可选值 / 约束:include_usage:boolean,默认 true。 |
logprobs / top_logprobs | boolean | integer | 否 | — | 模型支持时返回 token 对数概率。 |
modalities | string[] | 否 | ["text"] | 期望输出类型。需要音频时同时传 ["text", "audio"] 与 audio 配置。 可选值 / 约束:具体能力以模型详情页为准。 |
audio | object | 否 | — | 音频输出配置。 可选值 / 约束:voice、format;仅在 modalities 包含 audio 时使用。 |
response_format | object | 否 | — | 约束模型返回格式。 可选值 / 约束:type:text、json_object、json_schema;仅部分模型支持。 |
moderation | object | string | 否 | — | 模型支持时的内容审核控制。 |
tools / tool_choice / parallel_tool_calls | array | string | object | 否 | — | 工具定义、选择策略与并行工具调用控制。 可选值 / 约束:应用必须校验参数、执行权限和工具结果。 |
reasoning / reasoning_effort / prediction / verbosity | object | string | 否 | — | 推理和输出控制字段。 可选值 / 约束:仅在模型支持时发送。 |
metadata | object | 否 | — | 请求元数据。 |
cache_control | object | 否 | — | 提示缓存控制。 |
store | boolean | 否 | — | 是否按协议存储响应。 |
safety_identifier | string | 否 | — | 安全标识符。 |
user | string | 否 | — | 终端用户标识。 |
session_id | string | 否 | — | 顶层 Session ID。 可选值 / 约束:优先级高于 extra_body.session_id 与 X-Session-Id;最长 256 个字符。 |
prompt_cache_key | string | 否 | — | 提示缓存键。 |
prompt_cache_options | object | 否 | — | 提示缓存选项。 |
prompt_cache_retention | string | 否 | — | 已弃用的提示缓存保留策略。 可选值 / 约束:Deprecated。 |
service_tier | string | 否 | — | 模型支持时的服务等级。 |
thinking | object | string | 否 | — | 扩展推理配置。 可选值 / 约束:模型支持时使用。 |
web_search_options | object | 否 | — | 模型支持时的 Web Search 配置。 |
extra_body | object | 否 | — | 统一 API 的扩展字段。 可选值 / 约束:只公开 provider 与 session_id;路由必须放在 extra_body.provider。 |
不传 provider 时使用平台默认策略;需要明确控制成本、延迟或回退时,再传入 extra_body.provider。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
only | string[] | 否 | — | 服务商白名单,仅在指定集合内选择服务商。 可选值 / 约束:服务商名称区分大小写。 |
order | string[] | 否 | — | 在筛选和排序后应用指定服务商的优先顺序。 可选值 / 约束:处理顺序:ignore → ranges → only → sort → order。 |
sort | string | string[] | 否 | — | 服务商排序策略;支持多个关键字,数组前面的字段优先级更高。 可选值 / 约束:input_price、output_price、throughput、latency、input_length。 |
input_price_range | [number, number] | 否 | — | 按基础 USD 输入单价筛选服务商。 可选值 / 约束:单位:USD / 百万 tokens;共享的 price.group_ratio 不改变服务商排序。 |
output_price_range | [number, number] | 否 | — | 按基础 USD 输出单价筛选服务商。 可选值 / 约束:单位:USD / 百万 tokens;共享的 price.group_ratio 不改变服务商排序。 |
throughput_range | [number, number] | 否 | — | 限制实时吞吐范围,低于或高于范围的服务商将被排除。 可选值 / 约束:单位:tokens/s。 |
latency_range | [number, number] | 否 | — | 限制实时延迟范围,按平台采集的延迟数据筛选。 可选值 / 约束:单位:秒。 |
input_length_range | [number, number] | 否 | — | 限制服务商可接受的最大输入长度范围。 可选值 / 约束:单位:Token。 |
ignore | string[] | 否 | — | 服务商黑名单,从候选通道中排除。 可选值 / 约束:服务商名称区分大小写。 |
allow_fallbacks | boolean | 否 | — | 非空 only 时默认 false;否则默认 true。 可选值 / 约束:true 时可放宽 only、range、sort、order;不会放宽 ignore、模型访问权限、端点能力或通道可用性。 |
平台将不同服务商的文本响应归一到兼容 Chat Completions 的结构。provider 仅是非流式 JSON 中可能出现的可选字段。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
id | string | 否 | — | Chat 协议响应 ID;其含义遵循协议,不替代网关关联响应头。 |
object | string | 否 | — | 响应对象类型,兼容 Chat Completions 结构。 可选值 / 约束:通常为 chat.completion;流式 chunk 类型以实际响应为准。 |
created | integer | 否 | — | 响应创建时间的 Unix 时间戳。 |
model | string | 否 | — | 协议响应中的模型标识。 可选值 / 约束:不承诺始终代表真实上游模型。 |
choices | array | 否 | — | 模型输出候选列表;非流式响应读取 message,流式响应读取 delta。 可选值 / 约束:choices[].message.content 或 choices[].delta.content。 |
choices[].finish_reason | string | 否 | — | 本次生成结束原因。 可选值 / 约束:stop、length、tool_calls 等,具体以模型响应为准。 |
usage.prompt_tokens | integer | 否 | — | 输入消息消耗的 Token 数量。 |
usage.completion_tokens | integer | 否 | — | 模型输出消耗的 Token 数量。 |
usage.total_tokens | integer | 否 | — | 输入与输出 Token 的合计。 |
provider | string | 否 | — | 实际承载请求的服务商通道信息。 可选值 / 约束:仅非流式 JSON 可能出现;不承诺所有 SSE、文本或二进制响应包含该字段。 |
choices[].message.reasoning_content | string | null | 否 | — | 非流式响应中的思考过程;仅支持 Reasoning 的模型可能返回。 可选值 / 约束:不支持、未启用或模型未返回思考过程时,该字段可能缺失或为 null。 |
choices[].delta.reasoning_content | string | null | 否 | — | 流式响应 chunk 中的思考过程增量;客户端应按 chunk 顺序单独拼接。 可选值 / 约束:最终答案仍从 choices[].delta.content 读取。 |
usage.completion_tokens_details.reasoning_tokens | integer | null | 否 | — | 模型返回用量明细时,表示思考过程消耗的 Token 数量。 可选值 / 约束:不支持用量明细的模型或服务商可能不返回该字段。 |
以下字段位于 HTTP 响应 Header,不属于 Chat JSON 或 SSE chunk body。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
X-Client-Request-Id | string | 否 | — | 调用方提供时,响应回显该值;未提供时不自动生成。 |
X-Upstream-Request-Id | string | 否 | — | 通常用于网关请求追踪,不是 provider 的原始 request ID。 |
适合短文本和需要一次性拿到完整结果的请求,直接读取 choices 中的 message.content。
设置 stream 为 true 后通过 SSE 返回增量 chunk。正常 OpenAI Chat 流在协议终止事件后以 data: [DONE] 结束;usage 可能出现在空 choices 的 chunk。按 choice 与 tool index 聚合增量,处理流内 error;异常断流时不保证收到终止事件或 data: [DONE]。
非 2xx 响应使用兼容 OpenAI 的 error 对象。HTTP 400 / invalid_request 表示参数校验失败;HTTP 402 表示可用余额或配额不足;HTTP 429 表示限流;硬性候选条件最终无通道时返回 HTTP 503 / no_available_provider。客户端应同时检查 HTTP 状态与 error.code。
{
"error": {
"message": "<HUMAN_READABLE_MESSAGE>",
"type": "<ERROR_TYPE>",
"param": null,
"code": "no_available_provider"
}
}以下示例使用占位符 <MODEL_ID>,请替换为模型广场或模型详情页中的真实模型 ID。
curl https://api.tokensapi.cn/v1/chat/completions \
-H "Authorization: Bearer $TOKEN_MARKET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<MODEL_ID>",
"messages": [{
"role": "user",
"content": "Please introduce the unified API in one sentence."
}],
"stream": false
}'把流式输出交给前端体验,把路由控制保留在服务端配置或受控请求参数中。
curl https://api.tokensapi.cn/v1/chat/completions \
-H "Authorization: Bearer $TOKEN_MARKET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<MODEL_ID>",
"messages": [{"role": "user", "content": "Hello"}],
"stream": true,
"extra_body": {
"provider": {
"sort": ["latency", "output_price"],
"allow_fallbacks": true
}
}
}'