# 产品使用说明
# 目录
# 1.1 API接入
欢迎使用星辰 MaaS 平台模型服务。为便于您快速调用,以下为您提供接口调用地址与参考示例。
接口地址
POSTChat https://maas-api.cn-huabei-1.xf-yun.com/v2/chat/completions (opens new window)POSTResponses https://maas-api.cn-huabei-1.xf-yun.com/v1/responses (opens new window)POSTAnthropic https://maas-api.cn-huabei-1.xf-yun.com/anthropic/v1/messages (opens new window)
认证信息
- API Key: 点击 API调用 (opens new window) / API管理 (opens new window) 界面获取,示例:
ak-f30b1********fc84b82e86a - Model ID: 点击 API调用 (opens new window) 获取,示例:
spark-x2.5
下面以 Chat Completions 为例完成一次最小调用,便于快速验证接入是否成功;如需流式输出,将 stream 设置为 true。
CURL
curl https://maas-api.cn-huabei-1.xf-yun.com/v2/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SPARK_API_PASSWORD" \
-d '{
"model": "spark-x2.5",
"messages": [
{"role": "user", "content": "你好。"}
],
"stream": false
}'
Python
from openai import OpenAI
client = OpenAI(
api_key="<你的 APIPassword>",
base_url="https://maas-api.cn-huabei-1.xf-yun.com/v2",
)
response = client.chat.completions.create(
model="spark-x2.5",
messages=[{"role": "user", "content": "你好。"}],
stream=False,
)
print(response.choices[0].message.content)
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body := map[string]any{
"model": "spark-x2.5",
"messages": []map[string]string{
{"role": "user", "content": "你好。"},
},
"stream": false,
}
data, err := json.Marshal(body)
if err != nil {
panic(err)
}
req, err := http.NewRequest(
http.MethodPost,
"https://maas-api.cn-huabei-1.xf-yun.com/v2/chat/completions",
bytes.NewReader(data),
)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer <你的 APIPassword>")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(result))
}
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.SPARK_API_PASSWORD,
baseURL: "https://maas-api.cn-huabei-1.xf-yun.com/v2",
});
const response = await client.chat.completions.create({
model: "spark-x2.5",
messages: [{ role: "user", content: "你好。" }],
stream: false,
});
console.log(response.choices[0].message.content)
# 1.2 错误码速查
接口调用失败时,可结合 HTTP Code、Error Code、原因和解决办法定位问题。
| HTTP Code | Error Code | 原因 | 解决办法 |
|---|---|---|---|
| 400 | 10005 | 输入格式不正确 | 根据提示修改请求,若问题仍存在,请联系技术支持 |
| 400 | 10013 | 输入内容包含敏感内容 | 请规整输入 |
| 400 | 10014 | 输出内容包含敏感内容 | 请规整输入 |
| 400 | 10163 | 部分参数不支持 | 根据提示修改请求,若问题仍存在,请联系技术支持 |
| 400 | 10224 | 序列过长 | 调整输入大小 |
| 400 | 10404 | 未使用正确的 model_id | 请查阅文档说明或者联系技术支持 |
| 400 | 10305 | 输入格式不正确 | 根据提示修改请求,若问题仍存在,请联系技术支持 |
| 400 | 10313 | 输入内容包含敏感内容 | 请规整输入 |
| 400 | 10314 | 输出内容包含敏感内容 | 请规整输入 |
| 400 | 10042 | 服务器内部错误 | 请稍后重试 |
| 401 | - | 未使用正确的 APIKEY | 请检查 APIKEY 是否正确;若无 APIKEY,则先创建 |
| 403 | 11200 | AppID 没有对应授权 | 参考API接入文档,开通授权 |
| 403 | 11221 | 使用套餐不允许的模型 | 请使用套餐内的模型;若已购买,请稍后 2-3 分钟再请求 |
| 429 | 11201 | 当日使用量达到上限 | 请控制请求速率 |
| 429 | 11202 | QPS 超限 | 请控制请求速率 |
| 429 | 11203 | 并发路数或者 TPM 超限 | 请控制请求速率 |
| 429 | 11210 | TPM 超限 | 请控制请求速率 |
| 500 | 10020 | 内部工具报错 | 请联系技术支持 |
| 500 | 10041 | 服务内部错误 | 请联系技术支持 |
| 500 | 10011 | 服务内部错误 | 请联系技术支持 |
| 500 | 10012 | 引擎服务内部错误 | 请联系技术支持 |
| 500 | 10912 | 引擎服务内部错误 | 请联系技术支持 |
| 500 | 10222 | 服务内部错误 | 请联系技术支持 |
| 500 | 10223 | 服务内部错误 | 请联系技术支持 |
| 500 | 10051 | 与后端引擎连接超时 | 请减少路数请求或者等待后重试 |
| 503 | 10110 | 引擎并发路数不足 | 请减少路数请求或者等待后重试 |
| 503 | 10010 | 引擎排队较多 | 请等待后重试 |
| 503 | 10310 | 引擎并发路数不足 | 请减少路数请求或者等待后重试 |
# 1.3 速率限制
# 1 限制维度
为保障平台稳定性和公平性,星辰 MaaS 对 API 调用实行速率限制。本文说明限制规则、错误码、响应头以及触发限流后的处理建议。
星辰 MaaS 采用 双重限流 机制,按维度独立计算、互不抵扣:
| 维度 | 含义 | 计算口径 |
|---|---|---|
| 并发请求数(Concurrency) | 同一时刻正在处理中(已发送未返回)的请求数量上限 | 按API Key+ 模型分组计算,流式请求在流结束前持续占用并发槽 |
| TPM(Tokens Per Minute) | 每分钟内请求消耗的 Token 总量上限 | 按API Key+ 模型分组计算,统计口径为 输入 token + 输出 token |
两个维度任一触顶即触发限流。流式输出按最终实际产出的 token 计入 TPM,请求结束后补扣。
# 2 模型默认额度与额度升降
每个API Key开通模型时,默认并发20、TPM 100w,apikey+模型独立限流,不挤占
申请提升额度:登录控制台 → 【在线咨询】 → 说明模型、期望并发/TPM、业务场景说明 → 平台技术支持人员会与您联系。
# 3 如何合理应对速率限制
我们建议开发者在系统设计中提前考虑以下策略
- 控制并发与请求频率
使用请求队列或并发池
避免瞬时“洪峰式”请求
避免固定间隔的高频重试
- 异步请求或批处理 API
- 非实时场景可通过批处理方式或异步请求降低并发压力(见批量推理部分)
# 4 常见问题
Q:429 等限流报错是否计费?
触发 429 限流报错的请求平台未实际处理,不计费;但 503 过载场景下若已部分处理,按实际消耗 token 计费。
Q:TPM 是按账户还是按 API Key 统计?
默认按 API Key + 模型分档统计。企业级客户可申请按 API Key / 项目维度拆分额度,见控制台「子账号配额」。
Q:流式请求的 token 如何计入 TPM?
按请求最终实际产出的总 token(输入 + 输出)在请求结束时一次性补扣,过程中不占用 TPM 槽位,但持续占用并发槽位直至流结束。
Q:不同模型是否共享额度?
不共享。各模型分档独立计算并发与 TPM,跨模型调用互不影响。