indextkn API

Live list prices for every AI model across every provider, as a stable JSON API. Create a key on your dashboard, then start querying.

Authentication

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_KEY

Base URL

indextkn-api-production.up.railway.app/api/v1

Quick start

curl indextkn-api-production.up.railway.app/api/v1/prices \
  -H "Authorization: Bearer YOUR_API_KEY"

Endpoints

GET /api/v1/prices

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"
    }
  ]
}

GET /api/v1/models

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
    }
  ]
}

GET /api/v1/status

A summary of price accuracy: counts by status and the offers currently being checked or flagged as suspicious.

Response fields

FieldTypeNotes
idstringStable offer id: provider:model.
model / model_namestringCanonical model id and its display name.
provider / labstringWho sells it / who built it.
input_price / output_pricenumber | nullPrice in the given currency per unit.
cache_read_price / cache_write_pricenumber | nullCached-input pricing where the provider publishes it.
currency / unitstringAlways explicit, e.g. USD per 1M_tokens.
statusstringaccurate, checking, or suspicious.
updated_atstringISO timestamp of the last price change for this offer.

Status values

Rate limits

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

Errors share one shape, with an HTTP status and a machine-readable code.

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "The API key is invalid."
  }
}
CodeHTTPMeaning
MISSING_API_KEY401No Authorization header.
INVALID_API_KEY401Key not found or revoked.
RATE_LIMIT_EXCEEDED429Monthly limit reached.
NOT_FOUND404Unknown endpoint.
DATA_UNAVAILABLE503Pricing data temporarily unavailable.
SERVER_ERROR500Unexpected error.