Catalog

List the models and regions available to your organization — the vocabulary allowlists are written in.

Read-only lists of the models and regions your organization can use.

EndpointScopeToken owner's role
GET /catalog/modelscatalog:readAny member
GET /catalog/regionscatalog:readAny member

Why this lives on the Management API: it is the vocabulary allowlists are written in. Before a pipeline writes a project's model allowlist, it should validate every id it is about to write against this list. A management client that guesses model ids will guess wrong.

This API reflects the catalog; it never changes it. At inference time, GET /v1/models lists what one key can route to.

List models

GET /api/v1/mgmt/catalog/models

The live model catalog as the portal's Models page shows it: enabled models only — disabled and retired models never appear. Each entry is the public model card, the same object GET /v1/models returns, priced at the rate your organization is billed, plus four Management API fields: mode, status, capabilities and regions. Ordered by id descending (the catalog has no creation time); paginated with limit and cursor like every other list.

Warning

Changed in 0.16.1. This response used to carry provider, max_completion_tokens, input_modalities, output_modalities and a pricing object of currency plus a per-1M-token rates map. Those fields are gone, with no deprecation window (the Management API had not reached production). Read architecture.input_modalities / output_modalities, max_output and the per-unit pricing strings below instead.

id, name, object, created, owned_by, architecture, top_provider, mode, status, capabilities and regions are always present. Every other card field is omitted when the catalog has no value for that model.

FieldTypeNotes
idstringThe model name to send as model and to write in allowlists (provider/model). See Models & aliases.
namestringDisplay name set by the operator, else the id.
objectstringAlways model.
createdintegerUnix time the model was added to the catalog.
owned_bystringAlways Token Factory.
canonical_slug, hugging_face_idstringOpenRouter slug and Hugging Face id, when known.
descriptionstringShort model description.
context_length, context_windowintegerContext window in tokens (the same value under its OpenRouter and product names).
max_outputintegerMaximum output tokens (same as top_provider.max_completion_tokens).
architectureobjectinput_modalities and output_modalities (text, image, audio, video, file, embeddings) and modality (e.g. "text+image->text"), plus tokenizer / instruct_type when known.
top_providerobjectThe model's limits as served (context_length, max_completion_tokens) and is_moderated. It never names a provider.
supported_parametersstring[]Request parameters the model accepts.
default_parametersobjectDefault sampling values.
supported_voicesstring[]Voices a text-to-speech model accepts.
knowledge_cutoffstringAs published for the model.
expiration_datestringAnnounced end-of-service date, when one is set.
pricingobjectWhat your organization is billed (below).
modestringchat, embedding, image, tts, stt, video, rerank — which endpoints it serves.
statusstringProvisioning status of the model, e.g. ready.
capabilitiesobjectCapability flags, boolean only, e.g. {"vision": true, "tools": true}.
regionsstring[]Regions the model is served and priced in, e.g. ["default"]. pricing is the default region price.

pricing is the same object as on GET /v1/models: every price is a decimal string in USD per one unit, and unit says what the unit is.

unitModelsFields
tokenchat, embeddingsprompt (input token), completion (output token), input_cache_read, input_cache_write (prompt-cache tokens)
charactertext-to-speechprompt (input character)
imageimage generationimage_output (generated image)
secondspeech-to-textprompt (second of audio)
secondvideovideo_output (second of video)
documentrerankprompt (document)

A field appears only when the model has that price: an embedding model has no completion, and when input_cache_read / input_cache_write are absent, cached tokens are billed at prompt. A model without pricing has an unknown price, not a free one. To quote per 1M tokens, multiply prompt by 1,000,000.

curl -G https://portal.<domain>/api/v1/mgmt/catalog/models \
  -H "Authorization: Bearer $TF_PAT" \
  -d limit=200
{
  "data": [
    {
      "id": "openai/gpt-4o",
      "name": "GPT-4o",
      "object": "model",
      "created": 1715558400,
      "owned_by": "Token Factory",
      "description": "OpenAI's multimodal flagship.",
      "context_length": 128000,
      "context_window": 128000,
      "max_output": 16384,
      "architecture": {
        "modality": "text+image->text",
        "input_modalities": ["text", "image"],
        "output_modalities": ["text"]
      },
      "pricing": {
        "unit": "token",
        "prompt": "0.0000025",
        "completion": "0.00001",
        "input_cache_read": "0.00000125"
      },
      "top_provider": { "context_length": 128000, "max_completion_tokens": 16384, "is_moderated": false },
      "supported_parameters": ["max_tokens", "stop", "temperature", "tool_choice", "tools", "top_p"],
      "knowledge_cutoff": "2023-10",
      "mode": "chat",
      "status": "ready",
      "capabilities": { "vision": true, "tools": true },
      "regions": ["default"]
    }
  ],
  "has_more": false,
  "next_cursor": null
}

A model with an expiration_date is still callable until that date; plan the move off it before then.

List regions

GET /api/v1/mgmt/catalog/regions

Derived from the model list: the distinct regions your organization's models are served in, with how many models each serves. Paginated.

FieldTypeNotes
idstringThe region id.
model_countintegerHow many of the listed models this region serves.
curl https://portal.<domain>/api/v1/mgmt/catalog/regions \
  -H "Authorization: Bearer $TF_PAT"
{
  "data": [
    { "id": "default", "model_count": 42 }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors specific to the catalog

StatusCodeWhen
403insufficient_scopeToken lacks catalog:read.
422unsupported_filterAny query parameter other than limit/cursor.
502upstream_unavailableThe model catalog is temporarily unavailable. Retry.