# OpenAI 兼容接口 (/docs/api/compatible/openai)



## 基础地址 [#基础地址]

<ApiBaseDomain prefix="/openai/v1" />

## 接入 [#接入]

<QuickstartTabs snippets="{&#x22;curl&#x22;:&#x22;curl https://api-origin.invalid/openai/v1/chat/completions \\\n  -H \&#x22;Authorization: Bearer $PRAXIS_API_KEY\&#x22; \\\n  -H \&#x22;Content-Type: application/json\&#x22; \\\n  -d '{\&#x22;model\&#x22;:\&#x22;deepseek-v4-flash\&#x22;,\&#x22;messages\&#x22;:[{\&#x22;role\&#x22;:\&#x22;user\&#x22;,\&#x22;content\&#x22;:\&#x22;你好\&#x22;}]}'&#x22;,&#x22;python&#x22;:&#x22;import os\n\nfrom openai import OpenAI\n\nclient = OpenAI(\n    base_url=\&#x22;https://api-origin.invalid/openai/v1\&#x22;,\n    api_key=os.environ[\&#x22;PRAXIS_API_KEY\&#x22;],\n)\n\nresp = client.chat.completions.create(\n    model=\&#x22;deepseek-v4-flash\&#x22;,\n    messages=[{\&#x22;role\&#x22;: \&#x22;user\&#x22;, \&#x22;content\&#x22;: \&#x22;你好\&#x22;}],\n)&#x22;,&#x22;typescript&#x22;:&#x22;import OpenAI from \&#x22;openai\&#x22;;\n\nconst client = new OpenAI({\n  baseURL: \&#x22;https://api-origin.invalid/openai/v1\&#x22;,\n  apiKey: process.env.PRAXIS_API_KEY,\n});\n\nconst resp = await client.chat.completions.create({\n  model: \&#x22;deepseek-v4-flash\&#x22;,\n  messages: [{ role: \&#x22;user\&#x22;, content: \&#x22;你好\&#x22; }],\n});&#x22;}" />

## 端点 [#端点]

