Users
Get User Data
Retrieve complete user profile and settings.object
Create User
Register a new user account.string
required
Desired username (1-16 characters, alphanumeric, underscores, hyphens, dots)
string
User’s email address
string
required
Google reCAPTCHA token
Get User Profile
Retrieve public profile of any user.string
required
Username or user ID
boolean
default:"false"
Whether the path parameter is a UID (true) or username (false)
Update Username
Change username (once per 30 days).Results
Submit Test Result
Submit a completed typing test result.object
required
object
Results undergo anticheat validation. Invalid results (hash mismatch, suspicious timing, bot detection) will be rejected.
Get Results
Retrieve paginated test results.number
default:"50"
Number of results to return (max 1000)
number
default:"0"
Offset for pagination
number
Filter results on or after this timestamp
Premium users can retrieve more results than regular users. Limits are configurable per deployment.
Get Result by ID
Retrieve a specific result by its ID.Delete All Results
Permanently delete all test results.Leaderboards
Get All-Time Leaderboard
Retrieve global leaderboard entries.string
required
Language code (e.g., “english”)
string
required
Test mode: “time” or “words”
string
required
Mode variant: “15”, “60” for time; “10”, “25”, “50”, “100” for words
number
default:"0"
Page number (0-indexed)
number
default:"50"
Results per page (10-200)
boolean
default:"false"
Show only friends (requires authentication)
object
Get Leaderboard Rank
Get current user’s rank on leaderboard.Get Daily Leaderboard
Retrieve today’s daily leaderboard.number
default:"0"
Get leaderboard from N days ago (0 = today, 1 = yesterday)
Get Weekly XP Leaderboard
Retrieve weekly XP leaderboard.Configs
Get User Configuration
Retrieve user’s configuration settings.object
User’s configuration object including theme, test settings, behavior preferences, etc.
Update Configuration
Update user configuration (partial update).Only provided fields are updated. Missing fields remain unchanged.
Quotes
Get Quote Submissions
Retrieve pending quote submissions (moderators only).Submit Quote
Submit a new quote for approval.string
required
Quote text (minimum 60 characters)
string
required
Quote author or source
string
required
Language code
string
required
reCAPTCHA token
Report Quote
Report a problematic quote.Presets
Get Presets
Retrieve user’s test presets.Create Preset
Create a new test preset.Update Preset
Update an existing preset.Delete Preset
Delete a preset by ID.ApeKeys
List ApeKeys
Retrieve all API keys for the current user.Generate ApeKey
Create a new API key.Update ApeKey
Modify an existing API key.Delete ApeKey
Delete an API key.Tags
Get Tags
Retrieve all tags for the current user.array
Array of tag objects with ID, name, and personal bests
Create Tag
Create a new tag.string
required
Tag name (1-16 characters)
object
Created tag object with _id and name
Update Tag
Update an existing tag’s name.string
required
Tag ID to update
string
required
New tag name (1-16 characters)
Delete Tag
Delete a tag by ID.string
required
Tag ID to delete
Delete Tag Personal Best
Clear personal bests for a specific tag.string
required
Tag ID to clear personal bests for
Custom Themes
Get Custom Themes
Retrieve all custom themes for the current user.array
Array of custom theme objects with colors
Create Custom Theme
Create a new custom theme.string
required
Theme name (1-16 characters)
object
required
object
Created theme with _id and name
Update Custom Theme
Update an existing custom theme.string
required
Theme ID to update
object
required
Theme object with name and colors
Delete Custom Theme
Delete a custom theme.string
required
Theme ID to delete
Inbox
Get Inbox
Retrieve user’s inbox messages.object
Update Inbox
Mark messages as read or delete them.array
Array of message UUIDs to mark as read
array
Array of message UUIDs to delete
Streak
Get Streak
Retrieve user’s streak data.object
Set Streak Hour Offset
Set the hour offset for streak calculation (can only be set once).number
required
Hour offset (-11 to 12)
Connections
Get Connections
Retrieve user’s connections (friends).string
Filter by status: “pending”, “accepted”, “rejected”, “blocked”
string
Filter by type: “incoming”, “outgoing”
array
Array of connection objects
Create Connection
Send a friend request to another user.string
required
Username of the user to connect with
object
Created connection object with status “pending”
Update Connection
Accept, reject, or block a connection request.string
required
Connection ID
string
required
New status: “accepted”, “rejected”, or “blocked”
Delete Connection
Remove a connection.string
required
Connection ID to delete
Discord Integration
Get Discord OAuth Link
Get the OAuth link to start Discord integration.Link Discord Account
Link a Discord account after OAuth callback.string
required
Token type from Discord OAuth
string
required
Access token from Discord OAuth
string
required
State parameter from OAuth (20 characters)
Unlink Discord Account
Unlink the connected Discord account.Additional User Endpoints
Get Test Activity
Retrieve complete test activity data (premium feature).object
Test activity data organized by year and day
Update Profile
Update user’s public profile information.string
User biography
string
Keyboard information
number
ID of badge to display on profile
object
Social media profile usernames
boolean
Whether to show test activity on public profile
Get Favorite Quotes
Retrieve user’s favorite quotes.object
Favorite quotes organized by language
Add Favorite Quote
Add a quote to favorites.string
required
Language code
string
required
Quote ID to add to favorites
Remove Favorite Quote
Remove a quote from favorites.string
required
Language code
string
required
Quote ID to remove from favorites
Error Responses
All endpoints may return these common error responses:Rate Limits
Endpoints have varying rate limits. Common limits:- User endpoints: 30-60 requests per minute
- Result submission: 500 per day
- Leaderboards: 60 per minute
- Config updates: 120 per hour