API JSON response
Shape returned by the authenticated providers API and the public live dump. Credentials are never included.
| Method | Path | Auth | Body |
|---|---|---|---|
| GET | /providers | Bearer PROVIDER_SERVICE_TOKEN |
Same as below (items only) |
| GET | /catalog.json | None (public) | items + syncedAt |
| GET | /events | None (SSE) | Live catalog events with the same JSON body |
Last refresh: 2026-11-15T04:00:15.204Z
Response fields
| Field | Type | Notes |
|---|---|---|
| items | CatalogProvider[] | Hardcoded providers, refreshed on an interval |
| items[].key | string | Stable id Lintas AI stores as catalogKey |
| items[].name | string | Display name |
| items[].baseUrl | string | OpenAI-compatible base URL for completions |
| items[].models | CatalogModel[] | Ids, windows, capabilities, prices |
| models[].id | string | Vendor model id used for chat |
| models[].contextWindow | number | null | Tokens; null when unknown |
| models[].maxOutput | number | null | Tokens; null when unknown |
| models[].capabilities | string[] | e.g. chat, vision, reasoning |
| models[].prices | object | null | USD per 1M tokens; null when unpriced |
| prices.inputPerMillion | number | Live input rate |
| prices.outputPerMillion | number | Live output rate |
| prices.cacheReadPerMillion | number | Cached input read |
| prices.cacheWritePerMillion | number | Cache write |
| syncedAt | string | null | ISO time of last successful refresh (public JSON only) |
Example
{
"items": [
{
"key": "tokenizer",
"name": "Tokenizer",
"baseUrl": "https://tokenizer.id/v1",
"models": [
{
"id": "deepseek-v4.1-flash",
"contextWindow": 1048576,
"maxOutput": 393216,
"capabilities": ["chat", "vision", "reasoning", "tools"],
"prices": {
"inputPerMillion": 0.0128248,
"outputPerMillion": 0.0513009,
"cacheReadPerMillion": 0.00128248,
"cacheWritePerMillion": 0.016031
}
}
]
}
],
"syncedAt": "2026-11-14T14:00:00.000Z"
}
Open the live payload: /catalog.json