| 方法     | 路径                                                                                                            | 说明         | 支持     |
| ------ | ------------------------------------------------------------------------------------------------------------- | ---------- | ------ |
| POST   | [`/v1/chat/completions`](/docs/api/compatible/openai/createChatCompletion)                                    | 对话         | ● 支持   |
| POST   | [`/v1/responses`](/docs/api/compatible/openai/createResponse)                                                 | 生成响应       | ● 支持   |
| GET    | [`/v1/responses/{response_id}`](/docs/api/compatible/openai/retrieveResponse)                                 | 读取响应       | ● 支持   |
| DELETE | [`/v1/responses/{response_id}`](/docs/api/compatible/openai/deleteResponse)                                   | 删除响应       | ● 支持   |
| POST   | [`/v1/responses/{response_id}/cancel`](/docs/api/compatible/openai/cancelResponse)                            | 取消响应       | ◐ 部分支持 |
| GET    | [`/v1/responses/{response_id}/input_items`](/docs/api/compatible/openai/listResponseInputItems)               | 列出响应输入项    | ● 支持   |
| POST   | [`/v1/responses/compact`](/docs/api/compatible/openai/compactResponse)                                        | 压缩响应       | ○ 未支持  |
| POST   | [`/v1/responses/input_tokens`](/docs/api/compatible/openai/countResponseInputTokens)                          | 统计输入 token | ○ 未支持  |
| POST   | [`/v1/conversations`](/docs/api/compatible/openai/createConversation)                                         | 创建会话       | ● 支持   |
| GET    | [`/v1/conversations/{conversation_id}`](/docs/api/compatible/openai/retrieveConversation)                     | 读取会话       | ● 支持   |
| POST   | [`/v1/conversations/{conversation_id}`](/docs/api/compatible/openai/updateConversation)                       | 更新会话       | ● 支持   |
| DELETE | [`/v1/conversations/{conversation_id}`](/docs/api/compatible/openai/deleteConversation)                       | 删除会话       | ● 支持   |
| POST   | [`/v1/conversations/{conversation_id}/items`](/docs/api/compatible/openai/createConversationItems)            | 创建会话条目     | ● 支持   |
| GET    | [`/v1/conversations/{conversation_id}/items`](/docs/api/compatible/openai/listConversationItems)              | 列出会话条目     | ● 支持   |
| GET    | [`/v1/conversations/{conversation_id}/items/{item_id}`](/docs/api/compatible/openai/retrieveConversationItem) | 读取会话条目     | ● 支持   |
| DELETE | [`/v1/conversations/{conversation_id}/items/{item_id}`](/docs/api/compatible/openai/deleteConversationItem)   | 删除会话条目     | ● 支持   |
| POST   | [`/v1/images/generations`](/docs/api/compatible/openai/createImage)                                           | 生成图像       | ● 支持   |
| GET    | [`/v1/models`](/docs/api/compatible/openai/listModels)                                                        | 列出模型       | ● 支持   |
| GET    | [`/v1/models/{model}`](/docs/api/compatible/openai/retrieveModel)                                             | 读取模型       | ● 支持   |
| POST   | [`/v1/embeddings`](/docs/api/compatible/openai/createEmbedding)                                               | 文本向量       | ● 支持   |
| POST   | [`/v1/videos`](/docs/api/compatible/openai/createVideo)                                                       | 创建视频       | ● 支持   |
| GET    | [`/v1/videos`](/docs/api/compatible/openai/listVideos)                                                        | 列出视频       | ● 支持   |
| GET    | [`/v1/videos/{video_id}`](/docs/api/compatible/openai/retrieveVideo)                                          | 读取视频       | ● 支持   |
| GET    | [`/v1/videos/{video_id}/content`](/docs/api/compatible/openai/downloadVideoContent)                           | 下载视频内容     | ● 支持   |
| DELETE | [`/v1/videos/{video_id}`](/docs/api/compatible/openai/deleteVideo)                                            | 删除视频       | ● 支持   |
| POST   | [`/v1/videos/{video_id}/remix`](/docs/api/compatible/openai/remixVideo)                                       | 混剪视频       | ○ 未支持  |
| POST   | [`/v1/audio/transcriptions`](/docs/api/compatible/openai/openaiAudioTranscriptionsCreate)                     | 转写音频       | ● 支持   |
| POST   | [`/v1/files`](/docs/api/compatible/openai/createFile)                                                         | 上传文件       | ◐ 部分支持 |
| GET    | [`/v1/files`](/docs/api/compatible/openai/listFiles)                                                          | 列出文件       | ● 支持   |
| GET    | [`/v1/files/{file_id}`](/docs/api/compatible/openai/retrieveFile)                                             | 检索文件       | ● 支持   |
| DELETE | [`/v1/files/{file_id}`](/docs/api/compatible/openai/deleteFile)                                               | 删除文件       | ● 支持   |
| GET    | [`/v1/files/{file_id}/content`](/docs/api/compatible/openai/retrieveFileContent)                              | 检索文件内容     | ● 支持   |
| POST   | `/v1/audio/speech`                                                                                            | 生成语音       | ● 支持   |
| POST   | `/v1/images/edits`                                                                                            | 编辑图片       | ● 支持   |

[知识库（16 个操作）](/docs/api/compatible/openai/vector-stores)：创建知识库、添加文件、批量入库与搜索。

## 不支持的端点 [#不支持的端点]

以下端点在 /openai/v1 下未提供，调用返回 404。替代流程不等同于原端点。

| 端点                       | 替代                                                |
| ------------------------ | ------------------------------------------------- |
| `/v1/moderations`        | 无替代端点                                             |
| `/v1/batches`            | 逐次调用所需模型端点                                        |
| `/v1/fine_tuning`        | 使用模型目录中已有的模型                                      |
| `/v1/assistants`         | 使用 Responses 与 Conversations 构建会话                 |
| `/v1/completions`        | 改用 chat/completions                               |
| `/v1/audio/translations` | 先用 audio/transcriptions 转写，再用 chat/completions 翻译 |
| `/v1/uploads`            | 改用 files 上传文件                                     |
| `/v1/images/variations`  | 使用 images/edits 提交图片与编辑提示词                        |

