快速接入
使用客户所属的 API 令牌调用 Stargate 下游接口。本文描述网关 main 分支的实际实现,不将后台管理接口、上游接口或尚未接通的路由当作可用能力。
- 先取得实际的网关根地址和 API 令牌,并完成该部署要求的客户认证。官网地址、控制台登录地址不等于模型调用地址。
- 先调用 GET /v1/models 获取当前令牌可见的模型 ID,再与服务方确认该模型支持的接口和参数。模型可见不代表所有能力都可调用。
- 示例中的 YOUR_*、task_EXAMPLE、模型和响应内容均为占位或结构示例,不是已上线模型、真实任务或调用结果。请替换后再执行。
- 以下命令使用 Bash / cURL 语法。STARGATE_BASE_URL 不带末尾斜杠,也不预先附加 /v1;若客户端会自动添加接口路径,请避免重复拼接 /v1。
- 只在可信服务端保存令牌;不要把真实令牌写进浏览器前端代码、公开仓库或截图。
export STARGATE_BASE_URL="https://YOUR_GATEWAY_HOST"
export STARGATE_API_KEY="YOUR_API_KEY"curl -sS "${STARGATE_BASE_URL}/v1/models" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"curl -sS "${STARGATE_BASE_URL}/v1/chat/completions" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_CHAT_MODEL_ID",
"messages": [
{
"role": "user",
"content": "你好,请用一句话介绍自己。"
}
],
"stream": false
}'认证方式与权限
本文列出的模型、任务和兼容账务接口使用 API 令牌鉴权,而不是控制台登录会话。推荐发送 Authorization: Bearer YOUR_API_KEY。
- 也接受 x-api-key 请求头,但仅在 Authorization 中没有取得令牌时使用。不要同时发送两套不同的凭据。
- 令牌必须有效、启用且未过期;客户状态、客户认证、成员状态、IP / 子网限制及可访问模型限制也会影响请求。
- 客户归属由令牌解析,不能靠在请求中传入客户 ID 切换。服务令牌归属客户;成员令牌还关联具体成员。
- 任务查询按客户隔离;成员令牌进一步限制为该成员的任务。知道 task_id 并不等于有权限读取。
- JSON 请求设置 Content-Type: application/json;音频文件上传使用 multipart/form-data,由 cURL 自动生成 boundary。
- 请求频率、并发、余额及可用模型取决于实际客户和路由配置。没有一个适用于所有客户的固定 QPS、重试次数或模型清单。
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json模型发现
模型列表受令牌 / 成员权限、分组和模型目录可见性影响。返回值不是全平台模型目录,也不包含完整的能力、价格或实时健康保证。
GET/v1/models列出可见模型
无请求体。返回 object: list 和 data 数组,另有 success、message 字段。
| 字段 | 类型 / 说明 |
|---|---|
data[].idstring | 调用时使用的模型 ID。 |
data[].object / owned_by / created / root / parent模型元数据 | 兼容元数据;不要把 owned_by 或 created 当成上游来源或模型上线时间的审计证据。 |
curl -sS "${STARGATE_BASE_URL}/v1/models" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"{
"success": true,
"message": "",
"object": "list",
"data": [
{
"id": "YOUR_CHAT_MODEL_ID",
"object": "model"
}
]
}GET/v1/models/:model查询单个可见模型
路径中的 :model 替换为模型 ID,返回单个模型对象。
- 本基线中,找不到模型时仍可能返回 HTTP 200,但响应体含 error.code: model_not_found。不能只判断 HTTP 状态码。
curl -sS "${STARGATE_BASE_URL}/v1/models/YOUR_MODEL_ID" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"文本与对话
Chat Completions、Messages 和 Responses 是不同协议,消息结构、工具调用和流式事件不能混用。可选字段能否生效取决于目标模型和适配器,不承诺所有厂商参数无损互通。
POST/v1/chat/completionsChat Completions
JSON 请求;model 和非空 messages 必填。普通响应使用 choices,流式响应使用 SSE。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
messagesarray · 必填 | 对话消息;常用元素为 { role: "user", content: "..." }。图片、工具消息等需要模型和适配器支持。 |
streamboolean · 可选 | 默认 false;true 时按 SSE 逐块读取,不能把整个响应当一个 JSON。 |
max_tokens / max_completion_tokensinteger · 可选 | 输出长度参数,支持范围由模型决定;不要将它们与 Responses 的 max_output_tokens 混用。 |
temperature / top_p / tools / tool_choice / response_format可选 | 按目标模型的能力使用,不是全模型通用能力保证。 |
- 常见非流式文本位于 choices[].message.content;工具调用可能没有普通文本。常见流式增量位于 choices[].delta。不要用流式分块数量计算 Token 用量。
curl -sS -N "${STARGATE_BASE_URL}/v1/chat/completions" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_CHAT_MODEL_ID",
"messages": [
{
"role": "user",
"content": "你好,请用一句话介绍自己。"
}
],
"stream": true
}'POST/v1/messagesMessages 协议
接收 Messages 格式。网关校验 model、非空 messages,以及大于 0 的 max_tokens。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
messagesarray · 必填 | 用户 / 助手消息,content 可为文本或协议内容块。 |
max_tokensinteger · 必填 | 必须大于 0。 |
system / stream / tools / thinking可选 | 顶层 system、流式开关和扩展能力按该协议及目标适配器处理。 |
- 非流式响应使用 content 内容块;流式采用该协议的事件,不是 Chat Completions 的 choices[].delta。
curl -sS "${STARGATE_BASE_URL}/v1/messages" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MESSAGES_MODEL_ID",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "你好"
}
]
}'POST/v1/responsesResponses 协议
接收 model、input 和 Responses 扩展字段。input 可为文本或输入项数组;响应读取 output,不应套用 Chat Completions 解析器。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
inputstring | array | 输入文本或协议输入项。 |
instructions / previous_response_id / tools可选 | 指令、续接上下文和工具字段;实际续接、存储和工具行为由上游及适配器决定。 |
stream / max_output_tokens / reasoning可选 | SSE 开关、输出长度和推理配置;部分适配器会转换或移除不支持的字段。 |
- 这里没有承诺 GET /v1/responses/:id 或 DELETE /v1/responses/:id;main 没有注册这些下游路由。
curl -sS "${STARGATE_BASE_URL}/v1/responses" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_RESPONSES_MODEL_ID",
"input": "你好,请简要介绍自己。",
"stream": false
}'POST/v1/responses/compactResponses 压缩
独立的 Responses 压缩入口,走 Responses 请求处理链;需要上游支持 compact,不是任意聊天模型的通用压缩服务。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
inputarray | 需要压缩的 Responses 上下文输入项。 |
- 按上游返回的压缩结果继续处理,不假定它返回聊天文本;此示例不启用 stream。
curl -sS "${STARGATE_BASE_URL}/v1/responses/compact" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_COMPACT_MODEL_ID",
"input": [
{
"role": "user",
"content": "需要保留的对话上下文"
}
]
}'POST/v1/completions传统文本补全
model 和 prompt 必填;这是传统补全协议,不是 messages 对话协议。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
promptstring | array | 要补全的提示内容;示例使用字符串。 |
stream / max_tokens可选 | 流式开关与输出限制,依模型支持情况使用。 |
- 响应通常从 choices[].text 读取;只能使用支持传统补全的模型。
curl -sS "${STARGATE_BASE_URL}/v1/completions" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_COMPLETION_MODEL_ID",
"prompt": "请续写:人工智能可以",
"max_tokens": 128
}'POST/v1/moderations内容审核兼容入口
已注册并走文本转发链,接收 model 和 input;它不代表平台保证对所有输入提供统一审核结果。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
inputstring | array | 待审核输入。 |
- 本基线仍经过 text_generation 能力 / 文本计费校验,需服务方确认配置及上游支持。显式传 model,避免鉴权与转发阶段不同默认模型造成歧义。响应按实际审核协议读取。
向量嵌入
向量接口有独立的请求校验和计费处理。输出维度、批量限制和编码形式由实际模型决定;重排序接口的当前限制见“兼容边界”。
POST/v1/embeddings生成向量
model 和 input 必填。兼容路径可从 :model 读取模型;推荐使用 /v1/embeddings 并在 JSON 中明确模型。
/v1/engines/:model/embeddings| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
inputstring | array · 必填 | 文本或模型支持的批量输入格式。 |
encoding_format / dimensions / user可选 | 编码格式、输出维度和用户标识,实际支持依模型而定。 |
- 按实际响应读取 data[].embedding、data[].index 和 usage,不假定所有向量模型维度相同。
curl -sS "${STARGATE_BASE_URL}/v1/embeddings" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_EMBEDDING_MODEL_ID",
"input": [
"知识库中的第一段文本",
"知识库中的第二段文本"
]
}'图像生成
标准图像生成与 DashScope 原生 / 异步图像接口分开提供。图片编辑和变体虽有路由,但本基线存在转发缺口,见“兼容边界”。
POST/v1/images/generations标准图像生成
使用 JSON 请求,同步返回图像响应;prompt 必填。不要把它当成返回 task_id 的异步任务接口。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
promptstring · 必填 | 图像描述。 |
n / sizeinteger / string · 可选 | 网关默认 n=1、size=1024x1024。数量和尺寸仍需满足具体模型约束。 |
quality / style / response_format / user可选 | 由模型和适配器支持;结果可能是 URL 或 Base64。 |
- 未传 model 时网关默认 dall-e-2,但这不代表该模型已对你的令牌开通,建议总是显式传入。
- 响应读取 data[].url 或 data[].b64_json;不要强制假定所有模型都返回公开 URL。图像尺寸、数量和定价配置不合法时请求会被拒绝。
curl -sS "${STARGATE_BASE_URL}/v1/images/generations" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_IMAGE_MODEL_ID",
"prompt": "一只在窗边晒太阳的猫",
"n": 1,
"size": "1024x1024"
}'音频接口
音频合成使用 JSON,转录 / 翻译使用文件表单。响应可能是 JSON、文本、字幕或二进制音频,不能统一调用 JSON 解析。
POST/v1/audio/speech语音合成
提供 model、input、voice;可传 speed 和 response_format。成功响应是音频内容,应保存为文件。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
inputstring | 待合成文本。main 使用 Go len(input) 校验上限 4096,即 UTF-8 字节数,不是 4096 个汉字。 |
voicestring | 使用目标模型实际支持的音色名称。 |
speed / response_format可选 | 速度与格式依模型支持;示例使用 mp3。 |
- 下载前检查 HTTP 状态和 Content-Type,避免将错误 JSON 当成音频文件。
curl -sS "${STARGATE_BASE_URL}/v1/audio/speech" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_TTS_MODEL_ID",
"input": "你好,欢迎使用。",
"voice": "YOUR_VOICE",
"response_format": "mp3"
}' \
--output speech.mp3POST/v1/audio/transcriptions语音转录
上传音频文件,返回识别内容。文件类型、大小与语言支持由目标模型决定。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
filefile · multipart | 本地音频文件。 |
response_formatstring · 可选 | 网关处理 json、text、srt、verbose_json、vtt;具体模型不一定全部支持。 |
- 不要手工添加不含 boundary 的 multipart Content-Type。省略 model 时默认 whisper-1,不表示已开通该模型。
curl -sS "${STARGATE_BASE_URL}/v1/audio/transcriptions" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-F "model=YOUR_TRANSCRIPTION_MODEL_ID" \
-F "file=@sample.wav" \
-F "response_format=json"POST/v1/audio/translations音频翻译
使用与转录相同的 multipart 文件上传方式,将路径改为 /v1/audio/translations,并选择支持音频翻译的模型。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
file / response_formatmultipart 表单 | 与转录接口相同;输出语言和格式取决于目标模型。 |
- 这不是任意语言互译或实时语音 WebSocket 接口。
视频异步任务
提交 → 保存 task_id → 查询状态 → 完成后下载。接受请求与生成成功是两个阶段;必须读取任务最终状态。
- 视频状态为 queued、in_progress、completed、failed、cancelled、expired;unknown 表示未识别状态,不是成功。
- 视频任务 ID 是网关返回的 task_...,不要替换为上游任务 ID。服务令牌按客户读取,成员令牌只读取该成员任务。
- 视频提交不自动执行跨渠道失败重试。若超时或返回恢复中信息,先核查已有任务,避免重复提交造成重复生成或扣费。
- 若响应 metadata.recovery_status 为 pending,请保留任务 ID 继续核查;不能将它当作生成完成。轮询应设置间隔与截止时间,不要无限高频请求。
POST/v1/videos提交视频生成
仅使用 JSON 请求。网关返回 HTTP 202 和 object: video,不直接返回视频文件。
| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
promptstring | 文本提示;某些支持媒体输入的模型可使用有效 metadata.content 代替,具体输入组合由适配器校验。 |
secondsstring | number · 可选 | 时长,网关接受字符串或数字并转换为内部时长字段;范围依模型。 |
size / input_referencestring · 可选 | 尺寸 / 分辨率与参考输入,语义和支持范围依目标模型。 |
metadataobject · 可选 | 模型特有参数和媒体内容;不是任意参数均被所有模型支持。 |
callback_urlstring · 可选 | 任务终态回调地址,需满足网关 URL 安全校验;回调细节见下一节。 |
- 模型可能还要求时长、比例或其他 metadata 字段,请按实际开通的模型补齐。不能把某一个视频模型的参数范围当成统一网关约束。
curl -sS "${STARGATE_BASE_URL}/v1/videos" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_VIDEO_MODEL_ID",
"prompt": "一只猫沿着窗台缓慢行走"
}'{
"id": "task_EXAMPLE",
"object": "video",
"model": "YOUR_VIDEO_MODEL_ID",
"status": "queued",
"progress": 0
}GET/v1/videos列出视频任务
返回 { object: "list", data: [...] }。只读取当前权限范围内的任务。
| 字段 | 类型 / 说明 |
|---|---|
limitquery · integer | 默认 20,范围 1–500。main 此接口没有实现 page、after、before 等游标参数。 |
curl -sS "${STARGATE_BASE_URL}/v1/videos?limit=20" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"GET/v1/videos/:id查询视频状态
读取 / 刷新任务,返回 id、object、model、status、progress;完成时可包含 result_url,失败时可包含 error。
- 仅 status=completed 表示生成完成。result_url 是网关内容地址,仍需鉴权;不可直接当作匿名公开链接。
curl -sS "${STARGATE_BASE_URL}/v1/videos/task_EXAMPLE" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"GET/v1/videos/:id/content下载视频内容
任务 completed 后代理输出二进制视频内容,支持转发 Range / If-Range 请求头。尚未完成返回 409 video_not_ready。
| 字段 | 类型 / 说明 |
|---|---|
indexquery · integer · 可选 | 多结果时使用,从 0 开始,默认 0;越界返回 404。 |
- 浏览器 video 标签无法直接附加 Bearer 请求头,业务端应自行设计受控的内容获取方式,不要把 API Key 放进 URL。下载时仍需检查错误状态和 Content-Type。
curl -sS "${STARGATE_BASE_URL}/v1/videos/task_EXAMPLE/content" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
--output video.mp4POST/v1/videos/:id/cancel取消视频任务
无请求体。对非终态任务调用上游取消能力;对已终态任务返回当前状态,不保证所有模型都支持中途取消。
curl -sS -X POST "${STARGATE_BASE_URL}/v1/videos/task_EXAMPLE/cancel" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"DELETE/v1/videos/:id删除视频任务
与取消不同,且要求上游支持删除。成功返回 id、object: video.deleted、deleted: true。
- queued:请求上游删除并转为取消;completed / failed / expired:上游删除成功后软删除本地任务;in_progress / cancelled:不支持删除,返回 409。实际操作还会复核上游状态。
- 删除任务不是删除账务或审计记录,也不应被理解为自动退款。
DashScope 图像接口
路径以 /dashscope 开头,不是 /v1/dashscope。以下原生格式与标准 /v1/images/generations 不同,需选用支持该协议的模型和适配器。
POST/dashscope/api/v1/services/aigc/multimodal-generation/generation多模态图像生成(同步)
接收 model、input.messages[].content 和 parameters,按原生图像协议处理并返回结果,不采用异步 task_id 查询流程。
/dashscope/multimodal-generation/generation| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
input.messages[].contentarray | 文本块 { text: "..." },需要时加入模型支持的图片内容块。 |
parametersobject · 可选 | 例如 n、size;尺寸和输入组合由模型约束。 |
- 读取原生响应 output(例如 output.choices 中的图片内容),不要强制套用标准图像 data[]。该入口不自动跨渠道重试。
curl -sS "${STARGATE_BASE_URL}/dashscope/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_DASHSCOPE_IMAGE_MODEL_ID",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"text": "一只在窗边晒太阳的猫"
}
]
}
]
},
"parameters": {
"n": 1
}
}'POST/dashscope/api/v1/services/aigc/image-generation/generation创建异步图像任务
model 和 input.messages 中的非空文本提示必填。返回 HTTP 200,output.task_id 是网关任务 ID,初始 output.task_status 为 PENDING。
/dashscope/image-generation/generation| 字段 | 类型 / 说明 |
|---|---|
modelstring | 填写当前令牌可见、且已开通相应能力的模型 ID;不是模型展示名称。 |
input.messages[].content[].textstring · 必需文本提示 | 网关会提取并合并文本;不要直接沿用其他接口的顶层 prompt。 |
parameters / callback_url可选 | 模型参数与终态回调地址。 |
- HTTP 200 仅表示提交响应成功,必须继续查询任务状态。此路径本身选择异步任务流程,不通过额外的异步请求头切换;网关不自动跨渠道重试。
curl -sS "${STARGATE_BASE_URL}/dashscope/api/v1/services/aigc/image-generation/generation" \
-H "Authorization: Bearer ${STARGATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_DASHSCOPE_IMAGE_MODEL_ID",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"text": "一只在窗边晒太阳的猫"
}
]
}
]
},
"parameters": {
"n": 1
}
}'{
"request_id": "task_EXAMPLE",
"output": {
"task_id": "task_EXAMPLE",
"task_status": "PENDING"
}
}GET/dashscope/api/v1/tasks/:id查询图像任务
读取 output.task_status:PENDING、RUNNING、SUCCEEDED、FAILED、CANCELED、UNKNOWN。只有 SUCCEEDED 表示生成成功。
/dashscope/tasks/:id- 完成后从 output.results[].url 或 output.choices[].message.content[].image 读取图片。失败信息可能在 output.code / output.message。查询接口错误也可能是顶层 code / message,不总是 error 对象。
- 此处的 CANCELED 与视频接口 cancelled 拼写不同。UNKNOWN 也用于无法映射的状态,不能作为成功处理。
curl -sS "${STARGATE_BASE_URL}/dashscope/api/v1/tasks/task_EXAMPLE" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"POST/dashscope/api/v1/tasks/:id/cancel取消图像任务
无请求体;返回当前任务的原生格式状态。实际能否取消取决于上游支持;已终态任务返回当前状态。
/dashscope/tasks/:id/cancelcurl -sS -X POST "${STARGATE_BASE_URL}/dashscope/api/v1/tasks/task_EXAMPLE/cancel" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"任务回调
视频和 DashScope 异步图像请求可带 callback_url。网关在任务终态后向该地址发送 JSON POST;回调不是逐帧 / 逐进度通知。建议始终保留查询接口作为核对方式。
- 接收方应返回 2xx。投递失败可能被重试,请按任务 ID 和终态做幂等处理,避免重复执行下游业务。
- 回调是网关自己的结构:id、object、model、status、progress,以及可选 result_url、result_urls、error。视频 object 为 video,图像为 image.task。
- 回调使用内部任务状态,终态为 completed、failed、cancelled、expired。图像回调的 completed 不等于查询响应中的字面值 SUCCEEDED,需分别解析。
- callback_url 必须是网关允许访问的 HTTP(S) 地址,受 URL / 地址安全校验限制。不要假定 localhost 或内网地址可作为回调。
- 仅在部署配置了回调签名密钥时,才带 X-Stargate-Timestamp 和 X-Stargate-Signature。签名为 sha256= 加 HMAC-SHA256 的十六进制摘要,待签名内容为毫秒时间戳 + "." + 原始请求体。
- 签名密钥不是 API Key,也不是请求参数。接收前应与服务方确认签名配置和验签方式,校验时间窗与重复投递;未配置签名时,不要仅凭公网回调内容认定任务成功,可再用鉴权查询核实。
{
"id": "task_EXAMPLE",
"object": "video",
"model": "YOUR_VIDEO_MODEL_ID",
"status": "completed",
"progress": 100,
"result_url": "/v1/videos/task_EXAMPLE/content"
}用量与计费
生成接口的 usage、客户累计用量和实际费用不是同一个量。文本可能采用上游 usage 或网关估算;图像、音频、视频还依赖各自的定价配置,不可统一按文本 Token 换算。
- 两个兼容账务查询都要求成员令牌,并且同时具有 wallet.read 和 usage.read_all 权限;服务令牌不允许查询,返回 403 subject_billing_read_denied。
- 统计范围是令牌所属客户,而不是当前单个令牌。main 的 usage 查询不读取 start_date / end_date,不能靠这些参数获取指定日期账单。
- 金额换算依赖部署配置 DisplayInCurrencyEnabled 和 QuotaPerUnit。字段名带 usd 不保证是美元金额;不能把 total_usage 当 Token 数。
- 本文不承诺不存在的项目 / 空间账单、按日周月导出或预算告警 API。实际费用以客户用量与结算记录为准。
GET/dashboard/billing/subscription查询兼容额度信息
返回 object: billing_subscription。soft_limit_usd、hard_limit_usd、system_hard_limit_usd 都由“客户钱包剩余额度 + 客户累计已用额度”换算而来,不是余额本身。
/v1/dashboard/billing/subscription| 字段 | 类型 / 说明 |
|---|---|
has_payment_methodboolean | 实现固定为 true,不能用它判断是否绑定了支付方式。 |
access_untilinteger | 直接取令牌过期时间;本项目令牌时间戳为毫秒,非正值归零,不应按常见秒时间戳直接解释。 |
- 部分内部查询错误返回 HTTP 200 + error 对象,仍需检查响应体。
curl -sS "${STARGATE_BASE_URL}/dashboard/billing/subscription" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"GET/dashboard/billing/usage查询客户累计用量
返回 { object: "list", total_usage: ... }。total_usage 是客户累计消耗按部署显示单位换算后乘以 100,不是原始 Token 数,也不是日期区间账单。
/v1/dashboard/billing/usage- 同样需要同时检查 HTTP 状态与响应体 error,且需具备客户认证和账务读取权限。
curl -sS "${STARGATE_BASE_URL}/dashboard/billing/usage" \
-H "Authorization: Bearer ${STARGATE_API_KEY}"错误与重试
先看 HTTP 状态,再看响应体和任务终态。同步调用、SSE、二进制下载、视频任务与 DashScope 任务分别解析,不存在一种覆盖所有接口的统一响应格式。
- 网关会生成 x-request-id 响应头,部分错误消息还会附带请求 ID。提交问题时不要提供完整 API Key。
- 流式连接中断并不等于上游未执行;客户端应设置超时与有界重试,不能承诺重试不会产生额外调用。
- DashScope 查询 / 取消的错误可能使用顶层 code、message;任务本身失败也可能仍是 HTTP 200,必须读取任务状态。
{
"error": {
"message": "错误说明",
"type": "invalid_request_error",
"code": "model_not_found"
}
}| 状态 | 含义 | 处理建议 |
|---|---|---|
| 400 | 请求格式、参数、模型能力或计费配置不匹配 | 检查 JSON / multipart、必填参数及 model_capability_unsupported 等错误码。 |
| 401 | 未提供、无效、禁用或过期的令牌 | 检查实际发送的鉴权头;不要重试同一个失效凭据。 |
| 403 | 客户认证、IP、成员 / 账务权限或模型调用被禁用 | 例如 subject_verification_required、subject_billing_read_denied、model_call_disabled;修正权限 / 状态。 |
| 404 | 模型不可用、任务不可见或路径错误 | 检查模型 ID、任务所属客户 / 成员和接口路径。模型详情另有 200 + error 的兼容行为。 |
| 409 | 任务未完成或当前状态不允许操作 | 例如 video_not_ready、task_delete_not_supported;读取任务状态后再决定。 |
| 429 | 频率、并发或路由排队限制 | 降低并发,设置有上限的退避;不假定总会有 Retry-After 请求头。 |
| 501 | 明确未实现的兼容接口 | api_not_implemented;不要通过重试尝试启用功能。 |
| 5xx | 上游、转发、存储或网关暂时故障 | 保留 x-request-id、时间和脱敏请求。异步提交结果不明时先核查任务,避免重复生成。 |
兼容边界
路由存在不等于能力已接通。以下结论以本页标注的 main 提交为准;不将开发分支、历史说明或上游原厂的完整 API 列表作为当前服务承诺。
已注册但存在转发缺口
/v1/rerank已注册,但 main 的 Rerank 转发分支为空,没有调用重排序处理器。不能视为已完成的可用重排序 API。
/v1/images/edits已注册,但公共转发分派没有进入图片编辑处理器,而落入文本 JSON 处理链;不能按标准 multipart 图片编辑接口接入。
/v1/images/variations与图片编辑相同,公共转发分派未接通图片变体处理器;本文不提供声称可运行的成功示例。
明确未实现:501
以下路由通过鉴权后返回 api_not_implemented。文件管理未实现,不等于音频接口不能上传文件;两者是不同接口。
旧版文本编辑 / 模型删除 2 条路由
POST /v1/editsDELETE /v1/models/:model
Files 文件管理 5 条路由
GET /v1/filesPOST /v1/filesDELETE /v1/files/:idGET /v1/files/:idGET /v1/files/:id/content
Fine-tuning 微调 5 条路由
POST /v1/fine_tuning/jobsGET /v1/fine_tuning/jobsGET /v1/fine_tuning/jobs/:idPOST /v1/fine_tuning/jobs/:id/cancelGET /v1/fine_tuning/jobs/:id/events
Assistants 助手与文件 9 条路由
POST /v1/assistantsGET /v1/assistants/:idPOST /v1/assistants/:idDELETE /v1/assistants/:idGET /v1/assistantsPOST /v1/assistants/:id/filesGET /v1/assistants/:id/files/:fileIdDELETE /v1/assistants/:id/files/:fileIdGET /v1/assistants/:id/files
Threads / Messages / Runs 17 条路由
POST /v1/threadsGET /v1/threads/:idPOST /v1/threads/:idDELETE /v1/threads/:idPOST /v1/threads/:id/messagesGET /v1/threads/:id/messages/:messageIdPOST /v1/threads/:id/messages/:messageIdGET /v1/threads/:id/messages/:messageId/files/:filesIdGET /v1/threads/:id/messages/:messageId/filesPOST /v1/threads/:id/runsGET /v1/threads/:id/runs/:runsIdPOST /v1/threads/:id/runs/:runsIdGET /v1/threads/:id/runsPOST /v1/threads/:id/runs/:runsId/submit_tool_outputsPOST /v1/threads/:id/runs/:runsId/cancelGET /v1/threads/:id/runs/:runsId/steps/:stepIdGET /v1/threads/:id/runs/:runsId/steps
本基线没有注册的常见路径
/v1/contents/generations/tasks/volces/…/dawoai/volces/…/v1/dashscope/…GET /v1/responses/:idDELETE /v1/responses/:id/v1/realtime
不要将上游厂商地址、历史 Volces 接口说明或控制台 /api/… 管理路由直接用作下游模型 API。
常见问题
是否需要分别对接每个模型厂商?
可以通过网关统一鉴权和地址接入,但仍需选择对应协议。Chat Completions、Messages、Responses、DashScope 和异步任务并不是相同的请求 / 响应格式。
为什么模型出现在列表里却调用失败?
目录可见性、调用开关、模型能力、客户权限、余额、路由可用性和上游状态分别校验。GET /v1/models 不会替你完成一次真实模型调用。
能否在请求中指定备用供应商和统一重试策略?
普通下游调用按 model 及客户配置进行路由,本文没有提供客户端任意配置后台路由的 API。视频与 DashScope 图像提交在 main 中不会自动跨渠道重试。
为什么账务接口的数值与我理解的 Token 数不同?
它返回客户级累计额度的兼容换算值,而不是单个令牌的原始 Token 数。还需结合显示单位、QuotaPerUnit 和实际定价理解。
文档是否表示所有示例已在生产环境实测?
不是。本页依据标注版本的源代码整理;示例是请求模板与结构示例。具体域名、模型开通、价格和运行可用性仍由实际部署决定。
下载中心
获取模型接入所需的操作指引与接口参考文件,下载后即可开始配置和联调。