Models

GET /v1/models — list the models connected providers are serving right now.
An OpenAI-shaped /v1/models. It returns the models that have at least one routable provider right now, so the list changes as Macs come online and go offline. Authentication required. Unauthenticated calls return 401 missing_bearer_token.

Endpoint

Response

This is a live response from 23 Sep 2026, trimmed, after the 17-model signed catalog went live. Call the endpoint for the current set.
Model identity is provider-reported. Hash matching is a check against the catalog. It is not hardware attestation, and it cannot detect a provider that falsifies its own hash measurement. See Security & trust model.

From Python

Availability

A model appears when at least one routable provider is serving it. If no routable provider is left, the model drops off the list. Requests for a model no provider advertises return 404 model_not_found. Requests for a listed model whose slots are all busy wait briefly for a free slot, then return 503 no_provider_available. For the same availability without a key, use the public routability snapshot (GET /v1/stats/models).

Listed now vs catalog

/v1/models shows only what is routable right now: models with at least one routable provider. Both warm models in the response above are covered by the live 17-model signed catalog (catalogued: true). For priced rows and the signed catalog, including models no provider has loaded, see Operations → Model catalog. A public, OpenRouter-format listing of every priced catalog row is at GET https://api.malibu.tech/v1/openrouter/models (no key needed). A row there does not mean a provider is serving it.

Rate card

Per-model pricing, public:
Each row has prompt_rate_per_mtok, completion_rate_per_mtok, and prompt_cache_hit_rate_per_mtok in credits per million tokens. usd_per_million_credits (currently 1.0) converts credits to USD. Rate-card keys are normalized slugs, not serve IDs: mlx-community/Llama-3.2-3B-Instruct-4bit bills against the meta-llama/llama-3.2-3b-instruct row. A model with no matching row falls back to the default row. The detached signature is at GET /v1/rate-card.sig. Dated comparison: Pricing comparison.