Monkeytype API (2.0.0)

Download OpenAPI specification:Download

Documentation for the endpoints provided by the Monkeytype API server.

Note that authentication is performed with the Authorization HTTP header in the format Authorization: ApeKey YOUR_APE_KEY

There is a rate limit of 30 requests per minute across all endpoints with some endpoints being more strict. Rate limit rates are shared across all ape keys.

Users

User account data.

check name

Checks to see if a username is available.

Rate limit: This operation can be called up to 60 times per minute for regular users.

path Parameters
name
required
string [ 1 .. 16 ] characters ^[\da-zA-Z_-]+$

Responses

Response samples

Content type
application/json
{
  • "message": "string"
}

get personal bests

Get user's personal bests.

Rate limit: This operation can be called up to 60 times per hour for regular users.

Authorizations:
BearerAuthApeKey
query Parameters
mode
required
string
Enum: "time" "words" "quote" "custom" "zen"
(string or number) or string or string

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

get tags

Get the users tags.

Rate limit: This operation can be called up to 60 times per hour for regular users.

Authorizations:
BearerAuthApeKey

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": [
    ]
}

get stats

Gets a user's typing stats data.

Rate limit: This operation can be called up to 60 times per hour for regular users.

Authorizations:
BearerAuthApeKey

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

get profile

Gets a user's profile.

Rate limit: This operation can be called up to 100 times per hour for regular users.

Required configuration: This operation can only be called if the configuration for users.profiles.enabled is true.

path Parameters
uidOrName
required
string
query Parameters
string or boolean
Default: false

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

send forgot password email

Send a forgot password email.

Rate limit: This operation can be called up to 1 times per minute for regular users.

Request Body schema: application/json

Body

email
required
string <email>

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "message": "string"
}

get current test activity

Get test activity for the last up to 372 days for the current user .

Rate limit: This operation can be called up to 60 times per hour for regular users.

Authorizations:
BearerAuthApeKey

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

get streak

Get user's streak data.

Rate limit: This operation can be called up to 60 times per hour for regular users.

Authorizations:
BearerAuthApeKey

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Test results

User test results

get results

Gets up to 1000 results.

Rate limit: This operation can be called up to 60 times per hour for regular users and up to 30 times per day with ApeKeys.

Authorizations:
BearerAuthApeKey
query Parameters
onOrAfterTimestamp
integer >= 1589428800000

Timestamp of the earliest result to fetch. If omitted the most recent results are fetched.

offset
integer >= 0

Offset of the item at which to begin the response.

limit
integer [ 0 .. 1000 ]

Limit results to the given amount.

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": [
    ]
}

get last result

Gets a user's last saved result.

Rate limit: This operation can be called up to 60 times per hour for regular users.

Authorizations:
BearerAuthApeKey

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Public

Public endpoints such as typing stats.

get speed histogram

get number of users personal bests grouped by wpm level (multiples of ten).

Rate limit: This operation can be called up to 60 times per minute for regular users.

query Parameters
language
required
string <= 50 characters ^[a-zA-Z0-9_+]+$
mode
required
string
Enum: "time" "words" "quote" "custom" "zen"
required
(string or number) or string or string

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

get typing stats

get number of tests and time users spend typing.

Rate limit: This operation can be called up to 60 times per minute for regular users.

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Leaderboards

All-time and daily leaderboards of the fastest typers.

get leaderboard

Get all-time leaderboard.

Rate limit: This operation can be called up to 500 times per hour for regular users.

query Parameters
language
required
string <= 50 characters ^[a-zA-Z0-9_+]+$
mode
required
string
Enum: "time" "words" "quote" "custom" "zen"
required
(string or number) or string or string
skip
integer >= 0
limit
integer [ 0 .. 50 ]

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": [
    ]
}

get leaderboard rank

Get the rank of the current user on the all-time leaderboard.

Rate limit: This operation can be called up to 500 times per hour for regular users.

Authorizations:
BearerAuthApeKey
query Parameters
language
required
string <= 50 characters ^[a-zA-Z0-9_+]+$
mode
required
string
Enum: "time" "words" "quote" "custom" "zen"
required
(string or number) or string or string

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

get daily leaderboard

Get daily leaderboard.

Rate limit: This operation can be called up to 500 times per hour for regular users.

Required configuration: This operation can only be called if the configuration for dailyLeaderboards.enabled is true.

query Parameters
language
required
string <= 50 characters ^[a-zA-Z0-9_+]+$
mode
required
string
Enum: "time" "words" "quote" "custom" "zen"
required
(string or number) or string or string
daysBefore
number
Value: 1
skip
integer >= 0
limit
integer [ 0 .. 50 ]

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": [
    ]
}

get weekly xp leaderboard

Get weekly xp leaderboard.

Rate limit: This operation can be called up to 500 times per hour for regular users.

Required configuration: This operation can only be called if the configuration for leaderboards.weeklyXp.enabled is true.

query Parameters
skip
integer >= 0
limit
integer [ 0 .. 50 ]
weeksBefore
number
Value: 1

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": [
    ]
}

PSAs

Public service announcements.

get psas

Get list of public service announcements.

Rate limit: This operation can be called up to 60 times per minute for regular users.

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": [
    ]
}

Quotes

Quote ratings and new quote submissions

is submission enabled

Check if submissions are enabled.

Rate limit: This operation can be called up to 60 times per minute for regular users.

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Server configuration

Server configuration

get configuration

Get server configuration.

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Webhooks

Endpoints for incoming webhooks.