快速开始
几分钟内即可发出你的第一个接口请求。你需要一把密钥,可使用任意 HTTP 客户端或兼容 OpenAI 的 SDK。
/v1/chat/completions调用 onomeo 的任一模型,生成一次对话回复。
本页各项功能均有可直接运行的示例,按 Python、Node、命令行分别提供,代码位于 GitHub 仓库。
认证
在 Authorization 请求头中携带密钥。请妥善保管密钥,切勿将其写入客户端代码。
Authorization: Bearer YOUR_API_KEY余额保存在账号中,密钥丢失后可重新登录,在「我的」页创建新密钥。但密钥本身仍属于敏感信息:不要提交到代码仓库,也不要对外分享。同一密钥在多处同时使用将被直接停用。
密钥泄露
当你的某把密钥出现在 GitHub 的公开仓库中时,GitHub 会在数秒内通知本站,该密钥随即被停用,并向账号绑定的邮箱发送邮件,说明是哪一把密钥、在何处被发现。
被停用的密钥立即失效,仍携带该密钥的请求一律返回 401 未授权。账号、余额及其余密钥不受影响。
后续处理
- 在「我的」页新建一把密钥,替换应用中正在使用的密钥。
- 从代码中移除旧密钥。仅删除该行并不足够:密钥仍留存于仓库的历史记录中,需重写历史记录,或将该密钥视为已永久公开。
- 不要将密钥写入源代码。请从环境变量或密钥管理服务中读取,并将存放密钥的文件写入 .gitignore。
自行发现泄露时
可在「我的」页自行停用该密钥,停用立即生效,随后新建一把替换。若怀疑该密钥已被他人使用,请联系我们,本站可与你一同核对该密钥的调用记录。
对话接口
向模型发送一组消息,获取生成的回复。这是对话类 AI 的核心接口,请求与返回结构与 OpenAI 保持一致。
返回结构
{
"model": "MODEL_ID",
"choices": [{
"message": { "role": "assistant",
"content": "..." }
}],
"usage": { "total_tokens": 150 }
}当前计费规则读取中,请在发送前确认模型价格。
免费账号通过接口获得的回答,末尾附有「— via onomeo.com」一行;账号有余额时不附。调用工具的回答、指定格式的回答和整段为 JSON 的回答不附。该行不计入用量;使用自己的服务商密钥发起的调用按原样返回。
请求参数
调用 /v1/chat/completions 时常用的参数如下。
| 参数 | 类型 | 说明 |
|---|---|---|
model | string | 模型页面当前列出的模型 ID,需完全一致。 |
messages | array | 由 role 与 content 组成的消息对象数组。 |
temperature | number | 控制随机性。设为 0.0 可获得确定性输出。 |
max_tokens | integer | 正在读取当前输出限制与计费规则。 |
stream | boolean | 是否以流式返回(默认 false)。 |
import requests response = requests.post( "/v1/chat/completions", headers={"Authorization": "Bearer YOUR_API_KEY"}, json={"model": "MODEL_ID", "messages": [ {"role": "user", "content": "Hello!"} ]} ) print(response.json())
流式返回
将 stream 设为 true 即可边生成边返回(server-sent events),格式与 OpenAI 接口一致,各家官方客户端均直接支持。
from openai import OpenAI client = OpenAI(api_key="YOUR_API_KEY", base_url="/v1") stream = client.chat.completions.create( model="MODEL_ID", messages=[{"role": "user", "content": "Hello!"}], stream=True, ) for chunk in stream: if chunk.choices: print(chunk.choices[0].delta.content or "", end="")
流式请求与非流式请求采用相同的计费规则。按 token 计费的模型包含服务商报告的输入、输出及模型思考用量;usage 中的数值不是美元扣费金额。最终费用请查看「计费与上限」及用量记录。
图片输入
可识别图片的模型支持在用户消息中附带图片:将文字与每张图片分别作为 content 数组中的一项,图片使用 base64 编码的 data URL。
{
"model": "MODEL_ID",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this picture?" },
{ "type": "image_url",
"image_url": { "url": "data:image/jpeg;base64,/9j/4AAQ..." } }
]
}]
}当前可识别图片的模型: 正在加载模型列表…
当前计费规则读取中,请在发送前确认模型价格。
其他接口
同一把密钥还可以调用下列接口,按其他服务商请求格式编写的工具也能直接接入本站。以下接口均使用 POST 方法;除表中另有说明外,密钥均以 Bearer 形式放在 Authorization 请求头中。
| 接口 | 用途 |
|---|---|
/ | Anthropic 格式,供 Claude Code 等只支持该格式的工具使用。密钥也可放在 x-api-key 请求头中。可调用本站的付费模型(限已充值的账号)和使用自有密钥的模型,不提供免费模型。 |
/ | OpenAI Responses 格式,Codex 使用此格式。可调用的模型与对话接口相同。 |
/ | Google Gemini 格式,供 Gemini CLI 等只支持该格式的工具使用:支持 generateContent、streamGenerateContent(加 alt=sse 参数即以服务器推送事件返回)和 countTokens,模型名写在路径中;GET /v1beta/models 返回模型列表。密钥也可放在 x-goog-api-key 请求头或 key 查询参数中。 |
/ | 旧版文本补全格式。prompt 作为一条用户消息交给模型,回答写在 text 字段中返回。每次请求仅限一条 prompt,不支持 echo 和 logprobs。 |
/ | 将文本转换为向量,用于检索和知识库。可用模型:加载中。每次请求最多 2,048 条输入;仅 gemini-embedding-001 支持 dimensions;encoding_format 可为 float 或 base64。 |
/ | 按与查询的相关程度为文档排序,请求字段与 Jina、Cohere 相同:model、query、documents、top_n、return_documents。可用模型:加载中。 |
/ | 将语音转换为文字。音频以 multipart 表单中名为 file 的字段上传,不超过 25 MB;response_format 可为 json、text 或 verbose_json。可用模型:加载中。 |
/ | 使用当前可用模型生成图片,价格以模型列表为准。图片生成并保存成功后才按张从余额扣费,生成失败不收费。n 为张数;size 须为该模型支持的尺寸(如 1024x1024);response_format 可为 url 或 b64_json。生成的图片保存在作品页「我的」图库中。 |
/ | 一句话生成带声音的短视频,按秒从余额扣费。详见下方「视频」。 |
视频
POST /v1/videos 根据一句话生成带声音的短视频。请求体为 JSON,字段如下:
| 字段 | 说明 |
|---|---|
model | 本节末尾表格中的视频模型。 |
prompt | 描述视频内容的一句话。 |
seconds | 时长(秒),须为该模型提供的时长之一。 |
size | 可选。宽 x 高,如横屏 "1280x720"、竖屏 "720x1280"。 |
resolution | 可选,可代替 size:该模型提供的分辨率之一,如 "480p" 或 "720p"。 |
aspect_ratio | 可选,与 resolution 一同使用:"16:9" 或 "9:16"。 |
first_frame | 可选,仅限支持的模型:视频开始的画面,为 data:image/…;base64 字符串。 |
last_frame | 可选,仅限支持的模型,且须同时提供 first_frame:视频结束的画面,格式同上。 |
reference_images | 可选,仅限支持的模型:图片数组,视频将参照图中的人物、物品和风格,格式同上。不能与 first_frame 或 last_frame 同时使用。 |
curl "/v1/videos" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "MODEL_ID", "prompt": "A lighthouse on a cliff at dusk, waves breaking below", "seconds": 5, "size": "1280x720" }'
接口会立即返回,内容包括视频编号、状态 in_progress 和进度 0:
{
"id": "video_abc123",
"object": "video",
"model": "MODEL_ID",
"status": "in_progress",
"progress": 0,
"created_at": 1760500000,
"seconds": 5,
"size": "1280x720"
}之后反复请求 GET /v1/videos/{id},直到 status 变为 completed(返回中另含 url 和 completed_at)或 failed(返回中含 error,内有 code 与 message)。生成可能需要数分钟,请持续查询原任务状态,不要重复提交。GET /v1/videos/{id}/content 用于下载 MP4 文件。
curl "/v1/videos/video_abc123" \ -H "Authorization: Bearer YOUR_API_KEY" curl -L "/v1/videos/video_abc123/content" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o video.mp4
视频按秒从余额扣费,单价取决于分辨率,仅在视频生成成功后扣费;生成失败不收费。当前可用的模型与价格:
| 模型 | 时长 | 每秒价格 | 可提供的图片 |
|---|---|---|---|
| 正在加载列表… | |||
可用模型
以下为当前可调用的模型。免费模型不收费,按调用次数限制;其余模型的花费为实测数据,并非承诺:取单次回答在 30 天内的平均花费,以美元计,回答较长时花费更多,较短时更少。
模型由不同第三方服务商提供,但请求格式一致,切换模型只需修改代码中的模型名。模型列表可能随时调整,请勿将模型名硬编码在代码中,建议运行时从接口读取。
| 模型 | 单次回答大致花费 |
|---|---|
| 正在加载模型列表… | |
同一份列表(含各模型的服务商)也可在模型页面查看。如需在代码中获取列表,使用密钥调用模型列表接口:
curl "/v1/models" \ -H "Authorization: Bearer YOUR_API_KEY"
计费与上限
当前计费规则读取中,请在发送前确认模型价格。
各模型的价目见价格页
| 限制项 | 数值 |
|---|---|
| 正在加载上限数据… | |
余额可随时在「我的」页查看,也可在代码中查询。返回的 balance 为本站内部计量单位,除以 GET /api/info 中的 money.unitsPerUsd 即为美元:
curl "/api/me" \ -H "Authorization: Bearer YOUR_API_KEY"
错误码
所有失败均返回 JSON,其中含固定的 code 字段。请以 code 作为判断依据,不要依赖 message 字段,后者面向阅读,措辞可能调整。错误返回中的数量以本站内部计量单位表示;带有 need 或 balance 时,另附 needUsd 或 balanceUsd,为同一数量的美元值。原样重发仍会失败时(如密钥无效、余额不足、份额用完),响应另带 x-should-retry: false 头;仅 408、409、429 与 5xx 适合重试。遇到拒绝仍会重发的工具(Codex、omp,以及被拒后几秒内原样重发的流式请求)会收到一条写明原因的普通回复,以便其停止重发。
{
"error": {
"code": "not_enough_credit",
"balance": 6000,
"balanceUsd": 0.01,
"need": 15000,
"needUsd": 0.025,
"reservation": true,
"message": "Insufficient balance: the reservation ceiling for this request is $0.025 and your available balance is $0.01. Top up or reduce the request size and output limit."
}
}| 错误码 | HTTP 状态码 | 含义 |
|---|---|---|
bad_key | 401 | 密钥无效,或该密钥已失效。 |
not_enough_credit | 402 | 余额不足以完成本次请求,仅出现在 Claude、GPT 等付费模型上。返回中包含当前余额(balance)与本次请求所需的数量(need),并附对应的美元值 balanceUsd 与 needUsd。reservation 为 true 时,need 表示未计缓存折扣、包含输入和输出上限的保守预留额;实际费用按确认用量结算。本次请求未执行,未扣费。若存在可选方案,另含 ways:免费模型不扣余额(freeOk,仅说明计费方式,不代表此刻仍有免费模型的调用次数)、新建对话并仅发送最后一条消息所需的数量(freshNeed)。 |
pricing_unavailable | 503 | 当前模型价格暂时无法确认,或其计费已暂停等待核实。请求被拒绝且不扣费,请选择其他可用模型。 |
billing_confirmation_wait | 429 | 连续多次付费请求在用量确认前取消,暂时无法继续提交付费请求。本次拒绝不扣费,请按 retryAfter 指定的秒数等待。 |
unsupported_billing_mode | 400 | 当前文字模型价格仅涵盖文字及图片输入;音频、视频及服务商托管工具尚无对应计价,因此拒绝该请求。 |
invalid_billing_request | 400 | 输出上限无效。填写 max_tokens 或 max_completion_tokens 时,数值须为正整数。 |
premium_daily_cap | 402 | 该账号今日在 Claude、GPT 等大模型上的使用已达每日上限,未扣费。返回中含 spent(今日已用)、cap(上限)、need(本次预估)与 buyer(是否已充值)。 |
coding_buyers_only | 402 | DeepSeek 编程专线仅向已充值的账号开放,未扣费。响应体中的 buyUrl 为充值地址。 |
premium_buyers_only | 402 | Claude、GPT 等大模型仅向已充值的账号开放,未扣费。返回内容中带有充值地址 buyUrl。网页奖励次数按各自规则使用,不适用于接口调用。 |
key_expired | 401 | 该密钥已过到期日。可在「我的」页延长有效期或换用其他密钥。 |
key_limit_reached | 402 | 该密钥累计用量已达其自身上限,账户余额不受影响。返回中含上限、已用与本次预估。 |
model_not_allowed | 400 | 该模型不在开放列表中。返回中附有可用模型名。 |
model_paused | 400 | 该模型已被暂停提供,恢复后会重新出现在模型列表中。返回中附有当前可用模型名。由本站付费的大模型在本站于模型服务商处的余额用完时会一并暂停,此时返回中另带 held: true。 |
model_no_vision | 400 | 请求中含有图片,但该模型无法识别图片。请换用可识别图片的模型,或移除图片。 |
too_many_images | 400 | 请求携带的图片超过上限(8 张)。 |
bad_image | 400 | 请求中的图片不是 PNG、JPEG、WebP 或 GIF 格式的 data URL,或超过 3 MB。 |
request_too_large | 413 | 请求体超过 8 MB。 |
ip_limit | 429 | 当前网络今日新建的账号数已达上限,在登录时返回。 |
too_fast | 429 | 该账号请求过于频繁。响应体中的 retryAfter 为建议等待的秒数,Retry-After 响应头为同一数值。 |
account_quota | 403 | 该账号在本时段内免费模型的调用次数已达上限,或剩余次数不足以发送该句(较长的一句按长度折算为多次,计法见「计费与上限」);账号下所有密钥共用此上限,Claude、GPT 等大模型不计入。返回中带 retryAfter(建议等待的秒数,Retry-After 响应头为同一数值)和 max(本时段上限);该句需要不止 1 次时另带 need(该句所需次数)和 left(本时段剩余次数)。若 need 超过 max,等待后也无法发送,提示会写明该句过长,请缩短对话或新建对话。开放充值期间,未充值的账号另会收到 codingModels(DeepSeek 编程专线的模型名,按用量从余额扣除,不计入此上限)和 buyUrl(充值地址)。 |
network_quota | 403 | 当前网络在本时段内免费模型的调用次数已达上限,或剩余次数不足以发送该句;Claude、GPT 等大模型不计入。返回中带 retryAfter(建议等待的秒数,Retry-After 响应头为同一数值)和 max(本时段上限);该句需要不止 1 次时另带 need(该句所需次数)和 left(本时段剩余次数)。若 need 超过 max,等待后也无法发送,提示会写明该句过长,请缩短对话或新建对话。开放充值期间,未充值的账号另会收到 codingModels(DeepSeek 编程专线的模型名,按用量从余额扣除,不计入此上限)和 buyUrl(充值地址)。 |
site_busy | 429 / 403 | 全站在本时段内免费模型的调用次数已达上限,或剩余次数不足以发送该句;Claude、GPT 等大模型不受影响。返回中带 retryAfter(建议等待的秒数,Retry-After 响应头为同一数值),不公开全站上限与剩余次数。若该句超过全站整个时段的上限,返回 403,等待后也无法发送,提示会写明该句过长,请缩短对话或新建对话。开放充值期间,未充值的账号另会收到 codingModels(DeepSeek 编程专线的模型名,按用量从余额扣除,不计入此上限)和 buyUrl(充值地址)。 |
premium_busy | 429 | Claude、GPT 等大模型上仍有其他回答在进行,本次请求等待约 10 秒后仍未进入处理。当日预算并未用完,未扣费。响应体中的 retryAfter 为建议等待的秒数,Retry-After 响应头为同一数值。 |
upstream_failed | 503 | 模型服务商未响应。此情况不扣费。 |
think_overrun | 503 | 模型将输出上限全部用于思考,未生成回答。对于可关闭思考的免费模型,本站将先自动关闭思考并重新请求一次,仍无回答时才返回此错误;不扣费,调用次数退回。可调大 max_tokens、拆分任务,或更换模型。流式请求中此错误出现在 [DONE] 之前。 |
content_filtered | 400 | 模型服务商的内容审核拦截了本次请求,未返回回答。不扣费,调用次数退回。可调整措辞,或更换模型。流式请求中此错误出现在 [DONE] 之前。 |
content_blocked | 422 | 最后一条用户消息不符合本站的内容政策(onomeo.com/content-policy),未发送给任何模型。不扣费,也不计调用次数。 |
upstream_unconfigured | 503 | 服务当前未接入任何模型服务商。 |
premium_budget_exhausted | 403 | Claude、GPT 等大模型的全站预算每日分四批发放(UTC 00:00、06:00、12:00、18:00),前一批未用完的部分顺延至下一批。当前一批已用完时返回,恢复时刻为下一批发放时;当日预算全部用完时,于次日 UTC 00:00 恢复。响应体中的 resetAt 为恢复时刻(ISO 8601),retryAfter 为距恢复的秒数,Retry-After 响应头为同一数值。未扣费。如有开放的免费模型,其调用限制独立计算。已充值的账号不受分批限制,仅在当日预算全部用完时收到此错误。前三批中,未充值的账号在每批用去七成时即收到此错误,此时响应体另带 reserved: true 与充值地址 buyUrl。 |
premium_request_budget | 403 | 模型服务商当日剩余预算不足以预留本次请求的最高费用,未扣费。此错误仅拒绝本次请求,不会暂停其他大模型请求。可缩短对话或选择费用更低的模型;服务商花费上限仍然有效。 |
coding_line_out | 403 | DeepSeek 编程专线暂时停用:本站在 DeepSeek 的余额偏低,或专线当日的花费已达上限。未扣费。本站向 DeepSeek 补充余额后或次日(UTC)恢复,也可以先更换其他模型。 |
draw_daily_limit | 429 | 由画图页面自身的请求(POST /api/draws)返回,/v1 接口不会返回。该账号今日的免费画图张数已用完,或剩余张数不足以完成本次请求,此时整批不生成。返回中带 today(used 为今日已画张数,max 为每日上限)与 resetsAt(下一个 UTC 零点,ISO 8601)。使用自己的服务商密钥画图、使用按张收费的模型画图,均不占张数。 |
常见问题
可以用于正式项目吗?
不建议。这是公测版本,不承诺可用性,适合用于试验、原型与非关键任务。
密钥丢失后如何处理?
余额不会丢失。重新登录后在「我的」页创建新密钥即可,新密钥属于同一账号,余额保持不变。若怀疑旧密钥已被他人获取,可在「我的」页将其删除。
可以创建多把密钥吗?
可以。每个账号最多持有 10 把密钥,它们共用账号的余额与调用次数上限,增加密钥并不会增加可用的调用次数。
会保存我发送的内容吗?
通过接口发起的请求,本站保存每次请求与回答的摘录(系统提示词前 1000 字、最后一条用户消息与回答各前 4000 字,每个账号最近 100 次、不超过 30 天),站方可在管理后台查看;另记录用量,用于计费与调用次数统计。网页对话会随账号保存(最多 50 条,可随时删除)。无论采用哪种方式,消息都会转发给第三方模型服务商,部分服务商(尤其是免费套餐)可能保留提交的内容或将其用于改进服务。onomeo 不会将这些内容用于模型训练。
是否支持图片生成、视频、语音或向量?
支持。图片生成使用 POST /v1/images/generations,向量、重排和语音转文字各有对应接口(见「其他接口」),视频生成使用 POST /v1/videos(见「视频」)。暂不提供文字转语音,函数调用也不保证所有模型都可用。
为什么返回的回答为空?
正在读取当前输出限制与计费规则。
Roo Code
OpenCode
Aider
Zed
VS Code
Pi
Cherry Studio
Qwen Code
Jan