API
将你的应用接入 JEV AI。创建密钥、发送结构化问题,在自己的代码中读取结果。
让 AI 帮你完成第一次调用
将完整指令复制给具备终端执行能力的 AI 编程助手,包含本站地址、认证方式、请求示例和结果检查。切换下方问题类型后,指令也会更新。请先在执行环境中配置 JEV_API_KEY。
查看完整指令
请使用 JEV AI 的 API 执行一次示例请求,并返回真实结果。请使用终端或服务端 HTTP 工具实际执行,不要只解释操作步骤。
服务地址:https://jevai.info
文档地址:https://jevai.info/api
模型:typesafe/jev-1.13
认证:Authorization: Bearer <执行环境中的 JEV_API_KEY 值>
请求类型:Content-Type: application/json
1. 从执行环境读取 JEV_API_KEY。若未配置,先提示我在本地环境中配置,不要要求我把密钥发到聊天里。不要打印、记录密钥,也不要将其写入前端代码。如果你没有执行 HTTP 请求的工具,请说明并给出可运行代码,不要虚构调用结果。
2. 携带 Bearer 请求头调用 GET https://jevai.info/api/jev/account?page=1,检查 data.balance.ready、data.balance.pending 和 data.balance.balance。每个问题需要至少 32,000 个可用输入 Token。若服务未就绪、已有待处理任务或余额不足,说明情况并停止,不要购买额度或修改账号设置。
3. 为 requestId 生成新的 UUID,向 https://jevai.info/api/jev/run 发送且仅发送一次 POST,请求 JSON 如下(只将 requestId 替换为新生成的 UUID):
{
"requestId": "123e4567-e89b-42d3-a456-426614174000",
"model": "typesafe/jev-1.13",
"state": "我的订阅被重复扣款了,请帮我退回重复支付的款项。",
"questions": {
"decision": {
"type": "choice",
"instructions": "这条客服消息应该由哪个团队处理?",
"criteria": {
"billing": "支付、账单与退款",
"technical": "报错、故障与配置问题",
"other": "其他请求"
}
}
}
}
4. 检查 HTTP 状态和 JSON 的 code/message。完成后返回 data.id、data.status、data.result.answers、inputTokens 和 outputTokens,再查询一次账号接口获取剩余余额。必须报告真实响应,不能用文档示例数值代替。
5. 模型调用会消耗已购买的输入 Token,输出 Token 免费。不要生成新的 UUID 重复运行示例。遇到超时,先查账号历史;如确需重试,只能复用原 UUID 和完全相同的请求体,至少间隔一秒并遵守 Retry-After。复用 UUID 返回已有记录(包括待处理或已释放状态),不会重新执行任务。遇到 needs_review 或任务状态未明确时,报告记录 ID 并停止。
最后给出简洁的执行结果,始终保密 API Key。- 01
创建 API 密钥
进入 API 密钥页创建密钥。点击复制按钮或密钥前缀,即可复制完整 Key。旧版仅保存哈希的密钥无法恢复,如有需要请创建新密钥。
管理 API 密钥 - 02
准备可用 Token
API 与 Playground 共用购买的 Token 余额。创建密钥免费,调用模型前需先购买 Token 套餐。
购买 Token - 03
发送第一个请求
选择问题类型,复制示例到你的后端运行。本页不会自动执行请求,也不会消耗 Token。
查看调用示例
连接与认证
每次请求携带 Authorization: Bearer YOUR_API_KEY。以下示例从你的服务端调用本站 JSON API,无需 OpenAI SDK 或浏览器登录 Cookie。
- 服务地址
- https://jevai.info
- 模型
- typesafe/jev-1.13
export JEV_API_KEY="YOUR_API_KEY"在本地终端将 YOUR_API_KEY 替换为完整密钥。密钥只放在后端环境变量中,不要写入前端代码或公开仓库。此密钥仅适用于本站,不能直接用于模型供应商。
发起模型请求
POST /api/jev/runchoice 从 2–255 个选项中选择类别。此示例判断一条客服消息应该分配给哪个团队。
使用兼容 Bash 的终端,需安装 curl 7.76+ 和 uuidgen。先在同一终端设置 JEV_API_KEY。
REQUEST_ID="$(uuidgen)"
curl --fail-with-body 'https://jevai.info/api/jev/run' \
--request POST \
--header "Authorization: Bearer $JEV_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"requestId": "'"$REQUEST_ID"'",
"model": "typesafe/jev-1.13",
"state": "我的订阅被重复扣款了,请帮我退回重复支付的款项。",
"questions": {
"decision": {
"type": "choice",
"instructions": "这条客服消息应该由哪个团队处理?",
"criteria": {
"billing": "支付、账单与退款",
"technical": "报错、故障与配置问题",
"other": "其他请求"
}
}
}
}'每个新任务使用新的 UUID requestId;重试同一任务时必须复用原 requestId 和完全相同的内容。POST /api/jev/run 会执行模型并可能消耗 Token。
查看响应示例
以下为示意数据,不是真实调用结果。code: 0 表示请求已被处理,还需检查 data.status。当状态为 completed 且 result 不为空时,从 data.result.answers 读取答案。重复请求可能返回仍在处理或已释放的记录。
{
"code": 0,
"message": "ok",
"data": {
"id": "example-run-id",
"status": "completed",
"inputTokens": 180,
"outputTokens": 24,
"questionCount": 1,
"elapsedMs": 850,
"createdAt": "2026-09-28T12:00:00.000Z",
"result": {
"model": "typesafe/jev-1.13",
"answers": {
"decision": {
"type": "choice",
"choice": "billing"
}
},
"usage": {
"input_tokens": 180,
"output_tokens": 24
},
"elapsedMs": 850
}
}
}请求参数
| 字段 | 类型/取值 | 说明 |
|---|---|---|
| requestId | UUID | 必填。用于标识一次任务的 UUID;以同一内容重试时避免重复执行模型。 |
| model | typesafe/jev-1.13 | 可选,默认使用此模型;不接受其他模型名称。 |
| state | string | string[] | object | 必填,所有问题共用的上下文。字符串长度为 1–16,000 个字符;字符串数组包含 1–100 项;也可传 JSON 对象。 |
| questions | object | 必填,包含 1–8 个命名问题。问题名以英文字母开头,仅含英文字母、数字和下划线,最多 64 个字符。 |
| questions.*.type | choice | score | noul | 每个问题必填。可切换上方问题类型查看对应示例。 |
| questions.*.instructions | string | 必填。用 1–16,000 个字符明确说明需要做出的判断。 |
| questions.*.criteria | object | string[] | choice:含 2–255 个选项的描述对象,描述可为 null;score:含 2–10 项的有序描述数组;noul:省略此字段。 |
完整 JSON 请求体最多 32 KiB。顶层或问题中包含未定义字段会被拒绝。API 路径不加 /zh 语言前缀。
查询余额与调用记录
curl --fail-with-body 'https://jevai.info/api/jev/account?page=1' \
--header "Authorization: Bearer $JEV_API_KEY"该接口不执行模型。data.balance.balance 是可用 Token,data.balance.reserved 是预留 Token。data.history.items 每页最多返回 20 条调用记录;hasMore 为 true 时可递增 page 继续查询。
查看 Token 用量Token 如何扣除
执行前,每个问题预留 32,000 个输入 Token,因此余额需覆盖该预留额度。完成后按实际输入用量结算,未使用的预留额度释放,输出 Token 免费。待核查请求的预留额度会保留至处理完成。
避免重复执行的重试方式
请求间至少间隔一秒,同一账号同时只执行一个任务。超时后先查询记录,仅用相同 UUID 和原内容重试。复用 UUID 会返回已有记录,不会重新执行已释放的任务;确认原任务已释放后,才可新建任务。出现 needs_review 或任务长时间未完成时,提供调用记录 ID 联系支持,不要发送 API 密钥。
常见错误与处理
错误响应会返回非成功 HTTP 状态。JSON 中 code 为 -1,message 包含错误码。请同时检查 HTTP 状态与响应内容。
| HTTP | 错误码 | 处理方式 |
|---|---|---|
| 400 | invalid_request | 检查 JSON 结构、criteria、UUID 格式以及请求体是否超过 32 KiB。 |
| 401 | unauthorized | 在 Bearer 请求头中使用完整且有效的本站 API Key;密钥前缀、已删除密钥和供应商密钥均无效。 |
| 402 | insufficient_tokens | 购买 Token 或等待上一次请求释放预留额度,检查可用余额与预留余额。 |
| 403 | invalid_origin | 这是网页登录调用的同源校验。服务端集成应携带有效的 Bearer Key,不要使用浏览器 Cookie。 |
| 409 | idempotency_conflict | requestId 已用于不同输入。重试需保留原始内容;确实是新任务时才使用新 UUID。 |
| 409 | request_pending / account_busy | 账号存在未完成任务或正在更新。先查询记录并稍后重试,不要并行发起模型请求。 |
| 429 | rate_limited | 按 Retry-After 响应头指定的时间等待,再重试同一任务。 |
| 502 / 503 | needs_review / upstream_rejected / service_unavailable / account_unavailable | 重试前先查询记录。needs_review 需要人工核查,请勿另建任务重复执行;临时服务不可用时稍后再试。 |