Anysphere Models API

The Models API from Anysphere — 1 operation(s) for models.

OpenAPI Specification

anysphere-models-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cursor Cloud Agents Models API
  description: 'Programmatically create and manage Cursor Cloud Agents that work

    autonomously on your repositories. v1 separates a durable agent

    from one or more runs: each prompt submission creates a run on the

    agent. Streaming and cancellation are scoped to the active run.

    '
  version: 1.0.0
  contact:
    email: background-agent-feedback@cursor.com
servers:
- url: https://api.cursor.com
  description: Production server
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Models
paths:
  /v1/models:
    get:
      summary: List models
      description: 'Returns a recommended set of explicit model IDs you can pass

        to the `model.id` field on POST /v1/agents. To use the

        configured default model, omit the `model` field from the

        request body entirely.

        '
      operationId: listModels
      responses:
        '200':
          description: Models retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListModelsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      tags:
      - Models
components:
  schemas:
    ModelParameterDefinition:
      type: object
      required:
      - id
      - values
      properties:
        id:
          type: string
          minLength: 1
          description: Parameter identifier. Pass as `model.params[].id`.
          example: fast
        displayName:
          type: string
          minLength: 1
          description: Human-readable label for the parameter.
          example: Fast
        values:
          type: array
          minItems: 1
          description: Permitted values for this parameter.
          items:
            $ref: '#/components/schemas/ModelParameterValueDefinition'
    ModelVariant:
      type: object
      required:
      - params
      - displayName
      properties:
        params:
          type: array
          description: Concrete parameter values that, combined with the parent model `id`, form a valid model selection. May be empty.
          items:
            type: object
            required:
            - id
            - value
            properties:
              id:
                type: string
                minLength: 1
              value:
                type: string
                minLength: 1
        displayName:
          type: string
          minLength: 1
          description: Human-readable label for this variant.
        description:
          type: string
          minLength: 1
        isDefault:
          type: boolean
          description: True for the variant Cursor selects when the user picks this model without explicit `params`.
    ModelParameterValueDefinition:
      type: object
      required:
      - value
      properties:
        value:
          type: string
          minLength: 1
          description: Permitted value for the parameter.
          example: 'true'
        displayName:
          type: string
          minLength: 1
          description: Human-readable label for the value.
          example: Fast
    ListModelsResponse:
      type: object
      required:
      - items
      properties:
        items:
          type: array
          description: Recommended models. Use `id` (and optionally `params`) when creating an agent.
          items:
            $ref: '#/components/schemas/ModelListItem'
    ModelListItem:
      type: object
      required:
      - id
      - displayName
      properties:
        id:
          type: string
          minLength: 1
          description: Pass this value as `model.id` when creating an agent.
          example: composer-2
        displayName:
          type: string
          minLength: 1
          description: Human-readable model name.
          example: Composer 2
        description:
          type: string
          minLength: 1
        aliases:
          type: array
          description: Alternate IDs that resolve to the same model.
          items:
            type: string
            minLength: 1
          example:
          - composer-latest
          - composer
        parameters:
          type: array
          description: Per-model parameter definitions, when the model accepts parameters. Use these to populate `model.params`.
          items:
            $ref: '#/components/schemas/ModelParameterDefinition'
        variants:
          type: array
          description: Concrete `id`+`params` combinations the model accepts.
          items:
            $ref: '#/components/schemas/ModelVariant'
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
              description: 'Machine-readable error code. Possible values include

                `unauthorized`, `api_key_not_found`, `plan_required`,

                `role_forbidden`, `feature_unavailable`,

                `integration_not_connected`, `validation_error`,

                `missing_body`, `invalid_model`, `invalid_branch_name`,

                `repository_required`, `repository_access`,

                `pr_resolution_failed`, `artifact_not_found`,

                `service_account_required`, `agent_not_found`,

                `run_not_found`, `agent_busy`, `agent_archived`,

                `agent_id_conflict`, `run_not_cancellable`,

                `rate_limit_exceeded`, `usage_limit_exceeded`,

                `stream_expired`, `stream_unavailable`,

                `invalid_last_event_id`, `client_cancelled`,

                `not_implemented`, `upstream_error`, and

                `internal_error`.

                '
            message:
              type: string
              description: Human-readable error message.
            helpUrl:
              type: string
              format: uri
              description: Optional follow-up link. Populated for codes like `integration_not_connected`.
            provider:
              type: string
              minLength: 1
              description: Optional provider identifier. Populated for codes like `integration_not_connected`.
  responses:
    Unauthorized:
      description: Invalid or missing API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded. Response includes `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: 'API key from Cursor Dashboard, supplied as the Basic

        Authentication username with an empty password.

        '
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key from Cursor Dashboard, supplied via

        `Authorization: Bearer <key>`. Equivalent to Basic Auth.

        '