接口文档
通过简洁统一的接口,将 onomeo 的 AI 模型接入你的应用,
开始构建出色的作品。
快速开始
几分钟内即可发出你的第一个接口请求。你需要一把密钥,可使用任意 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 }
}usage 中的数值即从余额扣除的数量。只计可见文字:你发送的内容加上模型回复的内容;模型作答前的推理不计费。
请求参数
调用 /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: print(chunk.choices[0].delta.content or "", end="")
流式请求的计费方式相同:最后一个数据块携带用量数值,按你发送与收到的文字计算,并按该数值扣除。
图片输入
可识别图片的模型支持在用户消息中附带图片:将文字与每张图片分别作为 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..." } }
]
}]
}当前可识别图片的模型: 正在加载模型列表…
除文字外,每个请求中的每张图片另外消耗 300 额度。一次请求最多携带 8 张图片,格式须为 PNG、JPEG、WebP 或 GIF,单张不超过 3 MB。向无法识别图片的模型发送图片时,会返回 model_no_vision 错误,且不扣除额度。图片仅转交模型服务商用于生成回答,本站不保存。
可用模型
以下为当前可调用的模型。花费一列为实测数据,并非承诺:取单次回答在 30 天内的平均花费,回答较长时花费更多,较短时更少。
| 模型 | 单次回答大致花费 |
|---|---|
| 正在加载模型列表… | |
同一份列表(含各模型的服务商,以及一天的签到能用多久)也可在模型页面查看。如需在代码中获取列表,使用密钥调用模型列表接口:
curl "/v1/models" \ -H "Authorization: Bearer YOUR_API_KEY"
额度与上限
额度按 token 计量,1 额度对应 1 token。每天签到一次即可领取,连续签到领取的数量逐日递增;在控制台完成问卷可在此基础上叠加,邀请好友双方另有奖励。
| 限制项 | 数值 |
|---|---|
| 正在加载上限数据… | |
余额可随时在控制台查看,也可在代码中查询:
curl "/api/me" \ -H "Authorization: Bearer YOUR_API_KEY"
错误码
所有失败均返回 JSON,其中含固定的 code 字段。请以 code 作为判断依据,不要依赖 message 字段,后者面向阅读,措辞可能调整。
{
"error": {
"code": "not_enough_credit",
"balance": 120,
"need": 1500,
"message": "..."
}
}| 错误码 | HTTP 状态码 | 含义 |
|---|---|---|
bad_key | 401 | 密钥无效,或该密钥已失效。 |
not_enough_credit | 402 | 余额不足以完成本次请求。返回中包含当前余额与本次请求所需的数量。 |
key_expired | 401 | 该密钥已过到期日。可在控制台延长有效期或换用其他密钥。 |
key_limit_reached | 402 | 该密钥累计用量已达其自身上限,账户余额不受影响。返回中含上限、已用与本次预估。 |
model_not_allowed | 400 | 该模型不在开放列表中。返回中附有可用模型名。 |
model_paused | 400 | 该模型已被暂停提供,恢复后会重新出现在模型列表中。返回中附有当前可用模型名。 |
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 | 429 | 该账号在本时段内的调用次数已达上限,账号下所有密钥共用此上限。响应体中的 retryAfter 为建议等待的秒数,Retry-After 响应头为同一数值。 |
network_quota | 429 | 当前网络在本时段内的调用次数已达上限。响应体中的 retryAfter 为建议等待的秒数,Retry-After 响应头为同一数值。 |
site_busy | 429 | 整个服务当前已达模型服务商的配额上限。请在 retryAfter 指定的秒数后重试。 |
upstream_failed | 502 | 模型服务商未响应。此情况不扣除额度。 |
upstream_unconfigured | 503 | 服务当前未接入任何模型服务商。 |
常见问题
可以用于正式项目吗?
不建议。这是免费公测版本,不承诺可用性,适合用于试验、原型与非关键任务。
密钥丢失后怎么办?
余额不会丢失。重新登录后在控制台创建新密钥即可,新密钥属于同一账号,余额保持不变。若怀疑旧密钥已被他人获取,可在控制台将其删除。
可以创建多把密钥吗?
可以。每个账号最多持有 10 把密钥,它们共用账号的余额与调用次数上限,增加密钥并不会增加可用的调用次数。
会保存我发送的内容吗?
通过接口(/v1/chat/completions)发起的请求不保存提问与回答内容,仅记录消耗的额度,用于扣费。对话页中的对话会随账号保存(最多 50 条,可随时删除)。无论采用哪种方式,消息都会转发给第三方模型服务商,部分服务商(尤其是免费套餐)可能保留提交的内容或将其用于改进服务。onomeo 不会将这些内容用于模型训练。
为什么返回的回答是空的?
通常是 max_tokens 设置过小。这些模型作答前会先进行一段推理,推理与回答共用同一上限。最稳妥的做法是不填该字段。