错误

API 使用标准 HTTP 状态码并返回一致的错误响应体。所有错误包含机器可读的错误码和人可读的消息。

错误响应格式

所有错误返回包含 error 字段的 JSON 对象,包括错误码、消息和 HTTP 状态。

HTTP 状态码

状态码含义
200成功
400错误请求——请求参数无效或请求体格式错误
401未授权——API 密钥无效或缺失
402积分不足——账户余额不足以完成本次请求
403禁止访问——权限不足
404未找到——资源不存在
409冲突——资源已存在(如邮箱已注册)
429请求过多——超出速率限制
500内部服务器错误

错误码

错误码HTTP 状态码描述
BAD_REQUEST400请求体格式错误或缺少必填字段
UNAUTHORIZED401API 密钥无效、缺失或已被撤销
INSUFFICIENT_CREDITS402账户积分不足,请充值后重试
FORBIDDEN403没有权限访问该资源
NOT_FOUND404请求的资源未找到
CONFLICT409资源冲突(如重复注册)
RATE_LIMIT_EXCEEDED429已超出速率限制,请根据 Retry-After 头等待后重试
MODEL_NOT_FOUND400指定的模型不存在或未激活,请通过 GET /v1/models 查看可用模型列表
UPSTREAM_ERROR502上游服务(搜索、引用检测等)返回错误或超时
PROVIDER_ERROR502LLM 提供商返回错误(如内容过滤、上下文过长等)
BILLING_ERROR500计费系统在扣费/结算时发生错误
SEARCH_FAILED500论文搜索执行失败
ANALYSIS_FAILED500论文分析执行失败
INTERNAL_ERROR500服务端发生意外错误

示例

import requests

response = requests.post(
    "https://api.qinyanai.com/v1/paper-search/google",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"query": "machine learning"}
)

if response.status_code != 200:
    error = response.json()["error"]
    print(f"Error {error['code']}: {error['message']}")
else:
    data = response.json()
    print(f"Found {len(data['data'])} papers")
Response
{
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Insufficient credits: available=0.50, required=1.00",
    "detail": null
  }
}