OpenAPI 与 Schema 合同
查看 Rivya API v1 的 schema 来源、兼容规则、公共字段和只读 OpenAPI JSON 合同。
最近审阅于 2026/05/11
Rivya API v1 在这里提供只读 schema 合同:
https://rivya.ai/api/v1/openapi.json这个 route 只输出公开合同。它不会读取用户 session 数据,不会提交模型任务,也不会暴露私有账户数据。
合同来源
合同来自:
- 公共 API 请求 schema
- 公共错误码
- 公共 API 模型参考层
/api/v1/models使用的同一模型目录
模型列表是动态的。不要让集成依赖人工写死的模型数量。
版本策略
当前 API 版本是 v1。
兼容性变更可以包括:
- 给
/api/v1/models增加模型 - 增加可选响应字段
- 给某个模型增加可选请求参数
- 增加新的公共错误码
破坏性变更需要新版本或明确迁移路径。
公共字段边界
公共 schema 字段使用公开命名:
idstatusmodelsession_idmessageusagereserved_creditsfinal_creditscreated_atupdated_atresulterror
不要依赖内部任务存储字段。它们不是公共合同的一部分。
请求 Schema
POST /api/v1/generations 接受:
model:必填,公共模型 IDprompt:可选字符串,很多模型实际需要params:可选对象,放模型专属参数client_request_id:可选字符串,用于你的追踪 ID
模型专属 params 见 模型 API Reference。
/api/v1/files 返回的参考素材应放在 params.referenceMediaItems 中。schema 会说明 url、kind、可选 name、可选 mimeType、可选 durationSeconds 和可选 durationToken。POST /api/v1/generations 不接受顶层 files 字段。
POST /api/v1/files 接受 multipart form data,字段包括 file、kind、可选 model 和可选 client_request_id。响应结构是 PublicApiFile。GET /api/v1/files/{fileId} 会返回该 API 账户名下文件的同一套公共元数据。
POST /api/v1/chat/completions 接受 model、message、可选 session_id、可选控制项、可选 Files API file_id 附件和可选 client_request_id。它返回一条完整的非 streaming assistant message。
POST /api/v1/chat/completions/stream 使用同一套 request schema,并返回 text/event-stream,事件包括 session.created、message.delta、message.completed、usage.completed、heartbeat、error 和 done。Chat API v1 不接受 raw messages 数组。
响应 Schema
OpenAPI 输出会记录这些公共响应结构:
ModelList,用于GET /api/v1/modelsPublicApiModel和ModelParam,用于模型选择和参数表单PublicApiFile,用于POST /api/v1/files和GET /api/v1/files/{fileId}ReferenceMediaItem,用于带文件引用的生成参数PublicGeneration,用于创建任务和查询状态响应GenerationResult和GenerationError,用于已完成任务ChatCompletionRequest、ChatCompletion、ChatSession、ChatMessage、ChatUsage、ChatCredits和 Chat stream event schemas,用于 Chat APICreditBalance,用于GET /api/v1/creditsWebhookEndpoint、WebhookEvent、WebhookDelivery和WebhookTestResult,用于签名 API webhooksPublicApiError,用于稳定错误响应
这份 schema 可以用于客户端校验和内部集成测试。TypeScript SDK beta 继续受这份 schema 约束。
示例治理
文档中的 curl、JavaScript 和 Python 示例使用同一套公共字段:
Authorization: Bearer rvya_sk_...Idempotency-Keymodelpromptmessagesession_idparamsclient_request_id
Chat 示例还会使用:
chat:createchat:readfile_id
Webhook 示例还会使用:
Rivya-Webhook-SignatureRivya-Webhook-Timestampwebhooks:manage
当模型参数变化时,先更新模型目录和 public serializer。文档和调试器应该消费同一层公共数据,而不是复制另一张表。