DOCUMENTATION

接入文档

5 分钟完成接入,兼容 OpenAI SDK,支持对话 / 图像 / 视频三类模型,国内直连无需代理。

快速接入

棱镜AI 完全兼容 OpenAI API 格式。只需修改 base_url,无需改动任何业务代码。

🐍 Python · OpenAI SDK
Python
1from openai import OpenAI
2
3client = OpenAI(
4 api_key="sk-xxxxxxxx", # 棱镜AI Key
5 base_url="https://api.prysm-ai.com/v1", # ← 只改这里
6)
7
8response = client.chat.completions.create(
9 model="gpt-5.5",
10 messages=[{"role": "user", "content": "你好"}],
11)
12print(response.choices[0].message.content)
JavaScript · OpenAI SDK
JavaScript
1import OpenAI from "openai";
2
3const client = new OpenAI({
4 apiKey: "sk-xxxxxxxx",
5 baseURL: "https://api.prysm-ai.com/v1",
6});
7
8const resp = await client.chat.completions.create({
9 model: "gpt-5.5",
10 messages: [{ role: "user", content: "Hello!" }],
11});
12console.log(resp.choices[0].message.content);
💻 curl · Linux / macOS / Git Bash
Shell
1curl https://api.prysm-ai.com/v1/chat/completions \
2 -H "Authorization: Bearer sk-xxxxxxxx" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "gpt-5.5",
6 "messages": [{"role": "user", "content": "用 Python 写快排"}]
7 }'
🪟 curl · Windows cmd / PowerShell
Windows
1curl https://api.prysm-ai.com/v1/chat/completions ^
2 -H "Authorization: Bearer sk-xxxxxxxx" ^
3 -H "Content-Type: application/json" ^
4 -d "{\"model\":\"gpt-5.5\",\"messages\":[{\"role\":\"user\",\"content\":\"用 Python 写快排\"}]}"

配置开发工具

Claude Code
  1. 设置两个环境变量后启动 claude 即可(推荐用 .env 或 shell rc 文件持久化):
  2. export ANTHROPIC_BASE_URL=https://api.prysm-ai.com
  3. export ANTHROPIC_AUTH_TOKEN=sk-xxxxxxxx
  4. Windows PowerShell 用 $env:ANTHROPIC_BASE_URL="https://api.prysm-ai.com"
Claude Code 不再有 S 菜单。所有配置走环境变量或 ~/.claude/settings.json。模型 ID 直接传给 claude --model 参数。
Cursor
  1. 打开 Settings → Models(Cmd/Ctrl + Shift + J)
  2. 关掉默认 Cursor Pro 模型,新增 Override OpenAI Base URL
  3. 填 https://api.prysm-ai.com/v1,把 OpenAI API Key 改成 sk-xxxxxxxx
  4. 点 Verify,通过后选要用的模型 ID(如 gpt-5.5)
Cursor 设置里的「OpenAI API Key」字段同时承担 base url + key 两件事,必须勾上 Override 选项才会读自定义 URL。
Cline / Continue / Aider
  1. Cline (VS Code 插件):API Provider 选 OpenAI Compatible → Base URL 填 https://api.prysm-ai.com/v1 → API Key 填 sk-xxx
  2. Continue:编辑 ~/.continue/config.json,在 models 项加 apiBase: "https://api.prysm-ai.com/v1" 和 apiKey
  3. Aider:启动时加 --openai-api-base https://api.prysm-ai.com/v1 --openai-api-key sk-xxx

对话

兼容 OpenAI Chat Completions API,支持流式输出(SSE)和非流式两种模式。

