> ## Documentation Index
> Fetch the complete documentation index at: https://docs.capriole.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List models

> Returns the current public model catalog.

Use this endpoint to retrieve the current public model catalog.

The catalog includes provider-level latest aliases before concrete model IDs:

* `openai-latest`
* `claude-latest`
* `google-latest`

Use a latest alias when you want Capriole AI to choose our recommended flagship model for that provider. Use a concrete model ID when you need one exact model version.

| Model choice                                      | Best for                                                                |
| ------------------------------------------------- | ----------------------------------------------------------------------- |
| `openai-latest`, `claude-latest`, `google-latest` | Configure once and let Capriole AI keep you on the recommended flagship |
| Concrete model IDs such as `openai/gpt-5.6-terra` | Pin one exact model version                                             |

Latest aliases resolve as follows on `POST /v1/chat` and `POST /v1/chat/completions`:

| Latest alias    | Resolves to                     |
| --------------- | ------------------------------- |
| `openai-latest` | `openai/gpt-5.6-terra`          |
| `claude-latest` | `anthropic/claude-fable-5`      |
| `google-latest` | `google/gemini-3.1-pro-preview` |

| Endpoint                         | Latest aliases                                    |
| -------------------------------- | ------------------------------------------------- |
| `POST /v1/chat`                  | `openai-latest`, `claude-latest`, `google-latest` |
| `POST /v1/chat/completions`      | `openai-latest`, `claude-latest`, `google-latest` |
| `POST /v1/responses`             | `openai-latest`                                   |
| `POST /v1/messages`              | `claude-latest`                                   |
| `POST /v1/messages/count_tokens` | `claude-latest`                                   |

Anthropic Messages endpoints also accept bare concrete Claude Messages IDs such as `claude-opus-4-8`, `claude-opus-4-7`, `claude-opus-4-6`, and `claude-sonnet-4-6`.

On `POST /v1/messages` and `POST /v1/messages/count_tokens`, `claude-latest` remains pinned to `claude-opus-4-8` for Claude Code compatibility.

Use the bare alias IDs shown above. Provider prefixes such as `openai/openai-latest` are client-side selector patterns, not Capriole AI model IDs.


## OpenAPI

````yaml api-reference/openapi.json GET /v1/models
openapi: 3.1.0
info:
  title: Capriole AI API
  description: >-
    Public API for model discovery, text chat, and protocol-compatible model
    endpoints.
  version: 1.0.0
servers:
  - url: https://api.caprioletech.com
security: []
paths:
  /v1/models:
    get:
      summary: List public models
      description: Returns the current public model catalog.
      operationId: listModels
      responses:
        '200':
          description: Public model list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPublicModelsResponse'
              examples:
                default:
                  value:
                    data:
                      - id: openai-latest
                      - id: openai/gpt-5.6-terra
                      - id: openai/gpt-5.6-luna
                      - id: openai/gpt-5.5
                      - id: openai/gpt-5.4-mini
                      - id: claude-latest
                      - id: anthropic/claude-fable-5
                      - id: anthropic/claude-opus-4-8
                      - id: anthropic/claude-opus-4-7
                      - id: anthropic/claude-opus-4-6
                      - id: anthropic/claude-sonnet-4-6
                      - id: google-latest
                      - id: google/gemini-3.1-pro-preview
                      - id: google/gemini-3.5-flash
                      - id: xai/grok-4.5
                      - id: zai/glm-5.2
        '429':
          $ref: '#/components/responses/RateLimitErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
components:
  schemas:
    ListPublicModelsResponse:
      type: object
      required:
        - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PublicModelItem'
    PublicModelItem:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: Model identifier
    DetailError:
      type: object
      required:
        - detail
      properties:
        detail:
          type: string
          description: Error detail from the API
  responses:
    RateLimitErrorResponse:
      description: Rate limit error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DetailError'
          examples:
            rateLimitExceeded:
              value:
                detail: 'Rate limit exceeded: 100 per 1 minute'
    InternalServerErrorResponse:
      description: Internal server error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DetailError'
          examples:
            internalServerError:
              value:
                detail: An internal server error occurred. Please try again later.

````