API 文档 V2

API V2 的错误与重试

处理 GenderAPI.io V2 的 Problem Details、验证错误、速率限制和计费不确定的情况。了解重试的费用,以及何时联系支持团队。

错误与 HTTP 状态码

应用错误使用 application/problem+json(RFC 9457)。请根据稳定的 code 和 action 进行分支处理,而不是依据供人阅读的 detail。验证错误会在 errors 中包含 JSON Pointer 位置。联系支持团队时请附上 request_id。代理或传输故障可能返回不同的响应体,因此解析 JSON 之前请先检查 Content-Type。

下面的合成 422 示例展示了计费前出现的电子邮箱地址语法错误。公开的错误目录列出了每个 code、状态、说明和建议的操作。

HTTP 状态常见含义下一步
400 / 413 / 415JSON 格式错误、请求体过大或媒体类型不受支持。修正请求。
401 / 403访问被拒绝、账户受限或积分不足。检查 code;修正访问方式,或补充积分 / 等待试用重置。
422输入无效或选项互不兼容。修正 errors 中指出的字段。
404 / 405未知路由或不支持的 HTTP 方法。检查端点路径和 Allow 响应头。
429速率或并发限制。等待 Retry-After 指定的时间后再发送下一个请求。
500服务器意外故障。附上 request_id 联系支持团队;重试前请检查计费。
502 / 503 / 504服务提供方、依赖服务、计费或超时故障。重试前检查 code、action 和 billing_status。
说明性 JSON 响应
{
  "type": "urn:genderapi:problem:validation_error",
  "title": "validation error",
  "status": 422,
  "detail": "A valid email address is required.",
  "instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
  "code": "validation_error",
  "request_id": "11111111-1111-4111-8111-111111111111",
  "documentation": "https://api.genderapi.io/api/v2/errors",
  "action": "correct_request",
  "errors": [
    {
      "pointer": "/value",
      "message": "Invalid email address."
    }
  ],
  "meta": {
    "request_id": "11111111-1111-4111-8111-111111111111",
    "duration_ms": 12,
    "access": {
      "mode": "ip_trial",
      "reason": "api_key_missing"
    },
    "usage": {
      "charged_credits": 0,
      "remaining_credits": null,
      "billing_status": "not_charged",
      "resets_at": "2026-09-26T12:00:00.000Z",
      "limit": 10,
      "period_seconds": 86400
    }
  }
}

错误响应字段

字段类型可为 null示例说明
typestring否"urn:genderapi:problem:validation_error"标识问题类型的 URI。
titlestring否"validation error"供人阅读的简短错误标题。
statusinteger否422HTTP 状态码。
detailstring否"The request does not match the schema."对本次具体失败的说明。
instancestring否"urn:uuid:550e8400-e29b-41d4-a716-446655440000"失败请求的标识符。
codestring否"validation_error"稳定的机器可读错误代码。
request_idstring否"550e8400-e29b-41d4-a716-446655440000"本次 HTTP 尝试的唯一标识符,也会通过 X-Request-ID 返回。
documentationstring否"https://api.genderapi.io/api/v2/errors"错误目录的链接(如有)。
actionstring否"correct_request"建议的恢复操作;错误目录中有定义时提供。
errorsarray<object>否[{"pointer":"/value","message":"must NOT have fewer than 1 characters"}]验证问题(如有)。每项包含 pointer 和 message。
errors[].pointerstring否"/value"指向无效输入的 JSON Pointer。
errors[].messagestring否"must NOT have fewer than 1 characters"对验证问题的说明。

访问、计费与请求元数据

字段类型可为 null示例说明
meta.request_idstring否"550e8400-e29b-41d4-a716-446655440000"本次 HTTP 尝试的唯一标识符,也会通过 X-Request-ID 返回。
meta.duration_msinteger否42请求处理时间(毫秒)。
meta.access.modestring否"api_key"api_key、ip_trial 或 unauthenticated。使用付费账户时,请确认值为 api_key。
meta.access.reasonstring是null转为试用的原因:api_key_missing、api_key_invalid 或 api_key_not_found;其他情况为 null。
meta.usage.charged_creditsinteger是1净扣除的积分。扣费前或全额退款确认后为零;计费未确认时为 null。
meta.usage.remaining_creditsinteger是99操作完成时的余额。可能为负数;不可用或计费未确认时为 null。
meta.usage.billing_statusstring否"confirmed"not_charged、confirmed 或 unconfirmed。重试失败的预测前请检查此字段。
meta.usage.resets_atstring是"2026-09-27T12:00:00.000Z"IP 试用的重置时间,UTC(ISO 8601);API 密钥账户或时间未知时为 null。
meta.usage.limitinteger是10IP 试用额度;API 密钥账户为 null。
meta.usage.period_secondsinteger是86400IP 试用周期(秒);API 密钥账户为 null。

重试与计费

每个预测请求都是一次新操作,再次发送相同的请求也是如此。每个请求都适用正常的积分规则。系统没有重复请求保护,因此在连接中断或结果未知时,请避免自动重试。

收到 429 响应时,请等待 Retry-After 指定的时间后再发送下一个请求。预测失败时,请先检查 code、action 和 meta.usage.billing_status。遇到 billing_reconciliation_required 或计费未确认时,请在重试前附上 request_id 联系支持团队。

部分成功的批量请求可能返回 HTTP 200。请逐条检查,并在计费确认后只重新提交失败的条目;重新提交成功的条目会再次计费。

X-Request-ID 和 meta.request_id 用于标识当前这次 HTTP 尝试。当前余额请通过 /usage 读取。HEAD 不会发起计费的预测。预测和账户响应不可缓存。

客户端应能兼容新增的响应字段,并在信息不可用时保留 null 值。

请求限制

请处理 HTTP 429 和 Retry-After,不要假定在这些上限以内请求总会被接受。服务容量是共享的。所列数值为当前的服务默认值。速率限制响应包含 X-RateLimit-Limit、X-RateLimit-Remaining 和 X-RateLimit-Reset(Unix 秒)。Retry-After 是以秒为单位的等待时间。这些响应头描述的是请求限制,而不是剩余积分。即使是免费的 /usage 读取,也会计入速率限制。

限制值
JSON 请求体最大 64 KiB
预测输入值1–254 个字符
批量请求使用 API 密钥时 50 个条目;使用 IP 试用时 10 个
账户速率每分钟 120 个请求
IP 速率每分钟 600 个请求
并发操作每个账户 2 个;整个服务共 16 个