三宝API · Powered by New API
Base URL:https://api.sanbaobeauty.com/v1 文档版本:2026-09-09
GET /v1/models,从当前 Key 返回的 data[].id 选择公开模型。POST /v1/videos 并轮询 GET /v1/videos/{task_id};GPT Image 2 图片调用 POST /v1/images/tasks 并轮询 GET /v1/images/tasks/{task_id}。保存创建响应的 id,不要把图片模型发往视频端点。下方快速示例仅演示视频,GPT Image 2 请看图片任务说明;Image 2.5 请看同步图片说明。export SANBAO_API_KEY="sk-<YOUR_KEY>"
export SANBAO_PUBLIC_MODEL="从 GET /v1/models 返回的 data[].id 中选择"
curl -sS https://api.sanbaobeauty.com/v1/videos \
-H "Authorization: Bearer $SANBAO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-20260802-0001" \
-d "{\"model\":\"$SANBAO_PUBLIC_MODEL\",\"prompt\":\"海边日落,镜头缓慢推进\",\"duration\":5,\"resolution\":\"720p\",\"ratio\":\"16:9\",\"images\":[]}"成功码:视频创建响应以实际返回为准;图片异步创建返回 HTTP 202 Accepted。客户端必须接受任意 2xx;同一幂等键的安全重放可能返回 200 OK。
三宝API账号、余额、Key和任务与主站相互独立。邮箱验证码登录是公开入口,首次验证会自动创建独立账号;已登录用户可用支付宝固定套餐充值。
Authorization: Bearer sk-<YOUR_KEY>建议按应用和环境拆分Key并设置模型范围、额度和有效期。不要把登录Cookie当作API Key,也不要把Key放入查询串、网页、App或公开仓库。使用前请阅读用户协议、隐私政策、充值与退款规则及内容合规及禁止用途。
curl -sS https://api.sanbaobeauty.com/v1/models \
-H "Authorization: Bearer $SANBAO_API_KEY"model 只能使用认证响应的 data[].id,不要使用中文展示名,也不要猜测或缓存已经下架的ID。
| 方式 | 识别方式 | 价格与时长 |
|---|---|---|
| 按次 | billing_mode=per_request | amount CNY/次;duration、resolution、ratio和素材上限读取实时capabilities。 |
| 按秒 | billing_mode=per_second | amount CNY/秒 × duration;duration为必填整数且必须在capabilities.durations内。 |
| GPT Image 2 图片生成 | 原生异步、按次 | POST /v1/images/tasks;不使用同步 images/generations,详见图片任务说明。 |
只调用实时目录中当前Key可见的模型。价格、调用ID、时长、比例、分辨率和素材上限以模型广场及 GET /v1/models 为准;不要硬编码模型数量或旧能力。
POST /v1/videos,JSON请求。当前没有面向API客户的独立文件上传端点;素材使用服务端可直接读取的HTTPS URL。
| 字段 | 类型 | 要求 |
|---|---|---|
model | string | 必填,认证模型列表返回的公开ID。 |
prompt | string | 必填,提示词。 |
duration | integer | 按实时能力填写;按秒模型必填。不要同时传含义冲突的 seconds。 |
resolution | string | 必须在 capabilities.resolutions 内。 |
ratio | string | 必须在 capabilities.ratios 内;公开字段是 ratio,不是 aspect_ratio。 |
images | string[] | 图片HTTPS URL,不超过 max_images。 |
videos | string[] | 视频HTTPS URL,不超过 max_videos。 |
audios | string[] | 音频HTTPS URL,不超过 max_audios。 |
https://;不能是blob/data、localhost、内网地址、需Cookie/Referer的页面或登录后链接。发送 Idempotency-Key(1–128字符),每个业务订单固定一个随机值。网络超时后用相同Key和完全相同请求体重试;不要换Key盲目重提。相同Key配不同请求会被拒绝。按秒模型强制要求,按次模型也建议始终发送。
HTTP/1.1 201 Created
Content-Type: application/json
{"id":"video_example_01","object":"video","model":"example-public-id","status":"queued","created_at":1785571200}客户端应接受任意2xx、忽略未知字段且不依赖字段顺序。
curl -sS https://api.sanbaobeauty.com/v1/videos/video_example_01 \
-H "Authorization: Bearer $SANBAO_API_KEY"建议首次等2秒,再按2、3、5、8、10秒放慢,稳定后每10–15秒轮询并加10%–30%抖动。本地超时只停止轮询,不代表任务失败,不能自动新建任务。
{"id":"video_example_01","object":"video","status":"succeeded","video_url":"https://example.invalid/signed-result.mp4","download_url":"https://example.invalid/signed-download.mp4","link_expires_in":86400}成品链接是短期签名URL。过期或接近过期时,用同一Key重新查询同一任务刷新;不要当永久地址缓存。对象存储CORS可能阻止浏览器读取,三宝API不保证任意网页Origin可直连。
客户服务端GET download_url(缺失时用 video_url),以背压流式写入自己的对象存储,不整段读入内存或落盘。校验Content-Length、实际字节数、目标HEAD长度并计算SHA-256。源链接401/403时先重新查询任务刷新链接,不要重试旧签名。
const base = 'https://api.sanbaobeauty.com/v1';
const headers = {Authorization:`Bearer ${process.env.SANBAO_API_KEY}`};
const models = await fetch(`${base}/models`, {headers}).then(r => r.json());
const model = process.env.SANBAO_PUBLIC_MODEL; // 从模型广场选择视频ID,并按能力调整下方参数
if (!models.data.some(item => item.id === model)) throw new Error("请设置当前可见的视频模型ID");
const response = await fetch(`${base}/videos`, {method:'POST', headers:{...headers,'Content-Type':'application/json','Idempotency-Key':crypto.randomUUID()}, body:JSON.stringify({model,prompt:'海边日落,镜头缓慢推进',duration:5,resolution:'720p',ratio:'16:9',images:[]})});
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
console.log((await response.json()).id);import os, uuid, requests
base = "https://api.sanbaobeauty.com/v1"
headers = {"Authorization":f"Bearer {os.environ['SANBAO_API_KEY']}"}
model = os.environ["SANBAO_PUBLIC_MODEL"] # 选择视频ID,并按能力调整下方参数
models = requests.get(f"{base}/models", timeout=30, headers=headers).json()["data"]
assert any(item["id"] == model for item in models), "模型ID当前不可见"
r = requests.post(f"{base}/videos", timeout=(10,60), headers={**headers,"Idempotency-Key":str(uuid.uuid4())}, json={"model":model,"prompt":"海边日落,镜头缓慢推进","duration":5,"resolution":"720p","ratio":"16:9","images":[]})
r.raise_for_status()
print(r.json()["id"])| HTTP | 含义 | 处理 |
|---|---|---|
| 400 | 参数、素材数或幂等键无效 | 按message修正,不原样重试。 |
| 401 | Key缺失、错误、禁用或过期 | 检查Bearer头并轮换。 |
| 403 | 余额、Key范围或幂等冲突 | 检查钱包、Key权限和错误码。 |
| 404 | 路径或任务不存在 | 核对Base URL、任务ID和所属账号。 |
| 413 | 请求体过大 | 改用URL并缩小JSON。 |
| 429 | 限流或容量繁忙 | 遵守Retry-After,否则1、2、4、8、16秒退避加抖动。 |
| 5xx | 临时异常或创建结果不确定 | 用同一幂等键重试,绝不换键盲目重提。 |
{"code":"invalid_video_parameters","message":"duration 不在模型支持范围内"}失败退款:任务明确failed/canceled时,预留费用按运行时账务规则幂等退回;成功只结算一次。创建结果不确定会先隔离对账,不盲目重提或提前重复退款。
Base URL:https://api.sanbaobeauty.com/v1。以模型广场中的公开模型 ID 和当前人民币价格为准;不同分辨率使用各自的模型 ID。所有创建、查询与结果下载均需要 API Key。
创建使用 POST /v1/videos,查询使用 GET /v1/videos/{id},下载使用 GET /v1/videos/{id}/content。使用 model、prompt、duration、ratio 和该模型支持的参考素材字段;时长、比例、素材数量以模型广场能力说明为准。
单分辨率模型可省略 resolution;显式传入时必须与该公开模型 ID 的分辨率一致。按秒任务必须提供 Idempotency-Key。按次任务建议同样提供:同一请求重试时保留原键和原内容。旧按次客户端省略该键仍可提交,但每次请求独立计费,不能跨请求去重。
gpt-image2、gpt-image2-1K、gpt-image2-2K、gpt-image2-4K 使用 POST /v1/images/tasks,不使用同步的 /v1/images/generations。每次新任务设置新的 Idempotency-Key,同一请求重试时保留原键及原请求内容。
curl https://api.sanbaobeauty.com/v1/images/tasks \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Idempotency-Key: image-example-0001' \
-H 'Content-Type: application/json' \
-d '{"model":"gpt-image2-2K","prompt":"清晨窗边的一只橘猫","aspect_ratio":"9:16","images":[]}'
创建返回 HTTP 202 和任务 id。随后使用 GET /v1/images/tasks/{id} 查询;完成后返回的 image_url 指向 /v1/images/tasks/{id}/content。图片读取接口支持 GET、HEAD 和 Range,需要同一用户和创建任务的 Key。
图片状态包括 queued、in_progress、completed、failed 和 submission_unconfirmed。提交结果暂未确认时保留原任务与预留金额,请继续查询该 ID,不要换新键重复提交。确认失败后退回预留金额。
最多 5 张 HTTPS 参考图片,不接受视频或音频。基础版默认比例 auto,1K 默认 auto 且支持 9:21;2K 和 4K 默认 9:16,不支持 auto。完整比例清单见各模型能力说明。
每次任务提交时冻结适用价格及账户倍率:按次任务按 1 次计算,按秒任务按允许的生成时长计算。异步处理中不要以刷新页面、网络超时或未知状态直接判定失败。已确认失败的任务只退款一次;重复查询不会重复扣费或退款。请保存任务 ID,并在任务完成后通过本站鉴权下载接口获取结果。
image_2_5_flare(Image 2.5 Flare)和 image_2_5_sunburst(Image 2.5 Sunburst)使用 POST /v1/images/generations,每次 ¥0.07,成功响应直接返回一张图片。支持七种常用画幅、1K 输出和最多 9 张参考图,JPEG/PNG。
| 参数 | 规则 |
|---|---|
| prompt | 必填,非空,最多 32000 个 Unicode 字符。 |
| n / resolution | 固定为 1 / 1K,可省略。 |
| aspect_ratio | 1:1、16:9(默认)、9:16、4:3、3:4、3:2、2:3。 |
| output_format / response_format | jpeg(默认)或 png;url(默认)或 b64_json。 |
| images | 可选,最多 9 张参考图,PNG/JPEG/WebP,每张小于 50 MiB;公网 HTTPS URL、图片 data URL 或 multipart 文件。上传请重复 images 字段,顺序保留。 |
| quality | 固定 auto;不支持流式、高级质量、透明背景和掩膜。 |
curl https://api.sanbaobeauty.com/v1/images/generations \
-H "Authorization: Bearer $SANBAO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"image_2_5_flare","prompt":"清晨窗边的一只橘猫","aspect_ratio":"16:9","resolution":"1K","n":1,"output_format":"jpeg","response_format":"url","images":[]}'
成功结果位于 data[0].url 或 data[0].b64_json。失败不收费;网关不会自动重放生成请求。超时或断开连接时,供应商可能仍在处理,请勿自动重试;客户端再次提交会创建新的独立请求。
客户端应接受所有2xx、忽略未知字段,并以实时目录为能力和价格依据;没有出现在认证目录中的灰度模型不可调用。