APIドキュメント V2

API V2のエラーと再試行

GenderAPI.io V2のProblem Details、検証エラー、レート制限、課金が不確かな場合の対応を説明します。再試行時の課金と、サポートに問い合わせるタイミングを理解します。

エラーとHTTPステータスコード

アプリケーションエラーにはapplication/problem+json(RFC 9457)が使われます。処理の分岐には、人が読むためのdetailではなく、安定したcodeとactionを使ってください。検証エラーでは、errorsにJSON Pointerの位置が含まれます。サポートに問い合わせる際はrequest_idを添えてください。プロキシや通信の障害では異なるボディが返ることがあるため、JSONを解析する前にContent-Typeを確認してください。

次の合成された422の例は、課金前に検出されたメールアドレスの構文エラーを示しています。公開エラーカタログには、すべてのcode、ステータス、説明、推奨される対処が記載されています。

HTTPステータス主な意味次の対応
400 / 413 / 415JSONの形式が不正、ボディが大きすぎる、またはサポートされていないメディアタイプ。リクエストを修正します。
401 / 403アクセスの拒否、アカウントの制限、またはクレジット不足。codeを確認し、アクセス方法を修正するか、クレジットを追加するか、IPトライアルのリセットを待ちます。
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の試行を一意に識別するID。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の試行を一意に識別するID。X-Request-IDでも返されます。
meta.duration_msintegerいいえ42リクエストの処理時間(ミリ秒)。
meta.access.modestringいいえ"api_key"api_key、ip_trial、unauthenticatedのいずれか。有料アカウントを使う場合はapi_keyであることを確認してください。
meta.access.reasonstringはいnullIPトライアルに切り替わった理由:api_key_missing、api_key_invalid、api_key_not_found。それ以外はnull。
meta.usage.charged_creditsintegerはい1差し引かれた正味のクレジット。課金前、または全額の払い戻しが確認された後は0。課金が未確定の場合は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項目
アカウントごとのレート1分あたり120リクエスト
IPアドレスごとのレート1分あたり600リクエスト
同時実行される処理アカウントごとに2、サービス全体で16