返回首页

开发者文档

ScalingTensor API 文档

使用一个 API 密钥调用对话模型和异步媒体生成模型。本文档与当前 ApiChatController、ApiMediaController 接口保持一致。

查看模型市场

01

发起第一次对话

从模型市场复制一个 chat 类型的模型标识,然后发送下面的请求。接口同步返回模型文本、Token 用量和实际费用。

cURL
curl -X POST https://restapi.scalingtensor.com/api/chat/completion \
  -H "Content-Type: application/json" \
  -H "apiKey: YOUR_API_KEY" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

02

基础约定

请求地址

生产环境的 API 根地址如下。所有请求与响应均使用 JSON,媒体生成接口目前也只接受 JSON URL,不支持二进制文件上传。

BASE URL
https://restapi.scalingtensor.com

身份验证

除模型列表外,调用对话和媒体接口时必须通过 apiKey 请求头传入控制台创建的密钥。请勿使用 Authorization 或将密钥暴露在浏览器代码中。

HEADERS
Content-Type: application/json
apiKey: YOUR_API_KEY

统一响应

所有接口均返回统一外层结构。只有 code 为 0 时表示业务请求成功;HTTP 请求成功并不等同于业务成功。time 和 Long 类型标识可能以字符串形式返回。

JSON
{
  "code": 0,
  "data": { ... },
  "msg": "成功",
  "time": "1788483942311",
  "requestId": "trace-id",
  "success": true
}

03

API Reference

POST/api/chat/completion

创建对话补全

对话接口是同步接口。messages 会原样交给当前模型适配器;当前控制器只接受 model 和 messages 两个顶层字段。

字段类型必填说明
modelstring已启用 chat 模型的 slug
messagesobject[]消息数组;通常每项包含 role 和 content
cURL
curl -X POST https://restapi.scalingtensor.com/api/chat/completion \
  -H "Content-Type: application/json" \
  -H "apiKey: YOUR_API_KEY" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

响应 data

字段类型说明
contentstring模型生成的文本
tokensIninteger实际输入 Token 数
tokensOutinteger实际输出 Token 数
costMicrosint64/string实际费用,单位为微美元(1 美元 = 1,000,000 微美元)
JSON
{
  "code": 0,
  "data": {
    "content": "Hello! How can I help?",
    "tokensIn": 8,
    "tokensOut": 7,
    "costMicros": "6"
  },
  "msg": "成功"
}
POST/api/media/generate

提交媒体生成任务

媒体生成是异步接口。提交成功后保存 jobId,并使用结果接口轮询。params 会根据模型转发给对应供应商,因此具体字段取决于所选模型。

字段类型必填说明
modelstring已启用 media 模型的 slug
paramsobject模型参数对象;不可为 null
cURL
curl -X POST https://restapi.scalingtensor.com/api/media/generate \
  -H "Content-Type: application/json" \
  -H "apiKey: YOUR_API_KEY" \
  -d '{
    "model": "sonilo/text-to-music",
    "params": {
      "prompt": "Warm ambient music for a product demo",
      "duration": 30,
      "variants_num": 1
    }
  }'

响应 data

字段类型说明
jobIdint64/stringScalingTensor 任务 ID;查询结果时使用
statusstring初始状态,通常为 pending
JSON
{
  "code": 0,
  "data": { "jobId": "724958320123", "status": "pending" },
  "msg": "成功"
}
GET/api/media/result

查询媒体任务结果

使用提交接口返回的 jobId 轮询。只能查询由同一个 API 密钥所属用户创建的任务。建议间隔 2–5 秒,直到状态变为 completed 或 failed。

字段类型必填说明
apiKeyheader创建任务时所用账户的有效 API 密钥
jobIdquery / int64提交媒体任务时返回的 jobId
cURL
curl "https://restapi.scalingtensor.com/api/media/result?jobId=724958320123" \
  -H "apiKey: YOUR_API_KEY"

任务状态

字段说明
pending任务排队或处理中,继续轮询
completed任务完成,resultData 包含供应商结果和输出 URL
failed任务失败,停止轮询;已预扣的固定费用会按服务逻辑退款
JSON
{
  "code": 0,
  "data": {
    "status": "completed",
    "resultData": {
      "status": "completed",
      "output_url": "https://.../result.mp3"
    }
  },
  "msg": "成功"
}

04

常用媒体模型参数

通用媒体模型的 params 由对应供应商定义。模型列表 priceConfig.api_reference_url 存在时,应以该模型参考文档为准。以下参数是后端对 Sonilo 模型执行的明确校验。

模型params 字段与约束
sonilo/text-to-musicprompt(1–2000 字符)、duration(整数 5–360 秒);可选 segments、output_format、variants_num(1–10)
sonilo/text-to-sfxprompt(1–2000 字符)、duration(整数 1–180 秒);audio_format 可选 wav/mp3/aac/flac
sonilo/video-to-musicvideo_url(可公开访问的直接 HTTP(S) 视频 URL);可选 prompt、segments、preserve_speech、isolate_vocals、output_format、ducking、variants_num、stems、prompt_influence、lyrics
sonilo/video-to-sfxvideo_url;可选 prompt(最多 2000 字符)、audio_format、segments(1–30 个连续分段,每项含 start、end、prompt)
sonilo/dubbingvideo_url;可选 languages(不重复的语言代码数组)、ducking(boolean)
video_url 必须是可公开访问、无重定向的直接 HTTP(S) 地址,并包含可读取的视频。JSON 接口不支持 video 二进制上传。

05

错误处理

业务错误仍使用统一响应结构返回。客户端应先检查 code,再读取 data。常见错误码如下。

code说明
0成功
3请求过于频繁
5内部服务器错误
1000通用业务错误
1001参数错误
1003模型或任务不存在,或任务不属于当前用户
1008API 密钥无效或已撤销
1009钱包余额不足
1012视频太大,无法分析
1013无法获取有效视频时长

安全与重试建议

  • API 密钥只保存在服务端或安全的密钥管理系统中。
  • 聊天请求失败后是否重试应由业务决定,避免产生重复费用。
  • 媒体提交成功后不要重复提交;保存 jobId 并轮询结果。
  • 仅对限流、网络故障和服务端错误使用指数退避。