# List (https://docs.capy.ai/api-reference/models/list)

`GET https://api.capy.ai/api/v1/models`

## Authorization

Send an API key as a bearer token: `Authorization: Bearer $CAPY_API_KEY`. See https://docs.capy.ai/api-reference/authentication.md.

## Responses

- `200` ModelList: `ModelListEncoded`
- `401` capy/Unauthorized: `capy_UnauthorizedEncoded`
- `403` capy/Forbidden: `capy_ForbiddenEncoded`
- `429` capy/RateLimited: `capy_RateLimitedEncoded`

## Example

```bash
curl -X GET "https://api.capy.ai/api/v1/models" \
  -H "Authorization: Bearer $CAPY_API_KEY"
```

## Referenced schemas

```json
{
  "ModelListEncoded": {
    "type": "object",
    "properties": {
      "items": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ModelEncoded"
        }
      },
      "default": {
        "$ref": "#/components/schemas/DefaultedModel_1"
      }
    },
    "required": [
      "items",
      "default"
    ],
    "additionalProperties": false
  },
  "ModelEncoded": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string",
        "description": "The catalog id to pass as `model.modelId`."
      },
      "name": {
        "type": "string"
      },
      "billing": {
        "type": "string",
        "description": "The connection that pays for this model: `Capy API` for Capy credits, or the subscription or key that serves it."
      },
      "route": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "member_seat",
              "member_credential",
              "org_credential",
              "capy"
            ]
          },
          {
            "$ref": "#/components/schemas/UnsupportedMember_10"
          }
        ],
        "description": "`capy` for Capy credits, `org_credential` for an organization key, `member_credential` for the key owner's own key, and `member_seat` for a connected subscription."
      },
      "reasoningModes": {
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "none",
            "instant",
            "minimal",
            "low",
            "medium",
            "high",
            "xhigh",
            "max"
          ]
        }
      },
      "fast": {
        "type": "boolean"
      },
      "pro": {
        "type": "boolean"
      },
      "ultrafast": {
        "type": "boolean"
      }
    },
    "required": [
      "id",
      "name",
      "billing",
      "route",
      "reasoningModes",
      "fast",
      "pro",
      "ultrafast"
    ],
    "additionalProperties": false
  },
  "UnsupportedMember_10": {
    "type": "string"
  },
  "DefaultedModel_1": {
    "type": "object",
    "properties": {
      "modelId": {
        "type": "string"
      },
      "source": {
        "type": "string",
        "enum": [
          "personal",
          "service_user",
          "slack",
          "linear",
          "org",
          "platform"
        ],
        "description": "Which default supplied the model: `personal` is the human's own default, `service_user` the service user's, `slack` the person's Slack default, `linear` the person's Linear default, `org` the organization default, and `platform` Capy's default."
      },
      "skipped": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ModelDefaultSkip"
        },
        "description": "Earlier defaults in the chain that could not run when the message was admitted, in chain order."
      }
    },
    "required": [
      "modelId",
      "source",
      "skipped"
    ],
    "additionalProperties": false,
    "description": "The model a thread created with this key and no `model` starts on, and the default that supplied it."
  },
  "ModelDefaultSkip": {
    "type": "object",
    "properties": {
      "modelId": {
        "type": "string"
      },
      "source": {
        "type": "string",
        "enum": [
          "personal",
          "service_user",
          "slack",
          "linear",
          "org",
          "platform"
        ],
        "description": "Which default supplied the model: `personal` is the human's own default, `service_user` the service user's, `slack` the person's Slack default, `linear` the person's Linear default, `org` the organization default, and `platform` Capy's default."
      },
      "reason": {
        "type": "string",
        "description": "Why this default could not run."
      }
    },
    "required": [
      "modelId",
      "source",
      "reason"
    ],
    "additionalProperties": false
  },
  "capy_UnauthorizedEncoded": {
    "type": "object",
    "properties": {
      "_tag": {
        "type": "string",
        "enum": [
          "capy/Unauthorized"
        ]
      }
    },
    "required": [
      "_tag"
    ],
    "additionalProperties": false
  },
  "capy_ForbiddenEncoded": {
    "type": "object",
    "properties": {
      "_tag": {
        "type": "string",
        "enum": [
          "capy/Forbidden"
        ]
      },
      "mfaRequiredOrgId": {
        "type": "string"
      },
      "ssoRequired": {
        "type": "boolean"
      },
      "passkeyRequired": {
        "type": "boolean"
      }
    },
    "required": [
      "_tag"
    ],
    "additionalProperties": false
  },
  "capy_RateLimitedEncoded": {
    "type": "object",
    "properties": {
      "_tag": {
        "type": "string",
        "enum": [
          "capy/RateLimited"
        ]
      },
      "retryAfterSeconds": {
        "type": "integer"
      }
    },
    "required": [
      "_tag",
      "retryAfterSeconds"
    ],
    "additionalProperties": false
  }
}
```

Full document: https://docs.capy.ai/openapi.json