使用指南
认证与基础规范
基础地址、API Key 认证、请求与响应规范、分页、限流、幂等和错误约定
认证与基础规范
本页是所有接口的公共约定,包括基础地址、认证、请求与响应格式、分页、限流、幂等和错误处理。具体接口的参数与示例见接口总览以及各自的接口页面。
基础地址
| 项目 | 值 |
|---|---|
| 默认基础地址 | https://locopalai.com |
| 海外模型接入地址 | https://us-api.locopalai.com(如控制台展示其他地址,以控制台为准) |
| 模型与生成接口 | <基础地址>/v1/... |
| 素材库接口 | <基础地址>/api/v1/materials/... |
| 请求格式 | application/json;音频 speech 成功响应为二进制音频 |
| 字符编码 | UTF-8 |
认证
所有接口都使用同一把平台 API Key:
Authorization: Bearer sk-你的APIKey
Content-Type: application/json| 项目 | 说明 |
|---|---|
| 获取方式 | 控制台「API 密钥」页面创建,可随时启用、禁用或删除 |
| 作用范围 | 模型、文本、图片、视频、音频和素材接口共用同一把 Key,GET 请求同样需要携带 |
| 存储要求 | 只放在服务端环境变量或密钥管理服务中,不要写入浏览器、客户端安装包或公开仓库 |
Bearer 前缀可以省略(但不建议)
实测四种写法:
| 请求头 | 结果 |
|---|---|
Authorization: Bearer <key> | 200 —— 推荐写法 |
Authorization: <key>(裸 token) | 200 —— 平台同样接受 |
authorization: bearer <key>(全小写) | 200 —— 请求头名与方案名不区分大小写 |
(完全不发送 Authorization) | 401 |
平台同时接受裸 token,因此返回 200 不代表客户端配置正确。反过来,如果某个客户端返回
401,先确认它是否漏发了整个 Authorization 头,而不是直接怀疑 Key 本身。请始终使用
Bearer 写法。
API Key 缺失、错误、被禁用或不属于当前账号时返回 HTTP 401:
{
"error": {
"code": "",
"message": "Invalid token (request id: 202609221135501066578648268d9d6uXuM5QgH)",
"type": "new_api_error"
}
}注意
code是空字符串。 鉴权失败时平台不填code,所以不要用code是否为空来判断 请求是否出错,应以 HTTP 状态码为准。message里的request id可直接取出用于提工单。
这类鉴权失败在所有接口上结构一致,message 会带上请求标识,便于排查。
响应结构
平台有三套响应结构,客户端必须同时检查 HTTP 状态码和响应体。
模型、文本、图片、视频和音频接口
成功时直接返回结果对象,失败时返回 HTTP 非 2xx 并带 error 对象:
{
"error": {
"code": "invalid_parameter",
"message": "请求参数不符合所选模型要求",
"type": "invalid_request_error",
"param": "size"
}
}视频任务查询是例外:查不到任务时返回
400,响应体是顶层{ code, message, data }结构(code为字符串task_not_exist),不是上述error对象。 详见错误码与排查。code、type、param的取值随错误类型变化,排查时以message为主,不要只匹配固定的code文本。
素材库接口
成功和失败都使用统一结构:
{ "code": 0, "data": {}, "msg": "OK" }{ "code": 401, "data": null, "msg": "API Key 无效或已失效" }失败时 HTTP 状态码与 code 一致(400 / 401 / 404 / 429 / 502 / 503)。素材审核未完成不是错误,而是 200 响应里的 status 字段(Processing / Active / Failed)。
分页
素材分组、素材列表等列表接口使用统一分页参数:
| 参数 | 位置 | 默认 | 上限 | 说明 |
|---|---|---|---|---|
page | query | 1 | — | 页码,从 1 开始 |
page_size | query | 20 | 100 | 每页条数,超出范围时按默认值处理 |
响应中的 data.total 是总条数,data.page、data.page_size 是本次生效的分页参数。请始终读取 total 判断是否还有下一页,不要用「本次返回条数」判断。
限流与重试
| 场景 | 平台行为 | 建议 |
|---|---|---|
| 请求过于频繁 | HTTP 429 | 退避后重试,不要并发重试 |
| 素材状态查询 | 轻量接口 | 5~10 秒轮询一次,只轮询同一个素材 ID |
| 视频任务查询 | 轻量接口 | 5~15 秒轮询一次,只查询原任务 ID |
| 网络中断 | 请求结果未知 | 先按任务 ID / 素材 ID 查询,确认未创建再重试 |
短暂的 5xx | 服务或能力暂不可用 | 有限次退避重试,持续失败时联系平台支持 |
只对 429 和短暂的 5xx 重试;400、401、403、404、409 属于请求或权限问题,重试不会成功。
幂等与重复提交
平台不提供跨接口的自动幂等键,请在业务侧保证只提交一次:
- 每次用户操作先在自有数据库落一条业务记录,再调用平台接口;
- 视频任务和素材提交都要保存平台返回的 ID,重试前先查询是否已创建;
- 素材处于
Processing时不要重复提交,否则会创建多份素材; - 计费以实际提交成功的任务为准,重复提交会造成重复计费。
推荐调用顺序
GET /v1/models 选择模型,确认能力与可用性
POST /api/v1/materials/groups 需要素材时创建分组
POST /api/v1/materials/assets 提交图片,保存 asset_id
GET /api/v1/materials/assets/{id} 轮询到 status 为 Active
POST /v1/video/generations 提交视频任务,用 asset://<id> 引用素材
GET /v1/video/generations/{id} 轮询任务,读取结果或错误服务端接入建议
- 为每次请求设置合理超时,并区分「超时」和「用户取消」;
- 对
429和短暂的5xx做有限次退避重试,其余错误直接返回调用方; - 保存业务请求号、模型 ID、素材 ID、任务 ID 和平台返回的请求标识,便于排查;
- 不要把 API Key 写进日志、错误上报、前端埋点或截图;
- 大文件优先使用对象存储的公开 HTTPS 地址或素材库
asset://引用,不要把大文件塞进请求体。
