List the in-code model provider registry

Returns the catalog of LLM providers Appstrate knows how to talk to. The UI uses this to render the provider picker without hard-coding the catalog client-side. Supports offset pagination (limit/offset) and a fields projection selector — request ?fields=providerId,authMode to skip the heavy per-provider models catalog (the bulk of the payload) when you only need to know which providers exist.

GET/api/model-provider-credentials/registry

Authorization

better-auth.session_token<token>

Cookie session from Better Auth. Requires X-Org-Id header for org-scoped routes.

In: cookie

Query Parameters

limit?integer
Default100
Range1 <= value <= 100
offset?integer

Number of items to skip before the first returned item.

Default0
Range0 <= value
fields?string

Comma-separated allowlist of fields to return per provider (providerId is always included). Allowed: providerId, displayName, iconUrl, description, docsUrl, apiShape, defaultBaseUrl, baseUrlOverridable, authMode, featured, live_model_search, models. An unknown field is a 400.

Header Parameters

X-Org-Id?string

Organization ID. Required for cookie auth. Not needed for API key auth (org resolved from key).

Formatuuid
curl -X GET "https://your-instance/api/model-provider-credentials/registry"
{
  "object": "list",
  "data": [
    {
      "providerId": "string",
      "displayName": "string",
      "iconUrl": "string",
      "description": "string",
      "docsUrl": "string",
      "apiShape": "anthropic-messages",
      "defaultBaseUrl": "string",
      "baseUrlOverridable": true,
      "authMode": "api_key",
      "featured": true,
      "live_model_search": true,
      "models": [
        {
          "id": "string",
          "label": "string",
          "contextWindow": 0,
          "maxTokens": 0,
          "capabilities": [
            "string"
          ],
          "generation": {
            "temperature": "supported",
            "reasoning": {
              "supported": "supported",
              "temperature_compatible": "supported",
              "adaptive": true,
              "levels": {
                "property1": "supported",
                "property2": "supported"
              }
            }
          },
          "cost": {
            "input": 0,
            "output": 0,
            "cacheRead": 0,
            "cacheWrite": 0,
            "tiers": [
              {
                "inputTokensAbove": 0,
                "input": 0,
                "output": 0,
                "cacheRead": 0,
                "cacheWrite": 0
              }
            ]
          },
          "featured": true
        }
      ]
    }
  ],
  "total": 0,
  "hasMore": true
}
{
  "type": "https://docs.appstrate.dev/errors/unauthorized",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Invalid or missing session",
  "code": "unauthorized",
  "request_id": "req_abc123"
}
{
  "type": "https://docs.appstrate.dev/errors/forbidden",
  "title": "Forbidden",
  "status": 403,
  "detail": "Insufficient permissions",
  "code": "forbidden",
  "request_id": "req_abc123"
}