## 与官方的差异 [#与官方的差异]

* <a href="/docs/api/compatible/openai/createChatCompletion">对话</a>：未知顶层字段原样转发给同协议上游，由上游决定是否接受；已声明字段的类型与取值范围仍会校验，不合法时返回 400 并点名字段。
* <a href="/docs/api/compatible/openai/createResponse">生成响应</a>：未知顶层字段原样转发给同协议上游，由上游决定是否接受；已声明字段的类型与取值范围仍会校验，不合法时返回 400 并点名字段。
* <a href="/docs/api/compatible/openai/retrieveResponse">读取响应</a>：按 ID 读取一条已保存的响应。如果创建时 store 为 false，我们不会保存这次响应，读取会返回 404 response\_not\_found；超过保留期（默认 30 天）后读取也会返回同样的 404。
* <a href="/docs/api/compatible/openai/deleteResponse">删除响应</a>：按 ID 立即删除一条已保存的响应。如果创建时 store 为 false，我们不会保存这次响应，删除会返回 404 response\_not\_found。
* <a href="/docs/api/compatible/openai/cancelResponse">取消响应</a>：仅对以 background:true 创建、且路由到具备后台生成能力的模型的响应可用：取消是 幂等的，重复调用返回同一个终态响应；我方的取消只能停止我方对上游流的继续读取， 不能保证已发往上游的算力停止计算，用量按实际收到的部分结算。对一个非后台 （同步）响应调用 cancel：如果这个响应 id 不存在（未持久化、已过期或 id 有误）， 返回 404 object\_not\_found；如果响应存在但其来源 provider 没有声明支持 cancel 操作（我们目前没有接入任何为同步响应声明该能力的上游），返回 400 native\_responses\_operation\_unsupported。这两种情况都不是尚未实现的 501 gate。
* <a href="/docs/api/compatible/openai/listResponseInputItems">列出响应输入项</a>：列出一条已保存响应的输入项。支持 limit（1–100，默认 20）、order（asc/desc， 默认 desc，与官方一致）与基于条目 id 的 after 游标分页；has\_more/first\_id/ last\_id 均与实际返回页一致，可据此翻页且不重不漏。每个条目都带服务端签发的 id（message 为 msg\_ 前缀，function\_call/function\_call\_output/reasoning 各自 对应前缀），本次上线前已保存、尚无服务端 id 的旧数据在读取时按确定性规则补 id，不做破坏性迁移，同一游标反复读取保持稳定。以 previous\_response\_id 续接 创建的响应，其输入项列出解析后的完整输入：前序响应链已有的输入与输出条目 再加本轮自己提交的输入；若该祖先响应在我方平台未保存（例如创建时 store 为 false）或已过期删除，则只列出本轮自己提交的输入。如果创建时 store 为 false，我们不会保存这次响应，列出会返回 404 response\_not\_found。
* <a href="/docs/api/compatible/openai/compactResponse">压缩响应</a>：把响应的输入压缩成摘要，依赖 OpenAI Responses 官方的服务端存储（store）语义，我们目前还没有实现；调用会返回 501（message 为 “This platform has not implemented … yet.”，响应头 x-should-retry 为 false），不产生副作用，官方 SDK 不会重试。
* <a href="/docs/api/compatible/openai/countResponseInputTokens">统计输入 token</a>：只统计请求输入会消耗的 token 数、不生成内容，依赖 OpenAI Responses 官方的服务端存储（store）语义，我们目前还没有实现；调用会返回 501（message 为 “This platform has not implemented … yet.”，响应头 x-should-retry 为 false），不产生副作用，官方 SDK 不会重试。
* <a href="/docs/api/compatible/openai/createConversation">创建会话</a>：创建一个会话，可选携带初始 items（一次最多 20 条）与 metadata。会话按租户分区，创建者是唯一能引用它的租户。
* <a href="/docs/api/compatible/openai/retrieveConversation">读取会话</a>：按 ID 读取一个会话。不存在或属于其他租户都返回 404 conversation\_not\_found。
* <a href="/docs/api/compatible/openai/updateConversation">更新会话</a>：更新一个会话的 metadata——整体替换，不与已有 metadata 合并。
* <a href="/docs/api/compatible/openai/deleteConversation">删除会话</a>：删除一个会话。删除后该会话与其 items 都不能再被引用（包括作为 Responses create 的 conversation 参数）。
* <a href="/docs/api/compatible/openai/createConversationItems">创建会话条目</a>：向一个会话追加 items（一次最多 20 条），返回刚追加的这些 items。
* <a href="/docs/api/compatible/openai/listConversationItems">列出会话条目</a>：按创建顺序列出会话的 items，支持 limit/after/order 分页参数。
* <a href="/docs/api/compatible/openai/retrieveConversationItem">读取会话条目</a>：按 ID 读取会话里的单条 item。
* <a href="/docs/api/compatible/openai/deleteConversationItem">删除会话条目</a>：删除会话里的单条 item，返回该会话对象（不是被删除的 item）。
* <a href="/docs/api/compatible/openai/retrieveModel">读取模型</a>：返回与列表中同一条目相同的模型对象。只有声明了 OpenAI 协议的模型可见；模型 ID 可以带斜杠分隔的发布方前缀。不存在或没有声明 OpenAI 协议的模型返回 404。
* <a href="/docs/api/compatible/openai/createEmbedding">文本向量</a>：转发方式与对话（chat completions）一致，用量算在同一份计费里。 未知顶层字段原样转发给同协议上游，由上游决定是否接受；已声明字段的类型与取值范围仍会校验，不合法时返回 400 并点名字段。
* <a href="/docs/api/compatible/openai/createVideo">创建视频</a>：异步生成视频：创建任务后轮询状态，完成后下载内容。按输出秒数计费，每秒价格见 GET /model/v1/models 的 pricing.video\_second（USD/秒）。请显式选择已注册的视频模型，例如 wan2.7-t2v。
* <a href="/docs/api/compatible/openai/listVideos">列出视频</a>：列出本账号的视频任务。limit 为 1 到 100，order 为 asc 或 desc，after 必须引用存在的任务。
* <a href="/docs/api/compatible/openai/retrieveVideo">读取视频</a>：读取任务的当前状态和进度。status 为 queued 或 in\_progress 时继续轮询，failed 时查看 error，completed 后才能下载内容。任务不存在返回 404。
* <a href="/docs/api/compatible/openai/downloadVideoContent">下载视频内容</a>：任务 completed 后下载视频文件（video，MP4）或缩略图（thumbnail）；spritesheet 返回 400，index 只支持 0。任务不存在返回 404。
* <a href="/docs/api/compatible/openai/deleteVideo">删除视频</a>：删除任务及其生成的内容。任务不存在返回 404。
* <a href="/docs/api/compatible/openai/remixVideo">混剪视频</a>：未支持，调用固定返回 400（invalid\_request\_error，消息为 Video remix is not supported）；不要重试。
* <a href="/docs/api/compatible/openai/openaiAudioTranscriptionsCreate">转写音频</a>：标准请求字段；不能表达的参数返回 input\_not\_representable。
* <a href="/docs/api/compatible/openai/createFile">上传文件</a>：单文件最多 100 MB（104857600 字节）；按内容识别 PDF、Office、图片、音频、视频与 UTF-8 文本。purpose 支持 user\_data / assistants / vision；其他用途、空文件、不支持类型和超限均返回 400。不支持 Uploads 分片。只接受表单 file、purpose、expires\_after\[anchor]、expires\_after\[seconds]；其他表单字段或任何查询参数返回 400 invalid\_request\_error，消息为 "Unrecognized request argument supplied: \<字段>"，param 为该字段。
* <a href="/docs/api/compatible/openai/listFiles">列出文件</a>：只接受查询参数 after、order、limit、purpose；其他查询参数返回 400 invalid\_request\_error，消息为 "Unrecognized request argument supplied: \<参数>"，param 为该参数。

参数与字段的权威定义以 [OpenAI 官方文档](https://platform.openai.com/docs/api-reference)为准。

错误按 OpenAI 格式返回，参见[错误](/docs/api/errors)；额度与响应头参见[限流](/docs/api/rate-limits)。
