Live list prices for every AI model across every provider, as a stable JSON API. Create a key on your dashboard, then start querying.
Every request needs your API key as a Bearer token. Keys look like itk_live_… and are shown once, at creation. Keep them server-side.
Authorization: Bearer YOUR_API_KEYindextkn-api-production.up.railway.app/api/v1curl indextkn-api-production.up.railway.app/api/v1/prices \
-H "Authorization: Bearer YOUR_API_KEY"Current price for every offer — one entry per provider × model. Optional filters: ?provider=, ?lab=, ?model=, ?status=.
{
"timestamp": "2026-08-28T14:30:00Z",
"count": 1061,
"data": [
{
"id": "openrouter:anthropic/claude-opus-4.5",
"model": "anthropic/claude-opus-4.5",
"model_name": "Claude Opus 4.5",
"provider": "openrouter",
"lab": "anthropic",
"input_price": 5.0,
"output_price": 25.0,
"cache_read_price": 0.5,
"cache_write_price": null,
"currency": "USD",
"unit": "1M_tokens",
"context": 200000,
"status": "accurate",
"source_url": "https://openrouter.ai/...",
"updated_at": "2026-08-28T14:12:00Z"
}
]
}Discover the models you can query and which providers price each one. Optional filters: ?lab=, ?provider=, ?modality=.
{
"count": 791,
"data": [
{
"id": "anthropic/claude-opus-4.5",
"model": "claude-opus-4.5",
"lab": "anthropic",
"name": "Claude Opus 4.5",
"modality": "text",
"context": 200000,
"providers": ["anthropic", "openrouter", "aws"],
"offer_count": 3
}
]
}A summary of price accuracy: counts by status and the offers currently being checked or flagged as suspicious.
| Field | Type | Notes |
|---|---|---|
| id | string | Stable offer id: provider:model. |
| model / model_name | string | Canonical model id and its display name. |
| provider / lab | string | Who sells it / who built it. |
| input_price / output_price | number | null | Price in the given currency per unit. |
| cache_read_price / cache_write_price | number | null | Cached-input pricing where the provider publishes it. |
| currency / unit | string | Always explicit, e.g. USD per 1M_tokens. |
| status | string | accurate, checking, or suspicious. |
| updated_at | string | ISO timestamp of the last price change for this offer. |
The free plan allows 1,000 requests / month. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (the UTC reset time). Over the limit you get 429 with a Retry-After header.
Errors share one shape, with an HTTP status and a machine-readable code.
{
"error": {
"code": "INVALID_API_KEY",
"message": "The API key is invalid."
}
}| Code | HTTP | Meaning |
|---|---|---|
| MISSING_API_KEY | 401 | No Authorization header. |
| INVALID_API_KEY | 401 | Key not found or revoked. |
| RATE_LIMIT_EXCEEDED | 429 | Monthly limit reached. |
| NOT_FOUND | 404 | Unknown endpoint. |
| DATA_UNAVAILABLE | 503 | Pricing data temporarily unavailable. |
| SERVER_ERROR | 500 | Unexpected error. |