Check age gate
Runs an age gate check and decides whether a player may enter the game, creating an age challenge when one is needed. Supply the player's jurisdiction with exactly one age signal — `dateOfBirth`, `age`, or `kuid`. Passing none, or more than one, is a bad request. With `kuid`, the age already recorded by the player's guardian is used and the resulting session or challenge is tied to that user. The response `status` tells you what to do next: `PASS` returns a session and the player continues, `CHALLENGE` returns a challenge to complete first, and `PROHIBITED` returns neither because the player is below the product's minimum age. A one-time password on a returned challenge expires. Call `/challenge/generate-otp` when you are ready to display it, and regenerate it periodically until the challenge is in progress.
Authorization
api-key In: header
Header Parameters
Optional header for Account System Products to perform cross-product age gate checks. The value must be the product ID of the target product within the same organization. The target product must not itself be an Account System Product.
Request Body
application/json
Check age gate
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/age-gate/check" \ -H "Content-Type: application/json" \ -d '{ "jurisdiction": "US-CA", "dateOfBirth": "2012-06-15", "age": 13, "kuid": "12b9fa0e-6d6d-4903-a1fc-f2233027b71d", "platformAgeSignal": { "name": "meta-horizon", "category": "TN" }, "subject": { "id": "id-12345678-1234-1234-1234-123456789012" }, "options": { "termsOfServiceDocument": "xbox-tos", "privacyPolicyDocument": "xbox-privacy-policy", "additionalLegalLinks": [ "steam-tos", "xbox-conduct" ], "playerAgeAssurance": { "redirectUrl": "https://example.com/verify/complete" } } }'{ "status": "PASS", "session": { "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "kuid": "12b9fa0e-6d6d-4903-a1fc-f2233027b71d", "ageStatus": "LEGAL_ADULT", "ageCategory": "adult", "etag": "e889efb9e8a985308e82bed78c5aef7f37f50cf36b7337bf654980d0bab7a574", "status": "ACTIVE", "dateOfBirth": "2005-04-15", "jurisdiction": "US-CA", "managedBy": "PLAYER", "permissions": [ { "name": "text-chat-public", "enabled": false, "managedBy": "GUARDIAN" }, { "name": "text-chat-private", "enabled": true, "managedBy": "PLAYER" }, { "name": "forums", "enabled": false, "managedBy": "PROHIBITED" } ] }}{ "error": "INVALID_INPUT", "errorMessage": "Invalid jurisdiction"}Check age category POST
Resolves a player's age category for their jurisdiction from a date of birth or age, without creating a session or challenge. Use it when you need the category alone — to branch product behaviour, for example — rather than a full age gate decision.
Check if age gate should be displayed GET
Returns what a jurisdiction requires of an age gate, so the gate can be built before any player age is known. Call it when a player first arrives: the response says whether a gate must be shown at all, which ages the jurisdiction treats as significant, whether age assurance is required, and which age collection methods are approved there.