A team's Glicko-2 rating history
The team's own computed Glicko-2 rating over time (one point per played match), oldest→newest for a left-to-right chart.
The team's own computed Glicko-2 rating over time (one point per played match), oldest→newest for a left-to-right chart. limit default 30, max 1000; naming a window returns that whole span (the default then rises to the maximum). Each point carries the match_id that moved it, so a chart can say what happened there and join it to /teams/{id}/results. Enveloped {"data": [TeamRatingPoint, ...], "meta": {...}} (not cursor-paginated).
The primary way to authenticate: Authorization: Bearer <api-key>. When a request also carries ?apiKey=, the header wins. We store only a SHA-256 hash of a key, never the key itself. To try the API with no account, use the public sample key eo_sample_public: one published key, shared by everyone, that reads a fixed sample of past matches within daily limits. For evaluation; our Terms apply.
In: header
Path Parameters
Game slug. cs2 is the only populated title today; an un-onboarded game 404s cleanly.
Resource identifier — either a UUID or the resource's human-readable slug, scoped to {game}. /v1/cs2/teams/natus-vincere and /v1/cs2/teams/019f23d1-fb5c-7987-b522-47c3a5e72111 address the same row, so you can go straight from a slug you already have without first looking up its id.
Slugs work on teams, players and tournaments. Matches have no slug, so a match id must be a UUID. Either way, an identifier that resolves to nothing returns 404 not_found.
A team or a player also answers to a slug it was renamed away from, as long as no current team or player holds that slug — so a link made before a rename keeps working. The row returned carries its current slug.
Query Parameters
How many rating points to return. Default 30 (1000 when a window is named), maximum 1000. Selects the most recent N points but returns them oldest-first, so the series plots directly. Not paginated.
1 <= value <= 100030Only points inside this trailing span: a whole number of months with an m suffix, such as 6m, up to 60m, or all. Naming a window raises the default limit to the maximum, because a caller who names a span wants all of it. Omit it for the most recent limit points whatever their age.
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/cs2/teams/019f2858-e253-7f3d-bdff-bc7738bd1036/ratings"{ "data": [ { "rating": 1706.0276191063963, "rd": 49.52154040701407, "as_of": "2026-07-18T21:04:24.374135Z", "match_id": "019f77b7-6726-7180-b25b-f907e328ee7a" }, { "rating": 1675.2415434256247, "rd": 48.417509610034934, "as_of": "2026-07-19T23:00:00Z", "match_id": "019f28e1-e6ae-7032-8255-4c7e26548918" }, { "rating": 1655.5108014567663, "rd": 48.70136068925787, "as_of": "2026-07-23T19:00:19.424253Z", "match_id": "019f23d2-5a34-794e-85fa-ae2f2009ef4f" } ], "meta": { "count": 3, "next_cursor": null }}{ "error": { "code": "not_found", "message": "not found", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}{ "error": { "code": "rate_limited", "message": "rate limit exceeded", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}A team's current players GET
Everyone who played for the team in its newest completed match with stats, usually five, with each player's own figures over the last 12 months (the same figures as their /players/{id}/performance)…
A team's recent results GET
A team's completed, decided matches, newest first — the rows of a results table.