Age signals
An age signal is information about a player's age that k-ID uses to determine what permissions and features they should have access to. Developers provide age signals from whatever sources they have, and k-ID processes them to ensure compliance.
Types of age signals
| Type | Description |
|---|---|
| Date of birth | Provided directly by the player. Accepted formats: YYYY, YYYY-MM, or YYYY-MM-DD |
| Self-attested age | An approximate age entered by the player through an age gate |
| Age estimation | Estimated age from facial age estimation technology |
| Platform age signal | Age data from a game platform (Apple iOS, Google Play, Xbox, Meta Horizon, or k-ID). See Platform age signals |
| Verified age | Age confirmed through ID document verification or a prior k-ID verification record |
How k-ID handles age signals
- Developers provide age signals: If you've collected age information from any source (platform, existing account, prior session), pass it to k-ID. k-ID merges all available signals and uses the most conservative result.
- CDK provides collection interfaces: If you use the CDK, k-ID provides the age gate UI and collection flows.
- VPC and Age Verification process signals: These interfaces verify and act on the signals you provide to determine what the player can access.
Platform age signals
Game platforms can send age data when a game launches. Passing this signal to k-ID can:
- Skip the age gate for players whose platform age signal is considered verified
- Satisfy age verification thresholds on high-risk permissions (for example, loot boxes in Brazil) without a separate step
- Detect age conflicts when a platform age contradicts a self-reported age
For integration details, supported platforms, verified declaration types, and the PlatformAgeSignal request shape, see Platform age signals.
Age conflicts between primary age and platform age
When both a primary age (date of birth, self-attested age, or kuid) and a platform age signal are sent to POST /age-gate/check, k-ID can compare them:
- Platform says the player is younger than their self-reported age category: returns
400 AGE_CONFLICTso your game can handle the discrepancy - Platform says the player is older than their self-reported age: no conflict; k-ID uses the more conservative (lower) age
- Same age category: no conflict; the request proceeds normally
This feature isn't enabled by default. Contact k-ID to enable age conflict detection for your product.
Even without conflict detection enabled, k-ID always uses the lower of the two ages for permission resolution: an unverified platform signal can still restrict access, but it can't grant it.
Constraining age gates with platform signals
To prevent age conflicts before they happen, use the platform signal to limit the ages a player can enter at the age gate. The /age-gate/get-requirements response includes two jurisdiction-specific boundary values:
digitalConsentAge: The age of digital consent in the player's jurisdictioncivilAge: The civil majority age
Use these to constrain your age gate UI:
| Platform category | Restrict input to |
|---|---|
Child (ageLow < digitalConsentAge) | Ages lower than digitalConsentAge only |
Teen (ageLow between digitalConsentAge and civilAge) | Ages between digitalConsentAge and civilAge |
Adult (ageLow ≥ civilAge) | Ages at or greater than civilAge |
This ensures players can't claim an age that directly contradicts what the platform has already reported.
Previously verified age
If you already know a player's age (for example, they're signed in to an account whose date of birth your platform holds), you don't need to show the age gate. Call POST /age-gate/check directly with the previously verified dateOfBirth. k-ID creates the session from that information without prompting the player for input.
Age signal collection methods
The methods allowed for collecting age signals vary by jurisdiction. The GET /age-gate/get-requirements response includes an approvedAgeCollectionMethods array:
| Method | Description |
|---|---|
date-of-birth | Full date of birth (YYYY-MM-DD) |
age-slider | Age range or approximate age selection |
platform-account | Age verification from an existing platform account |
When showing an age gate, use a neutral gate (no age pre-selected) so the player must actively set an age. If using a slider, the ESRB recommends capping the maximum display age at 35.
Using age status
While permissions control individual features, some games need a coarser player experience tied to overall age. The Session object includes an ageStatus field:
| Value | Meaning |
|---|---|
DIGITAL_MINOR | Below the age of digital consent |
DIGITAL_YOUTH | At or greater than digital consent age, but below civil majority |
LEGAL_ADULT | At or greater than the civil majority age |
For example, a game might suppress all in-game advertising for any player who isn't a LEGAL_ADULT, independent of any specific permission setting.