---
title: "Get the full model catalog"
method: GET
path: "/models/catalog"
tags: ["AI"]
---

# Get the full model catalog

`GET /models/catalog`

Return the full public model catalog — the picker model list plus the scalar globals (default chat model, featured flags/labels, promo end date, deprecation map). This is the runtime, fleet-fresh equivalent of the baked types/generated/models.ts manifest, built from the same source so the two never drift. Public (no auth); host-specific disabled models are filtered separately at request time. Cached for 5 minutes.

## Response `200`

Successful Response

- ModelCatalogResponse — Full public model catalog served by ``GET /models/catalog``. Mirrors the baked ``types/generated/models.ts`` manifest (the picker list plus the scalar globals) so the web app can fetch live catalog data at runtime and fall back to the baked copy when the fetch is pending or fails.
  - `models` PublicModelChoice[], required — The picker model list, sorted by priority
    - `value` string, required — Public model identifier (e.g. 'zo:openai/gpt-5.4')
    - `label` string, required — User-friendly model name
    - `description` string, nullable — Plain-language picker description
    - `quality_tier` 1 | 2 | 3, nullable — 1-3 star quality rating; null for hidden/non-rated variants
    - `is_fast` boolean — Whether to render the speed (zap) badge
    - `url` string, nullable — Model info URL
    - `release_date` string, nullable — Release date (YYYY-MM-DD)
    - `slug` string, required — Model slug
    - `vendor` string, required — Model provider display name
    - `vendor_slug` string, required — Model provider slug (drives the vendor icon)
    - `country` string, nullable — ISO 3166-1 alpha-2 country code
    - `type` string, required — Access tier: 'free' (available to all) or 'subscribers' (premium metered)
    - `meter` string, required — Billing meter event name (e.g. 'chat', 'image')
    - `priority` number, nullable — Sort priority for pickers; lower values first
    - `knowledge_cutoff_date` string, nullable — Knowledge cutoff date (chat models only)
    - `context_window` integer, nullable — Maximum context length in tokens (chat models only)
    - `supports_images` boolean — Whether the model accepts image input
    - `features` string[] — Capability flags (e.g. 'extend_reasoning')
    - `reasoning` union — Reasoning-control UI config, if any
      - CatalogReasoningLevels — Reasoning configured as discrete levels (e.g. low/medium/high).
        - `kind` 'levels', required — Discriminator: reasoning selected from discrete levels
        - `levels` CatalogReasoningLevel[], required — Available reasoning levels, lowest first
          - `value` integer, required — Slider position (0-based) for this reasoning level
          - `label` string, required — Human-readable label, e.g. 'High reasoning'
      - CatalogReasoningRange — Reasoning configured as a continuous thinking-token budget.
        - `kind` 'range', required — Discriminator: reasoning is a continuous token budget
        - `min_tokens` integer, required — Minimum thinking-token budget
        - `max_tokens` integer, required — Maximum thinking-token budget
    - `input_tok_price` string, nullable — Price per input token (cents)
    - `output_tok_price` string, nullable — Price per output token (cents)
    - `cached_read_tok_price` string, nullable — Price per cached-read token (cents)
    - `cached_write_tok_price` string, nullable — Price per cached-write token (cents)
    - `input_audio_minutes_price` string, nullable — Price per minute of audio input (cents)
    - `output_megapixel_price` string, nullable — Price per megapixel of image output (cents)
    - `output_video_seconds_price` string, nullable — Price per second of video output (cents)
    - `tier_threshold_input_tokens` integer, nullable — Input-token threshold above which higher-tier pricing applies
    - `tier_higher_input_tok_price` string, nullable — Higher-tier input token price (cents)
    - `tier_higher_output_tok_price` string, nullable — Higher-tier output token price (cents)
    - `hide_from_ui` boolean — Whether the model is hidden from UI pickers
  - `default_chat_model_id` string, required — Public id of the default chat model
  - `featured_model_ids` string[], required — Public ids of featured ('Free' badge) models
  - `featured_models_are_free` boolean, required — When true, the frontend shows a Free badge on featured models
  - `featured_model_labels` string[], required — Labels for featured_model_ids, in order
  - `promo_end_date` string, nullable — Promo end date (YYYY-MM-DD) or null
  - `deprecation_map` object, required — Map of deprecated public model id → active successor public id

---

[API](https://skmtc.dev/zocomputer/apis/zo-api.md) · [All operations](https://skmtc.dev/zocomputer/apis/zo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zocomputer/zo-api/revisions/70e0bef5d780/schema)
