功能

API 接入与多协议支持

统一说明 OpenAI、Anthropic 和 Embeddings 调用方式,含 JEV 决策模型,含 Wan 3.0 视频生成。

接口概览

能力接口
模型列表GET /v1/models
OpenAI 对话POST /v1/chat/completions
Anthropic 对话POST /v1/messages
向量嵌入POST /v1/embeddings
Wan 3.0 视频生成POST /v1/videos/generations;接入说明
JEV 决策(灰度)POST /v1/decision、POST /v1/systemone;接入说明

统一基础地址:https://tokenrhythm.studio/v1。

鉴权与安全

所有请求均通过 HTTPS 发送,并在请求头携带 Authorization: Bearer sk_xxx。API Key 仅在创建成功时完整展示一次,不要写入公开代码、浏览器脚本或日志。

OpenAI Chat Completions

cURL

cURL
curl https://tokenrhythm.studio/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_xxx" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [{ "role": "user", "content": "你好" }],
    "stream": false
  }'

Python

Python
from openai import OpenAI

client = OpenAI(
    api_key="sk_xxx",
    base_url="https://tokenrhythm.studio/v1",
)
response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)

Node.js

Node.js
const response = await fetch("https://tokenrhythm.studio/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer sk_xxx"
  },
  body: JSON.stringify({
    model: "deepseek-v4-flash",
    messages: [{ role: "user", content: "你好" }]
  })
});
console.log(await response.json());

Anthropic Messages

Anthropic 原生协议需要 anthropic-version: 2023-06-01,并且必须传入 max_tokens。

cURL

cURL
curl https://tokenrhythm.studio/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_xxx" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"deepseek-v4-flash","max_tokens":512,"messages":[{"role":"user","content":"你好"}]}'

Python

Python
import requests

response = requests.post(
    "https://tokenrhythm.studio/v1/messages",
    headers={
        "Authorization": "Bearer sk_xxx",
        "anthropic-version": "2023-06-01",
    },
    json={
        "model": "deepseek-v4-flash",
        "max_tokens": 512,
        "messages": [{"role": "user", "content": "你好"}],
    },
)
print(response.json())

Node.js

Node.js
const response = await fetch("https://tokenrhythm.studio/v1/messages", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer sk_xxx",
    "anthropic-version": "2023-06-01"
  },
  body: JSON.stringify({
    model: "deepseek-v4-flash",
    max_tokens: 512,
    messages: [{ role: "user", content: "你好" }]
  })
});
console.log(await response.json());

Embeddings

向量模型以模型接口返回的当前可用模型为准。

cURL

cURL
curl https://tokenrhythm.studio/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_xxx" \
  -d '{"model":"embedding-model-id","input":"需要向量化的文本"}'

Python

Python
from openai import OpenAI

client = OpenAI(api_key="sk_xxx", base_url="https://tokenrhythm.studio/v1")
response = client.embeddings.create(
    model="embedding-model-id",
    input="需要向量化的文本",
)
print(response.data[0].embedding)

Node.js

Node.js
const response = await fetch("https://tokenrhythm.studio/v1/embeddings", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer sk_xxx"
  },
  body: JSON.stringify({
    model: "embedding-model-id",
    input: "需要向量化的文本"
  })
});
console.log(await response.json());

流式响应

OpenAI 协议传入 stream: true 后按 SSE 返回,正文增量位于 choices[0].delta.content。Anthropic 协议按原生 Messages 流式事件返回;两种协议不要混用解析器。

工具调用

平台支持 OpenAI 新版 tools、tool_choice、tool_calls 字段。DeepSeek 的 tool_choice 使用 none、auto 或 required,不要传对象形式。

排查错误

请求失败时先记录响应中的 traceId,再对照错误码检查鉴权、余额、模型能力、输出长度和限流状态。

JEV 决策模型 API

以下接口和示例使用当前站点域名;请在对应环境中调用。

JEV 是结构化决策模型,不是聊天模型。是否可用及当前价格以模型目录返回的状态和价格为准;调用次数及上游可确认的 Token 用量会出现在用户中心和调用日志。

Token 口径:/v1/decision 优先记录打包输入 input_tokens,未提供时使用 input_details.expanded_tokens(多题展开输入);两者不相加。/v1/systemone 记录 usage.input_tokens 和 usage.output_tokens,后者是答案序列化长度,不代表生成 Token。上游未上报的 Token 会在调用明细中标为未知。

