Get a player's rating
const url = 'https://api.krkplaystennis.example/v1/players/plr_2b7xq9mhk4/rating';const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.krkplaystennis.example/v1/players/plr_2b7xq9mhk4/rating \ --header 'X-API-Key: <X-API-Key>'Returns a player’s current rating, confidence, and the K-factor that applies to their next rated match.
To see how the rating got to its current value, list the player’s rating history.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A player ID. Starts with plr_.
The player ID.
Responses
Section titled “Responses”The player’s current rating.
object
A player ID. Starts with plr_.
A rating. New players start between 1000 and 1800, based on their self-assessed NTRP level.
How settled a rating is, from 0 to 100. New players start at 20. Each rated match adds 10, up to 95. After 60 days without a rated match, confidence drops by 5 every 30 days, down to 20.
The maximum number of points a rating can move in one match. It’s 48 when confidence is below 40, 32 when confidence is from 40 to 69, and 16 when confidence is 70 or higher.
Number of rated matches the player has played.
When the player’s most recent rated match was played. null if the player has no rated matches.
When the rating or confidence last changed.
Examples
Ola's rating after one rated match
{ "player_id": "plr_2b7xq9mhk4", "value": 1432, "confidence": 30, "k_factor": 48, "rated_matches": 1, "last_rated_match_at": "2026-10-10T18:00:00+02:00", "updated_at": "2026-10-10T20:43:12Z"}The credentials are missing, invalid, or expired.
An error, as RFC 9457 problem details.
object
A URL that identifies the error type and links to its documentation.
A short summary of the error type. It’s the same for every error of this type.
The HTTP status code.
An explanation of this occurrence of the error.
The request path that caused the error.
One item per invalid field or parameter. Only for invalid-request, invalid-score, and validation-failed.
object
A JSON Pointer to the invalid field in the request body, or #/ followed by the name of an invalid query parameter.
What’s wrong with the field and how to fix it.
Examples
Missing API key
{ "type": "https://saverio-cirillo.com/krk-plays-tennis-api/errors/#unauthenticated", "title": "Authentication required", "status": 401, "detail": "Send a valid API key in the X-API-Key header.", "instance": "/v1/players/plr_2b7xq9mhk4"}No resource exists with this ID.
An error, as RFC 9457 problem details.
object
A URL that identifies the error type and links to its documentation.
A short summary of the error type. It’s the same for every error of this type.
The HTTP status code.
An explanation of this occurrence of the error.
The request path that caused the error.
One item per invalid field or parameter. Only for invalid-request, invalid-score, and validation-failed.
object
A JSON Pointer to the invalid field in the request body, or #/ followed by the name of an invalid query parameter.
What’s wrong with the field and how to fix it.
Examples
Unknown player ID
{ "type": "https://saverio-cirillo.com/krk-plays-tennis-api/errors/#not-found", "title": "Not found", "status": 404, "detail": "No player exists with the ID plr_0000000000.", "instance": "/v1/players/plr_0000000000"}You sent too many requests. Wait for the number of seconds in Retry-After, then retry.
An error, as RFC 9457 problem details.
object
A URL that identifies the error type and links to its documentation.
A short summary of the error type. It’s the same for every error of this type.
The HTTP status code.
An explanation of this occurrence of the error.
The request path that caused the error.
One item per invalid field or parameter. Only for invalid-request, invalid-score, and validation-failed.
object
A JSON Pointer to the invalid field in the request body, or #/ followed by the name of an invalid query parameter.
What’s wrong with the field and how to fix it.
Examples
Rate limit reached
{ "type": "https://saverio-cirillo.com/krk-plays-tennis-api/errors/#rate-limited", "title": "Rate limit reached", "status": 429, "detail": "This API key is limited to 60 requests per minute. Retry after 30 seconds.", "instance": "/v1/matches"}Headers
Section titled “Headers”Number of seconds to wait before you retry.
Example
30© 2026 Saverio Cirillo · KRKplaysTennis is a fictional API · Built with Starlight