> ## Documentation Index
> Fetch the complete documentation index at: https://abstract-pbc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# List LLM models

> Lists the LLM model ids. The robot models are listed in [Robot models](/robots/models).



## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/models
openapi: 3.1.0
info:
  title: Abstract API
  version: 1.0.0
  summary: Robot action models and LLMs behind one API key.
  description: >
    `POST /v1/chat/completions` serves the LLM models. `GET
    /v1/chat/completions/{completion_id}`

    reads an LLM completion your account created. `POST /v1/get_action` and
    `POST /v1/end_session`

    serve the robot action models in Dream Labs' request shape. `GET /v1/models`
    lists the LLM model ids.
  contact:
    name: Abstract
    url: https://abstract.inc
servers:
  - url: https://api.abstract.inc
security:
  - bearerAuth: []
tags:
  - name: Chat completions
  - name: Robot actions
    description: End-effector and model-specific native joint action contracts.
  - name: Catalog
  - name: CLI credentials
paths:
  /v1/models:
    get:
      tags:
        - Catalog
      summary: List LLM models
      description: >-
        Lists the LLM model ids. The robot models are listed in [Robot
        models](/robots/models).
      operationId: listModels
      parameters:
        - $ref: '#/components/parameters/AbstractVersion'
      responses:
        '200':
          description: The LLM models.
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Abstract-Version:
              $ref: '#/components/headers/AbstractVersion'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelList'
              example:
                object: list
                data:
                  - id: kimi-k3.1-pro
                    object: model
                    owned_by: abstract
                    capabilities:
                      chat_completions: true
                      streaming: true
                      streaming_mode: live
                  - id: glm-5.3
                    object: model
                    owned_by: abstract
                    capabilities:
                      chat_completions: true
                      streaming: true
                      streaming_mode: live
                  - id: glm-5.3-flash
                    object: model
                    owned_by: abstract
                    capabilities:
                      chat_completions: true
                      streaming: true
                      streaming_mode: live
                  - id: deepseek-v4.1-flash
                    object: model
                    owned_by: abstract
                    capabilities:
                      chat_completions: true
                      streaming: true
                      streaming_mode: live
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/Unavailable'
components:
  parameters:
    AbstractVersion:
      name: Abstract-Version
      in: header
      required: false
      description: >-
        The API version your client was written for. `2026-10-27` is the only
        version. Without this header the request is answered under the newest
        version; a version the API does not answer is refused with `400
        unsupported_api_version` before anything runs.
      schema:
        type: string
        enum:
          - '2026-10-27'
  headers:
    RequestId:
      description: >-
        `req_` and 32 hex characters, new for each HTTP attempt, a retry
        included. An error repeats it as `error.request_id`. Quote it when you
        report a problem.
      schema:
        type: string
        pattern: ^req_[0-9a-f]{32}$
    AbstractVersion:
      description: >-
        The API version this answer was made under: the `Abstract-Version` the
        request sent, or the newest version when it sent none.
      schema:
        type: string
  schemas:
    ModelList:
      type: object
      required:
        - object
        - data
      properties:
        object:
          type: string
          const: list
        data:
          type: array
          items:
            type: object
            required:
              - id
              - object
              - owned_by
              - capabilities
            properties:
              id:
                type: string
              object:
                type: string
                const: model
              owned_by:
                type: string
              capabilities:
                type: object
                properties:
                  chat_completions:
                    type: boolean
                  streaming:
                    type: boolean
                  streaming_mode:
                    type: string
                    enum:
                      - live
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - type
            - code
            - retryable
            - retry_after_s
            - request_id
          properties:
            message:
              type: string
              description: For people. It can change.
            type:
              type: string
            param:
              type:
                - string
                - 'null'
              description: The request field at fault, when one is.
            code:
              type: string
              description: Branch on this. See [Errors and limits](/errors).
            retryable:
              type: boolean
              description: >-
                Whether this same request may be sent again. When the route
                gives no answer of its own, `true` for 408, 429 and 503.
            retry_after_s:
              type:
                - number
                - 'null'
              description: The `Retry-After` header in seconds, or `null`.
            request_id:
              type: string
              pattern: ^req_[0-9a-f]{32}$
              description: >-
                This answer's `Request-Id` header. Quote it when you report a
                problem.
  responses:
    Unauthorized:
      description: '`missing_api_key` or `invalid_api_key`.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              message: Invalid API key.
              type: invalid_request_error
              code: invalid_api_key
    Unavailable:
      description: >-
        A dependency is down, for example `auth_unavailable`,
        `billing_unavailable`, `metering_unavailable` or `engine_unavailable`.
        Retry with backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your Abstract API key. Get it with `abstract login`, pass it as
        `$(abstract token)`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.