接口与鉴权

  • 推荐:POST https://tokenrhythm.studio/v1/decision。
  • System One 兼容格式:POST https://tokenrhythm.studio/v1/systemone。
  • 使用平台 API Key:Authorization: Bearer sk_你的平台密钥;请求头 Content-Type: application/json。
  • 两个接口均为非流式 JSON;模型 ID 固定为 NeoHorse-Jev-4B。API Key 的模型权限和账号灰度名单同时生效。

最小请求

JSON
{
  "model": "NeoHorse-Jev-4B",
  "state": "路口信号灯为红色,前方有行人。",
  "questions": {
    "stop": {
      "type": "noul",
      "instructions": "现在是否应停车?"
    }
  }
}

state 是背景或待判断内容,建议使用字符串,也可传结构化 JSON;questions 的键由调用方自行定义,读取答案时按相同的问题 ID 查找。noul 返回 0~1 的成立概率,业务上的“是/否”阈值由调用方决定。

题型与限制

题型criteria结果
choice选项名到描述的对象,1~255 项;保持选项顺序choice 和 probabilities
noul可省略;也可提供 false/true 两个描述noul 成立概率
score从低到高的等级描述数组,2~10 档score 为从 0 编号的等级期望

纯文本每次 1~16 题,JSON 请求体不超过 1 MiB。图片放在顶层 image 字段,格式为一张 PNG 的 Base64 Data URL;带图时只能有一道题,完整 JSON 不超过 8 MiB,移除 image 后仍不超过 1 MiB。上游还有编码后的输入 token 上限,超出会返回 422。不会静默截断输入。

返回与错误

成功时直接返回含 model、answers 的结构化 JSON,不套聊天消息格式。/v1/systemone 使用同一请求体,返回可另含 usage、extensions;Choice/Score 可含 confidence,Noul 请读取 noul 字段。概率和 confidence 不能当作经校准的正确率。

平台错误统一返回 code、message、traceId。常见状态:401 平台密钥无效,403 未获灰度权限,413 请求体超限,422 参数或上游输入限制不满足,429 容量限流,502/503/504 上游或依赖故障。请保留 traceId 供排障;已发送的超时请求不要无条件重试。

JEV 不通过 /v1/chat/completions 或网页聊天 Playground 调用。

Wan 3.0 视频生成 API

以下接口和示例使用当前站点域名;请在对应环境中调用。

wan3.0-video 是异步视频生成模型。请先在模型页确认当前可用性和 480P、720P、1080P 的平台价格;目前没有网页创作入口。

创建任务

使用平台 API Key 请求 POST /v1/videos/generations。以下是纯文本生成的最小示例:

cURL
curl https://tokenrhythm.studio/v1/videos/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_xxx" \
  -d '{"model":"wan3.0-video","content":[{"type":"text","text":"海边日出,镜头缓慢推进"}],"resolution":"720P","duration":5,"ratio":"16:9"}'

创建成功返回 HTTP 202,响应中的 id 是平台任务 ID,status 初始为 queued,estimated_output_cost_cny 只是创建时估算,billing_pending 表示尚未完成结算。

查询任务

使用 GET /v1/videos/{id} 查询单个任务,或使用 GET /v1/videos?page=1&pageSize=20 查询自己的任务列表。任务成功后从 result.url 获取视频;保存文件时请及时下载。usage 和 billing.total_cost_cny 以完成后的响应为准,失败任务不扣费。

输入与价格

resolution 支持 480P、720P、1080P;duration 支持 2–30 秒,传 -1 表示智能时长。content 可包含文本、图片、视频、音频、文件或网页链接;媒体 URL 必须是公网 HTTPS 地址。图片使用 image_url 和 first_frame、last_frame 或 reference_image 角色;文件和网页链接分别使用 file_url、link_url,并启用 prompt_extend。首尾帧不能与参考素材混用;其他数量和组合限制以接口参数校验为准。

有输入视频时,输入与输出视频的总时长不得超过 30 秒。Wan 3.0 标准版按所选清晰度对输入视频与输出视频的实际时长计费,三档平台价以模型页当前展示为准。

请求失败时保留响应中的 traceId,便于查询任务和排障。