🐍 流式对话 · Python
Python
1from openai import OpenAI
2
3client = OpenAI(api_key="sk-xxxxxxxx", base_url="https://api.prysm-ai.com/v1")
4
5stream = client.chat.completions.create(
6 model="gpt-5.5",
7 messages=[{"role": "user", "content": "写一首关于深秋的诗"}],
8 stream=True,
9 stream_options={"include_usage": True}, # 可选:流结束时返回 token 用量
10)
11for chunk in stream:
12 if chunk.choices and chunk.choices[0].delta.content:
13 print(chunk.choices[0].delta.content, end="", flush=True)
14 if chunk.usage: # include_usage 开启时,最后一个 chunk 带完整用量
15 print(f"\n\ntokens: {chunk.usage.total_tokens}")
流式对话 · JavaScript
JavaScript
1const stream = await client.chat.completions.create({
2 model: "gpt-5.5",
3 messages: [{ role: "user", content: "写一首关于深秋的诗" }],
4 stream: true,
5 stream_options: { include_usage: true },
6});
7for await (const chunk of stream) {
8 process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
9 if (chunk.usage) console.log("\ntokens:", chunk.usage.total_tokens);
10}
</>Request Schema POST /v1/chat/completions
FieldTypeDescription
modelrequired
string模型 ID,见下方模型列表
messagesrequired
Message[]消息列表,每条包含 role 和 content
streamoptional
boolean流式输出(SSE),默认 false
stream_optionsoptional
object{"include_usage": true} → 流结束前追加一个带完整 usage 的 chunk
temperatureoptional
number随机性 0–2,默认 1
max_tokensoptional
number最大输出 token 数
top_poptional
number核采样概率阈值,默认 1
</>Response Schema(非流式)
{} Response · chat.completion
JSON
1{
2 "id": "chatcmpl-xxxxxxxxxx",
3 "object": "chat.completion",
4 "created": 1748131200,
5 "model": "gpt-5.5",
6 "choices": [
7 {
8 "index": 0,
9 "message": {
10 "role": "assistant",
11 "content": "模型回复内容..."
12 },
13 "finish_reason": "stop"
14 }
15 ],
16 "usage": {
17 "prompt_tokens": 12,
18 "completion_tokens": 128,
19 "total_tokens": 140
20 }
21}
</>Response Schema(流式 SSE)
{} SSE Stream · chat.completion.chunk
JSON
1data: {"id":"chatcmpl-xx","object":"chat.completion.chunk","created":1748131200,"model":"gpt-5.5","choices":[{"index":0,"delta":{"role":"assistant","content":"模"},"finish_reason":null}]}
2
3data: {"id":"chatcmpl-xx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"型"},"finish_reason":null}]}
4
5data: {"id":"chatcmpl-xx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
6
7// stream_options:{"include_usage":true} [DONE] choices usage chunk
8data: {"id":"chatcmpl-xx","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":12,"completion_tokens":23,"total_tokens":35,"completion_tokens_details":{"reasoning_tokens":5}}}
9
10data: [DONE]

图像生成

图像生成兼容 OpenAI Images API,返回图片 URL(有效期 24 小时)或 Base64 数据。

🐍 生成图像
Python
1import requests
2
3resp = requests.post(
4 "https://api.prysm-ai.com/v1/images/generations",
5 headers={"Authorization": "Bearer sk-xxxxxxxx"},
6 json={
7 "model": "doubao-seedream-4-0",
8 "prompt": "一只在咖啡馆里读书的橘猫,丁达尔光效,胶片质感",
9 "n": 1,
10 "size": "1024x1024",
11 }
12)
13url = resp.json()["data"][0]["url"]
14print(url)
</>Request Schema POST /v1/images/generations
FieldTypeDescription
modelrequired
string图像模型 ID,见下方模型列表
promptrequired
string图像描述,建议详细描述风格、主体和氛围
noptional
number生成张数,默认 1
sizeoptional
string图像尺寸,如 "1024x1024" "1792x1024"
</>Response Schema
{} Response · images
JSON
1{
2 "created": 1748131200,
3 "data": [
4 {
5 "url": "https://cdn.example.com/image-xxxxxxxx.png"
6 // b64_json: "iVBORw0KGgo..." ( Base64)
7 }
8 ]
9}

视频生成(异步)

视频生成为异步任务,分两步:① 提交任务获取 taskId,② 轮询状态直至 SUCCEEDED

🐍 视频生成完整示例(文生视频)
Python
1import requests, time
2
3BASE = "https://api.prysm-ai.com"
4HDR = {"Authorization": "Bearer sk-xxxxxxxx", "Content-Type": "application/json"}
5
6# ① 提交任务
7# 文生视频:仅 prompt
8# 图生视频:加 images=[{"role":"reference_image","url":"..."}]
9# 首尾帧:images=[{"role":"first_frame","url":...}, {"role":"last_frame","url":...}]
10# 引用资产库:images=[{"role":"reference_image","url":"asset://<id>"}]
11# 视频/音频参考:videos=[{"url":...}] / audios=[{"url":...}]
12# 异步回调(可选):callbackUrl="https://yourapp.com/webhook"
13resp = requests.post(f"{BASE}/api/video", headers=HDR, json={
14 "model": "tumbleweed-2-0",
15 "prompt": "一只海豚跃出海面,慢动作,超高清",
16 "resolution": "720p",
17 "durationSeconds": 5,
18 "aspectRatio": "16:9",
19 "generateAudio": True,
20})
21task_id = resp.json()["taskId"]
22print(f"Task ID: {task_id}")
23
24# ② 轮询状态(每 10 秒)
25while True:
26 r = requests.get(
27 f"{BASE}/api/video/status",
28 params={"task_id": task_id, "model": "tumbleweed-2-0"},
29 headers=HDR,
30 )
31 data = r.json()
32 status = data["status"]
33 print(f"状态: {status}")
34
35 if status == "SUCCEEDED":
36 print("视频地址:", data["data"][0]["url"])
37 break
38 elif status == "FAILED":
39 print("生成失败")
40 break
41
42 time.sleep(10)
⚠️ 视频 URL 有效期约 24 小时,请及时下载保存。
</>Request Schema POST /api/video(tumbleweed-2-0)
FieldTypeDescription
modelrequired
string视频模型 ID,目前支持 "tumbleweed-2-0"
promptrequired
string视频描述文本(必填)
resolutionoptional
string分辨率 "480p" | "720p" | "1080p",默认 720p
durationSecondsoptional
integer时长(秒),4–15,默认 5
aspectRatiooptional
string宽高比 "adaptive" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "21:9",默认 adaptive
generateAudiooptional
bool是否生成音频,默认 true
enhancePromptoptional
bool提示词增强,默认 true
seedoptional
integer随机种子,-1 为随机;相同种子+参数可复现
imagesoptional
object[]图生视频:[{ role, url | b64_json, mime_type? }],role ∈ reference_image | first_frame | last_frame;url 也可填 asset://<id> 引用资产库
videosoptional
object[]视频参考输入:[{ url }](可选)
audiosoptional
object[]音频参考输入:[{ url }](可选)
callbackUrloptional
string异步回调:任务终态时上游 POST 通知该 URL(queued / running / succeeded / failed;失败 5s 内未确认会重试 3 次)
计费说明:tumbleweed-2-0 按上游返回的 usage token 数计费, 单价随「分辨率 × 是否图生视频(有 images / videos / audios)」变化;时长越长 token 越多、费用越高。提交时按预估扣减额度,任务成功后按实际 token 结算。
</>🪪 人像资产库(asset library)—— 复用同一人物角色
想用「同一个虚拟人 IP / 代言人形象」反复出视频?把图片先注册为资产,拿到 asset_id 后, 生成视频时用 asset://<id> 替代 URL, 速度更快、人物特征更稳定。上游按账号隔离资产,本平台再按用户 ID 二次隔离,互不可见。
🐍 资产库 三步示例
Python
1import requests, time
2BASE = "https://api.prysm-ai.com"
3HDR = {"Authorization": "Bearer sk-xxxxxxxx", "Content-Type": "application/json"}
4
5# ① 创建资产(异步处理)
6r = requests.post(f"{BASE}/api/video/assets", headers=HDR, json={
7 "url": "https://your-cdn.com/avatar.jpg",
8 "asset_type": "image",
9 "note": "代言人 A" # 可选,仅本地备注
10})
11asset_id = r.json()["asset_id"]
12
13# ② 轮询资产状态(每 5s)直到 READY
14while True:
15 s = requests.get(f"{BASE}/api/video/assets/{asset_id}", headers=HDR).json()
16 if s.get("status") == "READY":
17 break
18 if s.get("status") == "FAILED":
19 raise RuntimeError("asset 处理失败")
20 time.sleep(5)
21
22# ③ 生成视频时引用 asset
23resp = requests.post(f"{BASE}/api/video", headers=HDR, json={
24 "model": "tumbleweed-2-0",
25 "images": [{ "role": "reference_image", "url": f"asset://{asset_id}" }],
26 "prompt": "让人物在城市夜景下行走",
27 "enhancePrompt": True,
28 "generateAudio": True,
29})
30print(resp.json())
</>Resource Schema /api/video/assets
FieldTypeDescription
POST /api/video/assetsrequired
createBody: { url, asset_type:"image", note? };返回 { asset_id, status:"PENDING"|"READY", ... }
GET /api/video/assetsrequired
list列出当前账号拥有的所有 asset(按创建时间倒序,上限 500 条)
GET /api/video/assets/{id}required
query查上游最新状态,会同步缓存到本地 status 字段
DELETE /api/video/assets/{id}required
unbind解除本地映射;上游 asset 保留(按上游 API key 全局共享,避免被其他用户引用)
⚠️ asset 处理通常 10-30 秒,PENDING 状态不能用于生成视频。 失败时返回 FAILED,可重新创建。
</>Response Schema(提交成功 → PENDING)
{} POST /api/video · 提交响应
JSON
1{
2 "taskId": "cgt-20260525095304-fjhbp",
3 "status": "PENDING",
4 "done": false,
5 "timestamps": {
6 "submitTime": "2026-05-25T09:53:04Z" // ISO 8601 UTC
7 }
8}
</>Response Schema(轮询 → SUCCEEDED)
{} GET /api/video/status · 完成响应
JSON
1{
2 "taskId": "cgt-20260525095304-fjhbp",
3 "status": "SUCCEEDED", // "PENDING" | "SUCCEEDED" | "FAILED"
4 "done": true,
5 "data": [
6 {
7 "url": "https://cdn.example.com/video-xxxxxxxx.mp4" //
8 },
9 {
10 "url": "https://cdn.example.com/video-xxxxxxxx_last-frame.png" //
11 }
12 ],
13 "timestamps": {
14 "submitTime": "2026-05-25T09:53:04Z"
15 }
16}
</>Query Parameters GET /api/video/status
FieldTypeDescription
task_idrequired
string提交时返回的 taskId
modelrequired
string与提交时相同的模型 ID

模型 ID 参考

当前开放模型列表(与定价页 / 模型广场同步,按你的账号权限展示):

加载中…

错误码

所有错误响应格式统一为 { "error": { "message": "..." } }

401
Unauthorized
API Key 无效或缺失。检查 Authorization 头是否正确,格式为 Bearer sk-xxxxxxxx。
402
Payment Required
账户余额不足。请前往控制台 → 账单 充值。
404
Model Not Found
模型 ID 不存在或尚未开放。请对照上方模型列表核查。
429
Too Many Requests
请求频率超限(默认 60 RPM)。建议代码中加入指数退避重试。
500
Internal Error
服务端内部错误,通常为上游临时故障,1–2 分钟内自动恢复。
503
Service Unavailable
上游模型服务暂时不可用,建议添加重试逻辑并设置最大重试次数。