リクエストを送信する前に
JSONをPOST https://api.genderapi.io/api/v2/gender に送信します。既存のAPIキーをAuthorization: Bearer YOUR_API_KEYで指定し、Content-Type: application/jsonを付けてください。各リクエストは個別に処理されます。
コード例でプログラミング言語を選んでください。実行前にプロセスの環境変数GENDERAPI_API_KEYを設定します。キーがない場合や認識されない場合は共有のIPトライアルが使われることがあるため、アカウントを連携するときはmeta.access.modeがapi_keyであることを確認してください。
ユーザー名またはニックネームから性別を推定
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
type | string | はい | — | 入力の種類:name、email、username。 |
value | string | はい | — | 必須。1–254文字。空白のみは不可で、制御文字は使用できません。emailの値はメールアドレスとして有効な構文である必要があります。 |
country | string | いいえ | — | 任意。大文字のISO 3166-1 alpha-2コード(例:TR、US)。国別の検索はグローバルデータセットにフォールバックすることがあります。 |
forceToGenderize | boolean | いいえ | false | まずデータセットを確認し、推定できない場合はニックネームを解釈するAIを使用します。name、email、usernameで使用できます。 |
options | object | いいえ | — | 入力ごとのAIオプションを格納するオブジェクト。 |
options.ai_mode | string | いいえ | fallback | 使用できる値:off、fallback、always。forceToGenderize: trueの場合は、このフィールドを省略するかfallbackを使用してください。 |
id | string | いいえ | — | POSTのJSONで指定できる1–64文字の任意の識別子。バッチの各結果とともに返され、バッチ内で一意である必要があります。単一の推定でも受け付けますが、レスポンスには含まれません。GETクエリでは使用できません。 |
ハンドル名やニックネームにはtype: usernameを使用します。実名を抽出できなくても、prensesのようなニックネームの意味から推定を試したい場合は、forceToGenderizeをtrueに設定してください。その場合もまずデータセットが確認されます。ニックネームの推定では、name: nullのまま、nullでない性別が返ることがあります。
プログラミング言語を選んでください。APIキーを設定する。次に、サーバー上で例を実行してください。
推定のリクエストは、再試行を含め、毎回新たに課金される処理です。これらの例は自動的に再試行しません。次のリクエストを送信する前に課金ステータスを確認してください。
実行する前に:アクセスとエラー処理
これらの例はサーバー上で実行してください。プロセスの環境変数GENDERAPI_API_KEYに既存のAPIキーを設定し、meta.access.modeがapi_keyであることを確認します。認識されないキーはIPトライアルに切り替わることがあります。
HTTP 4xxと5xxのJSONレスポンスでは、例はエラーのボディをそのまま残し、0以外の終了ステータスで終了します。再試行する前にcode、action、meta.usage.billing_statusを確認してください。
エラーと再試行のガイド →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日にAPIキーで取得した実際のレスポンスで、アカウント残高のみを置き換えています。精度を測るものではなく、実際のリクエストでは異なる結果が返ることがあります。APIキーによるリクエストではmeta.access.mode: api_keyが返り、IPトライアル専用の上限フィールドはnullになります。IPトライアルによるリクエストではip_trialが返ります。推定結果はdataで、その処理の課金結果はmeta.usageで確認してください。
{
"data": {
"input": {
"type": "username",
"value": "prenses",
"country": "TR",
"forceToGenderize": true
},
"name": "prenses",
"gender": "female",
"country": "TR",
"confidence": 0.9456521739130435,
"confidence_kind": "observed_frequency",
"sample_count": 184,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "prenses",
"method": "normalized",
"scope": "country",
"country": "TR"
}
},
"meta": {
"request_id": "a799faa4-bc1a-4537-90b3-2c1b60205499",
"duration_ms": 15,
"access": {
"mode": "api_key",
"reason": null
},
"usage": {
"charged_credits": 1,
"remaining_credits": 49999,
"billing_status": "confirmed",
"resets_at": null,
"limit": null,
"period_seconds": null
}
}
}推定のレスポンスフィールド
| フィールド | 型 | nullの場合あり | 例 | 説明 |
|---|---|---|---|---|
data.input | object | いいえ | {"type":"name","value":"Hiroshi","country":"JP"} | 入力の種類、値、国。trueの場合はforceToGenderizeも含まれます。 |
data.name | string | はい | "hiroshi" | 一致した名、または抽出された名。該当がない場合はnull。 |
data.gender | string | はい | "male" | male、female、またはJSONのnull。推定であり、確認された個人の属性ではありません。 |
data.result_status | string | いいえ | "identified" | 性別が返された場合はidentified、それ以外はunknown。 |
data.reason | string | はい | null | identifiedの場合はnull。不明の理由:not_found、no_name_candidate、ambiguous、insufficient_evidence。 |
data.confidence | number | はい | 0.95 | 0–1のスコア、またはnull。性別がnullの場合、信頼度もnullです。 |
data.confidence_kind | string | はい | "observed_frequency" | observed_frequency:データセットで多数を占める性別の件数÷合計件数。model_reported:AIが報告したスコアで、較正済みの確率ではありません。取得できない場合はnull。 |
data.sample_count | integer | はい | 1200 | データセットのサンプル数、またはnull。AIがサンプル数を作り出すことはありません。 |
data.source | string | いいえ | "dataset" | dataset、ai、noneのいずれか。 |
data.country | string | はい | "JP" | datasetまたはai_associationによる国との関連付け、またはnull。国籍、居住地、民族を示すものではありません。 |
data.country_source | string | はい | "dataset" | 国との関連付けの出どころ:dataset、ai_association、またはnull。 |
data.match | object | いいえ | {"name":"hiroshi","method":"normalized","scope":"country","country":"JP"} | 一致したデータセットの名前、照合方法(normalized、token、substring、model_inference)、country/globalの範囲、一致した国。取得できない根拠はnullになります。 |
アクセス、課金、リクエストのメタデータ
| フィールド | 型 | 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。 |
ニックネームの推定結果を読む
この例ではforceToGenderize: trueを使用しています。データセットで推定できた場合は1クレジットです。推定できない場合はAIがエイリアスを解釈し、成功した処理では不明な結果も含めて合計2クレジットです。ai_modeは省略するかfallbackに設定してください。offとalwaysはforceToGenderizeと併用できず、422が返ります。
ニックネームモードでは、name: nullのまま性別が推定されることがあります。これは実名が抽出されなかったことを意味し、解析エラーではありません。AIが性別を返す場合、sample_countはnull、confidence_kindはmodel_reportedになります。このスコアは較正済みの確率でも、本人確認の結果でもありません。
forceToGenderizeを使わない場合も、単一のユーザー名の検索はデフォルトで通常のAIフォールバックを使い、合計1クレジットです。ただし、利用可能な実名が必要です。データセットのみで処理するにはoptions.ai_mode: offを使用します。