API 문서 V2

GenderAPI.io V2 오류와 재시도

GenderAPI.io V2의 Problem Details, 검증 오류, 요청 한도와 불확실한 과금을 처리하세요. 재시도 시 과금과 지원팀에 문의해야 하는 경우를 설명합니다.

오류와 HTTP 상태 코드

애플리케이션 오류는 application/problem+json(RFC 9457)을 사용합니다. 사람이 읽는 detail이 아니라 안정적인 code와 action을 기준으로 분기하세요. 검증 오류에서는 errors에 JSON Pointer 위치가 포함됩니다. 지원팀에 문의할 때는 request_id를 함께 알려 주세요. 프록시나 전송 오류는 다른 본문을 반환할 수 있으므로 JSON을 파싱하기 전에 Content-Type을 확인하세요.

다음 합성 422 예시는 과금 전에 발견된 잘못된 이메일 구문을 보여 줍니다. 공개 오류 카탈로그에는 모든 코드, 상태, 설명과 권장 조치가 나와 있습니다.

HTTP 상태일반적인 의미다음 단계
400 / 413 / 415잘못된 JSON, 너무 큰 본문 또는 지원되지 않는 미디어 유형.요청을 수정하세요.
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 시도의 고유 식별자이며 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예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개
계정별 요청 한도분당 120회 요청
IP별 요청 한도분당 600회 요청
동시 작업계정당 2개, 서비스 전체 16개