Эта страница ещё не переведена на Русский. Показан английский оригинал.
GET /datasets/rankings-daily
Daily model usage snapshots
A per-day ranking of models by tokens processed — which models are actually being used, and how much, day by day.
GET https://openrouter.myip.co.kr/api/v1/datasets/rankings-dailyWhat this data is, and what it is not
The room to switch to our own usage is already there. A row's source reads openrouter for the external snapshot, internal for figures aggregated from our own usage records, and fixture for sample data.
Authentication
Authorization: Bearer <key> is required. Both inference and management keys are accepted. Without a key you get 401 invalid_api_key.
Request parameters
start_datestringYYYY-MM-DD. Returns rows on or after this date. Omitted, the window is 30 days back from end_date. A malformed value returns 400.
end_datestringYYYY-MM-DD. Returns rows up to and including this date. Omitted, it is the most recent date present for that modality.
modalitystringDefaults to text. Keeps only rows whose stored modality matches exactly.
limitnumberMaximum rows to return: an integer from 1 to 5000, default 1000. Rows are ordered by date descending, then rank ascending, so a small limit fills up with the top of the most recent day first.
Request example
curl "https://openrouter.myip.co.kr/api/v1/datasets/rankings-daily?start_date=2026-08-28&end_date=2026-09-03&limit=50" \
-H "Authorization: Bearer $MYIP_API_KEY"Response
The body is {"data": [ … ], "meta": { … }}.
datestringThe day the figures cover (YYYY-MM-DD).
model_permaslugstringThe model identifier used by the source dataset. Models we do not serve appear here too.
model_idstring | nullThe result of matching model_permaslug against our catalogue. null when there is no match, in which case display model_permaslug as-is. Only rows with a model_id link through to GET /models.
total_tokensstringTokens processed that day. Stored as NUMERIC(30,0), which can exceed what a double precision float represents exactly, so it is emitted as a string. Parse it as a BigInt.
ranknumber | nullRank for that day, starting at 1. We re-compute it rather than trusting the source's rank, because merging a model's variant rows would leave the source's ordering inconsistent.
modalitystringtext, and so on.
categorystring | nullThe category for a per-category ranking; null in the global ranking.
sourcestringOne of openrouter, internal, fixture. fixture means sample data.
synced_atstringWhen this row was last refreshed (ISO 8601, UTC).
meta reports the window that was actually read.
meta.as_ofstring | nullThe most recent synced_at among the returned rows, or null when there are none.
meta.start_datestring | nullThe start of the window actually applied — this is where you see what we filled in when you omitted it.
meta.end_datestring | nullThe end of the window actually applied, or null when there is no data at all.
meta.modalitystringThe modality that was applied.
meta.versionstringFixed at v1. It changes if the response shape changes.
Response example
{
"data": [
{
"date": "2026-09-03",
"model_permaslug": "google/gemma-4-26b-a4b",
"model_id": "google/gemma-4-26b-a4b",
"total_tokens": "11948458704035",
"rank": 1,
"modality": "text",
"category": null,
"source": "fixture",
"synced_at": "2026-09-04T20:12:54.274Z"
},
{
"date": "2026-09-03",
"model_permaslug": "lgai/exaone-4.0-32b",
"model_id": "lgai/exaone-4.0-32b",
"total_tokens": "11597347917470",
"rank": 2,
"modality": "text",
"category": null,
"source": "fixture",
"synced_at": "2026-09-04T20:12:54.274Z"
}
],
"meta": {
"as_of": "2026-09-04T20:12:54.274Z",
"start_date": "2026-08-05",
"end_date": "2026-09-03",
"modality": "text",
"version": "v1"
}
}When the data is empty, or a sample
The sync job needs OPENROUTER_API_KEY to fetch real data. Without it the job ends as skipped, and if policy selects fixture mode it loads the sample snapshot kept in the repository instead.
| Situation | Response | How you can tell |
|---|---|---|
| Normal sync | Real data | source: "openrouter" |
| No key, fixture mode on | Sample data | source: "fixture", and the site shows a "sample data" badge |
| No key, fixture mode off | {"data": [], "meta": {"end_date": null, …}} with status 200 | An empty array |
Errors
| Status | error_type | When |
|---|---|---|
| 400 | invalid_request | start_date or end_date is not YYYY-MM-DD; start_date is later than end_date; limit is not an integer from 1 to 5000 |
| 401 | invalid_api_key | No header. A token without one of our prefixes. An unknown, switched-off, or revoked key |
| 401 | expired_api_key | The key has expired |
| 402 | insufficient_credits | The key is suspended_no_credit |
| 403 | key_suspended | An administrator suspended the key |
| 500 | server | Any other server-side failure |
No data is not an error: it comes back as {"data": []} with status 200.
Related
- GET /datasets/app-rankings — app ranking snapshots
- GET /benchmarks — benchmark snapshots
- GET /models — the model catalogue
- Errors and debugging — the full
error_typetable
Последнее обновление: 5 сент. 2026 г.