UX guidelines
When building a custom age gate by using the k-ID API, follow these UX guidelines to create a compliant and user-friendly experience. These recommendations help ensure players can complete age verification smoothly while meeting regulatory requirements.
These guidelines apply when you're building a custom age gate using the k-ID API directly. If you're using the k-ID embedded widget, the UX is already handled for you.
Age input methods
Your implementation should support at least two methods of collecting a player's age: an age slider or a date picker. Check the approvedAgeCollectionMethods field from the /age-gate/get-requirements endpoint to determine which collection methods are permitted for the player's jurisdiction.
Age slider
An age slider provides a simple, intuitive way for players to input their age. This is the recommended approach for most jurisdictions.

Design recommendations:
- Set the slider range from 0 to 35+ (per ESRB guidelines)
- Start in a neutral state with the default position at 0
- Keep the continue button inactive until the player interacts with the slider
- Display the selected age clearly as the player adjusts the slider
- Support keyboard navigation for accessibility
Mobile version:

Date picker
A date picker collects the player's full date of birth. This method is required in certain jurisdictions.

Design recommendations:
- Support day/month/year entry in the local date format
- Display clear validation messages for invalid dates
- Match the date format to local conventions (DD/MM/YYYY or MM/DD/YYYY)
Age confirmation
After collecting the player's age, display a confirmation screen before proceeding. This step helps prevent accidental errors and reinforces the importance of accurate age information.

Design recommendations:
- Summarize the entered age or date of birth clearly
- Explain that the entered age affects the player's experience
- Provide clear options to go back and correct the age, or confirm and continue
Trusted adult consent
When a player is below the digital consent age for their region, they need approval from a trusted adult. Your UI should present all three consent methods to maximize completion rates.

Consent methods
Provide these three options for the trusted adult to complete consent:
-
Email: Allow the player to enter a parent or guardian's email address. Call
/challenge/send-emailto send the consent request. -
QR code: Display a scannable QR code from the
challenge.urlfield. The trusted adult scans this with their phone to access the consent portal. -
Manual code entry: Display the
challenge.oneTimePasswordand direct the trusted adult to asktoplay.com to enter it.
Design recommendations
- Display all three options with equal visibility
- Include a "Do This Later" option for players who need to return later
- Add a copy button for the one-time code to improve usability
- Store the
challengeIdso players can resume the flow if they return before consent is granted
The QR code and one-time password expire after 1 hour and must be refreshed using the /challenge/generate-otp API. Design your UI to handle expiration gracefully by providing a refresh option or automatically regenerating credentials. For more details, see Challenge expiration and time-based authentication.
Data-lite mode
If your game supports data-lite mode, players under the digital consent age can access limited features while awaiting parental approval.
Design recommendations:
- Clearly communicate which features are available in data-lite mode
- Explain what additional features become available after consent is granted
- Provide a way for players to check consent status or resend the consent request
Accessibility
Ensure your custom age gate UI meets accessibility standards:
| Requirement | Implementation |
|---|---|
| Keyboard navigation | All interactive elements accessible via keyboard |
| Screen reader support | Appropriate ARIA labels and semantic HTML |
| Color contrast | Sufficient contrast for text and interactive elements |
| Tap targets | Minimum 44×44 pixel tap targets for buttons |
| Error messaging | Descriptive error messages that explain how to resolve issues |
Related resources
- Custom age gate quick start - Step-by-step implementation guide
- Age gate - API documentation for age gate endpoints
- Best practices - General best practices for CDK integration