AI Gateway is now available: identity-aware access to any AI provider, eliminate API keys, and tunnel to self-hosted models. Get started

AI Gateway

Model Catalog

Known models, pricing for budgets, and how to load a custom catalog

The model catalog is Pangolin's list of known model ids, which provider type owns them, and token pricing. It is used for:

  • The Known Models picker on a provider's Models tab
  • Expanding wildcard allows in GET /v1/models
  • Provider selection when more than one attached provider allows the same id
  • Budgets and usage cost, which look up in / out / cache / reasoning rates for a model key

See Model Routing for allow lists, inherit vs select, and how those lists combine with the catalog at request time.

Catalog Providers

Default source: https://api.fossorial.io/api/v1/models. Typed AI provider types map as follows:

Provider typeCatalog
OpenAIopenai
Anthropicanthropic
Google Geminigemini
Vertex AIvertex
Amazon Bedrockbedrock
Microsoft Foundryazure
OpenRouter, Vercel AI Gateway, Custom(not mapped)

Unmapped types skip Known Models and wildcard expansion against the catalog. Enter exact keys if you need them listed in discovery.

Pricing and Budgets

Each catalog entry can include token rates: in, out, cache, and reasoning. Budget enforcement and usage analytics use those rates when the requested model matches a catalog id. Unknown keys have no catalog price, so they do not count toward USD budgets. Add custom models to the catalog if you need cost tracking for them. Token budgets still sum usage for unknown ids. Cost is per token.

Loading a Custom Catalog

Self-hosted Pangolin loads and refreshes the catalog from config.yml:

ai:
  model_catalog:
    upstream_url: "https://api.fossorial.io/api/v1/models"
    file: "config/ai-models.json"
    merge_file: "config/ai-models-extra.json"
    refresh_interval_min_hours: 6
    refresh_interval_max_hours: 12
KeyPurpose
upstream_urlHTTP GET for the catalog JSON. Defaults to the Fossorial API. Point this at your own endpoint to serve a custom catalog.
fileLocal JSON file that replaces the HTTP catalog.
merge_fileLocal JSON merged on top of the base catalog. Base entries win on duplicates; the merge file only adds missing models.
refresh_interval_min_hours / max_hoursBackground refresh window. The interval is jittered between min and max so many instances do not hit the upstream at the same moment. Defaults are 6 and 12.

If both file and upstream_url are set, file is used as the base. merge_file still applies.

Catalog files and API responses are JSON:

{
  "data": [
    {
      "model": "gpt-4o",
      "provider": "openai",
      "pricing": {
        "in": 0.0000188,
        "out": 0.0000188,
        "cache": null,
        "reasoning": null
      }
    }
  ]
}

provider must be openai, anthropic, gemini, vertex, azure, or bedrock. Prefixes bedrock*, vertex*, and azure* are accepted and normalized to those catalogs. Unknown providers are skipped.

Was this page helpful?

⌘I

On this page