Routing & Resilience

Model catalog

GET /v1/models returns the active model catalogue. Every entry carries the input / output capabilities, pricing, lifecycle status, and free-tier eligibility flags the router uses to decide where to send a request.

Catalog entry shape

Each row in the catalogue describes one routable mapping. A single modelName can have multiple mappings (different upstream providers, different regions, different endpoints) — the router picks one at request time.

JSON
{
  "_id": "6531a9...",
  "modelName": "gpt-4o",
  "provider": "openai",
  "providerModel": "gpt-4o",
  "group": "chat",
  "mode": "llm",
  "inputCapabilities": ["text", "image"],
  "outputCapabilities": ["text"],
  "contextWindow": 128000,
  "pricing": { "input": 0.0025, "output": 0.01, "unit": "per_1k_tokens" },
  "freeTierEligible": false,
  "lifecycleStatus": "active",
  "isActive": true
}

Sensitive fields (config.apiKey, config.endpoint) are stripped from the response unless the caller is an admin.

Capabilities

Capabilities are split into what the model accepts on input and what it returns on output. The router uses both to validate that a request can be served.

CapabilityMeaning
textPlain text. Always present.
imageVision input or generated images.
audioSpeech in (transcription) or out (TTS).
filesDocument/file attachments (e.g. PDF).
videoVideo input.
pdfPDF-specific handling (Anthropic native).
urlURL fetching for models that support it.

Pricing

Prices are stored in USD. The unit field tells you what one unit means:

UnitUsed for
per_1k_tokensDefault for chat / embedding / moderation. Bills (tokens / 1000) * pricing.
per_imageImage-generation models. Bills n_images * pricing.output.
per_secondAudio TTS / STT priced per second of audio.
per_minuteAudio TTS / STT priced per minute.
per_requestFlat per-request pricing.

The price is converted to credits at billing time using the platform's USD_TO_CREDITS conversion (1 credit = $0.001 USD).

Lifecycle status

StatusBehaviour
activeSelectable, routable.
maintenanceVisible (disabled) in the catalogue; requests blocked with 409.
deprecatedVisible (disabled); requests blocked. Use this when the upstream model has been replaced.

Setting isActive: false hides the model from the catalogue entirely (used for internal-only or fully retired entries).

Free-tier eligibility

Models with freeTierEligible: true count against the free-tier daily quota (200 requests/day for free users). Free users hit a hard wall when the quota is exhausted; paid and enterprise users transition to credit billing for the same model.

This flag is independent of the upstream provider's price (pricingTier) — admins can include zero-cost models in the free pool, or exclude expensive paid models from it.

Admin operations

Admin and owner roles can POST, PATCH, and DELETE mappings to extend or curate the catalogue. Owner-only operations include hard delete (DELETE removes the row outright; non-owners can only soft-disable via isActive: false).