名前・メールアドレス・ユーザー名のバッチ処理
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
items | array<object> | はい | — | 1–50件の推定項目。IPトライアルでは最大10件。結果は入力の順序を保ちます。 |
items[].type | string | はい | — | 入力の種類:name、email、username。 |
items[].value | string | はい | — | 必須。1–254文字。空白のみは不可で、制御文字は使用できません。emailの値はメールアドレスとして有効な構文である必要があります。 |
items[].country | string | いいえ | — | 任意。大文字のISO 3166-1 alpha-2コード(例:TR、US)。国別の検索はグローバルデータセットにフォールバックすることがあります。 |
items[].forceToGenderize | boolean | いいえ | false | まずデータセットを確認し、推定できない場合はニックネームを解釈するAIを使用します。name、email、usernameで使用できます。 |
items[].options | object | いいえ | — | 入力ごとのAIオプションを格納するオブジェクト。 |
items[].options.ai_mode | string | いいえ | off | 使用できる値:off、fallback、always。forceToGenderize: trueの場合は、このフィールドを省略するかfallbackを使用してください。 |
items[].id | string | いいえ | — | POSTのJSONで指定できる1–64文字の任意の識別子。バッチの各結果とともに返され、バッチ内で一意である必要があります。単一の推定でも受け付けますが、レスポンスには含まれません。GETクエリでは使用できません。 |
POST /gender/batchは、APIキーでのアクセスでは1–50項目、IPトライアルでは最大10項目のitems配列を受け付けます。名前だけ、メールアドレスだけ、ユーザー名だけを送ることも、3種類を混在させることもできます。各項目にはそれぞれcountry、forceToGenderize、optionsを指定できます。IDは任意ですが、一意である必要があります。
結果は入力の順序を保ち、index、指定した場合はid、charged_credits、そしてdataまたはerrorのどちらか一方を含みます。HTTP 200でも項目単位の失敗が含まれることがあるため、すべての項目を確認してください。meta.summaryにはtotal、succeeded、identified、unknown、failedが含まれます。不明な推定も成功した項目であり、課金対象です。
リクエストの検証や実行計画に失敗した場合、バッチは差し引きの前に拒否されます。実行したすべての項目が失敗した場合、APIは2xx以外のProblemレスポンスを返し、data配列と旧形式のエイリアスresultsを含めます。失敗した項目は、払い戻しが確認されると0クレジットになります。課金が未確定の場合は、項目ごとの課金額を確定したものとみなさないでください。
プログラミング言語を選んでください。APIキーを設定する。次に、サーバー上で例を実行してください。
推定のリクエストは、再試行を含め、毎回新たに課金される処理です。これらの例は自動的に再試行しません。次のリクエストを送信する前に課金ステータスを確認してください。
実行する前に:アクセスとエラー処理
これらの例はサーバー上で実行してください。プロセスの環境変数GENDERAPI_API_KEYに既存のAPIキーを設定し、meta.access.modeがapi_keyであることを確認します。認識されないキーはIPトライアルに切り替わることがあります。
HTTP 4xxと5xxのJSONレスポンスでは、例はエラーのボディをそのまま残し、0以外の終了ステータスで終了します。再試行する前にcode、action、meta.usage.billing_statusを確認してください。HTTP 200のバッチレスポンスでは、各項目のdataまたはerrorも確認してください。
エラーと再試行のガイド →POSIXシェルでcURL 7.76以上。ターミナルで実行します。実行環境のドキュメント
Node.js 22以上、組み込みのfetch。example.mjsとして保存し、node example.mjsを実行します。実行環境のドキュメント
Python 3.10以上、標準ライブラリ。example.pyとして保存し、python3 example.pyを実行します。実行環境のドキュメント
PHP 8以上とcURL拡張機能。example.phpとして保存し、php example.phpを実行します。実行環境のドキュメント
Java 17以上、標準のHTTPクライアント。GenderApiExample.javaとして保存し、java GenderApiExample.javaを実行します。実行環境のドキュメント
.NET 8以上のコンソールアプリケーション。コンソールプロジェクトのProgram.csとして使用し、dotnet runを実行します。実行環境のドキュメント
Go 1.22以上、標準ライブラリ。main.goとして保存し、go run main.goを実行します。実行環境のドキュメント
バッチレスポンスを読む
この例は、2026年10月1日に取得した2件の実際の結果(データセットでの一致と不明な結果)に、説明用のプロバイダー障害を組み合わせたものです。部分的に成功したHTTP 200レスポンスを示すもので、上のバッチリクエストで期待される出力ではありません。成功した2項目はそれぞれ1クレジットで、失敗した項目は0クレジットであることが確認されています。
{
"data": [
{
"index": 0,
"id": "known",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "Kenji",
"country": "JP"
},
"name": "kenji",
"gender": "male",
"country": "JP",
"confidence": 0.9943127962085309,
"confidence_kind": "observed_frequency",
"sample_count": 1055,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "kenji",
"method": "normalized",
"scope": "country",
"country": "JP"
}
}
},
{
"index": 1,
"id": "missing",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "zzzxxyy",
"country": null
},
"name": null,
"gender": null,
"country": null,
"confidence": null,
"confidence_kind": null,
"sample_count": null,
"source": "none",
"result_status": "unknown",
"reason": "not_found",
"country_source": null,
"match": {
"name": null,
"method": null,
"scope": null,
"country": null
}
}
},
{
"index": 2,
"id": "failed",
"charged_credits": 0,
"error": {
"type": "urn:genderapi:problem:ai_upstream_error",
"title": "ai upstream error",
"status": 502,
"detail": "The AI provider could not complete the request.",
"instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
"code": "ai_upstream_error",
"request_id": "11111111-1111-4111-8111-111111111111",
"documentation": "https://api.genderapi.io/api/v2/errors",
"action": "inspect_billing_before_retry"
}
}
],
"meta": {
"request_id": "11111111-1111-4111-8111-111111111111",
"duration_ms": 12,
"access": {
"mode": "ip_trial",
"reason": "api_key_missing"
},
"usage": {
"charged_credits": 2,
"remaining_credits": 6,
"billing_status": "confirmed",
"resets_at": "2026-09-26T12:00:00.000Z",
"limit": 10,
"period_seconds": 86400
},
"summary": {
"total": 3,
"succeeded": 2,
"identified": 1,
"unknown": 1,
"failed": 1
}
}
}バッチの結果フィールド
| フィールド | 型 | nullの場合あり | 例 | 説明 |
|---|---|---|---|---|
data | array<object> | いいえ | […] | 順序どおりの結果。各項目には推定結果またはエラーが含まれます。すべての項目を確認してください。 |
data[].index | integer | いいえ | 0 | 送信したitems配列内の位置(0始まり)。 |
data[].id | string | いいえ | "contact-1" | 入力の識別子。指定した場合にのみ含まれます。 |
data[].charged_credits | integer | いいえ | 1 | 確認済みの払い戻しを差し引いた、項目ごとの正味の課金額。全体の課金が未確定の場合は確定値とみなさないでください。 |
data[].data | object | いいえ | {…} | 不明な結果を含め、成功した項目に含まれます。レスポンスのガイドで説明している推定のフィールドを使用します。 |
data[].error | object | いいえ | {…} | 失敗した項目で、dataの代わりに含まれます。エラーのガイドで説明しているProblem Detailsのフィールドを使用します。 |
バッチの集計フィールド
| フィールド | 型 | nullの場合あり | 例 | 説明 |
|---|---|---|---|---|
meta.summary.total | integer | いいえ | 3 | バッチ内の項目の総数。 |
meta.summary.succeeded | integer | いいえ | 2 | 不明な推定を含む、成功した項目の数。 |
meta.summary.identified | integer | いいえ | 1 | 性別がnullでない、成功した項目の数。 |
meta.summary.unknown | integer | いいえ | 1 | 性別がnullの、成功した項目の数。これらも課金対象の結果です。 |
meta.summary.failed | integer | いいえ | 1 | 失敗した項目の数。total = succeeded + failed、succeeded = identified + unknown。 |
アクセス、課金、リクエストのメタデータ
| フィールド | 型 | nullの場合あり | 例 | 説明 |
|---|---|---|---|---|
meta.request_id | string | いいえ | "550e8400-e29b-41d4-a716-446655440000" | このHTTPの試行を一意に識別するID。X-Request-IDでも返されます。 |
meta.duration_ms | integer | いいえ | 42 | リクエストの処理時間(ミリ秒)。 |
meta.access.mode | string | いいえ | "api_key" | api_key、ip_trial、unauthenticatedのいずれか。有料アカウントを使う場合はapi_keyであることを確認してください。 |
meta.access.reason | string | はい | null | IPトライアルに切り替わった理由:api_key_missing、api_key_invalid、api_key_not_found。それ以外はnull。 |
meta.usage.charged_credits | integer | はい | 1 | 差し引かれた正味のクレジット。課金前、または全額の払い戻しが確認された後は0。課金が未確定の場合はnull。 |
meta.usage.remaining_credits | integer | はい | 99 | 処理完了時の残高。マイナスになることがあります。取得できない場合や課金が未確定の場合はnull。 |
meta.usage.billing_status | string | いいえ | "confirmed" | not_charged、confirmed、unconfirmedのいずれか。失敗した推定を再試行する前に確認してください。 |
meta.usage.resets_at | string | はい | "2026-09-27T12:00:00.000Z" | IPトライアルのリセット時刻(UTC、ISO 8601)。APIキーのアカウントや不明な場合はnull。 |
meta.usage.limit | integer | はい | 10 | IPトライアルのクレジット上限。APIキーのアカウントではnull。 |
meta.usage.period_seconds | integer | はい | 86400 | IPトライアルの期間(秒)。APIキーのアカウントではnull。 |
バッチのクレジットと再試行を計画する
既存のAPIキーをBearer認証で送信し、Content-Type: application/jsonを付けてください。送信するバッチは毎回新しい処理です。部分的な失敗を再試行する場合は、課金を確認してから失敗した項目だけを送信してください。成功した項目を再送すると、再び課金されます。
バッチの項目はデフォルトでAIがoffで、成功した項目ごとに1クレジットです。fallbackを明示した場合も、AIを含めて合計1クレジットです。alwaysは2クレジットです。forceToGenderizeは、データセットで推定できた場合は1クレジット、AIを使った場合は2クレジットです。成功した不明な結果も課金されます。バッチを開始するには残高が1クレジット以上あれば十分で、最終的な課金により残高がマイナスになることがあります。
連絡先リストを処理し、すべての行の結果を把握する
バッチのエンドポイントでは、名前だけのリスト、メールアドレスだけのリスト、入力が混在したリストを処理できます。APIキーを使うジョブは1回あたり最大50項目に分割してください。IPトライアルでは1リクエストあたり最大10項目です。ジョブの進捗は自分で記録し、各項目にはそのバッチ内で一意のidを付けてください。返されるindexは、送信したそのバッチ内での0始まりの位置であり、連絡先リスト全体での位置ではありません。
| 手順 | 保存・確認する内容 | 重要な理由 |
|---|---|---|
| 1. バッチを準備する | 元の行と項目のidを保持し、項目ごとにcountryとAIオプションを設定します。 | 名前が連絡先全体で一意であることを前提にしないでください。 |
| 2. レスポンス全体を読む | meta.request_idを保存し、idまたはindexでdata[]の各要素を対応付けます。 | HTTP 200でも、成功した推定と項目ごとのエラーが両方含まれることがあります。 |
| 3. 成功した結果を保存する | identifiedとunknownの推定を、JSONのnullや根拠のフィールドも含めて保持します。 | 不明な結果は完了した課金対象の結果であり、自動的に再試行すべき失敗した行ではありません。 |
| 4. エラーとクレジットを照合する | 次のリクエストを決める前に、各errorとmeta.usage.billing_statusを確認します。 | 課金が確定したら、再試行に適したエラーの失敗した項目だけを再試行します。成功した項目は再び課金されます。 |
| 5. 不確かな再試行を保留する | 課金が未確定の場合や、ネットワーク障害で結果が分からない場合は、リクエストIDを保持します。 | バッチ全体をむやみに再送せず、まずエラーと課金のガイドに従ってください。 |
連絡先ごとに推定モードを選ぶ
この実行可能なリクエストでは3つの異なる方針を使っています。フルネームにはデータセットのみ、メールアドレスには通常のAIフォールバック、ユーザー名にはニックネームを解釈するフォールバックです。これは入力の例であり、3件すべてで性別が返ることを約束するものではありません。コードの上でプログラミング言語を選び、実行前にGENDERAPI_API_KEYを設定してください。
forceToGenderizeを使わない場合、バッチの項目は単一の検索とは異なり、デフォルトでAIがoffです。通常のAIフォールバックを使うにはfallbackを明示してください。offと通常のフォールバックは、どちらも成功した項目ごとに1クレジットです。alwaysはデータセットを使わず、2クレジットです。forceToGenderizeは、データセットで推定できた場合は1クレジット、AIを使った場合は合計2クレジットです。成功した不明な結果も課金されます。forceToGenderizeをoffまたはalwaysと組み合わせないでください。
プログラミング言語を選んでください。APIキーを設定する。次に、サーバー上で例を実行してください。
推定のリクエストは、再試行を含め、毎回新たに課金される処理です。これらの例は自動的に再試行しません。次のリクエストを送信する前に課金ステータスを確認してください。
実行する前に:アクセスとエラー処理
これらの例はサーバー上で実行してください。プロセスの環境変数GENDERAPI_API_KEYに既存のAPIキーを設定し、meta.access.modeがapi_keyであることを確認します。認識されないキーはIPトライアルに切り替わることがあります。
HTTP 4xxと5xxのJSONレスポンスでは、例はエラーのボディをそのまま残し、0以外の終了ステータスで終了します。再試行する前にcode、action、meta.usage.billing_statusを確認してください。HTTP 200のバッチレスポンスでは、各項目のdataまたはerrorも確認してください。
エラーと再試行のガイド →POSIXシェルでcURL 7.76以上。ターミナルで実行します。実行環境のドキュメント
Node.js 22以上、組み込みのfetch。example.mjsとして保存し、node example.mjsを実行します。実行環境のドキュメント
Python 3.10以上、標準ライブラリ。example.pyとして保存し、python3 example.pyを実行します。実行環境のドキュメント
PHP 8以上とcURL拡張機能。example.phpとして保存し、php example.phpを実行します。実行環境のドキュメント
Java 17以上、標準のHTTPクライアント。GenderApiExample.javaとして保存し、java GenderApiExample.javaを実行します。実行環境のドキュメント
.NET 8以上のコンソールアプリケーション。コンソールプロジェクトのProgram.csとして使用し、dotnet runを実行します。実行環境のドキュメント
Go 1.22以上、標準ライブラリ。main.goとして保存し、go run main.goを実行します。実行環境のドキュメント