# `GET /v1/models` — List available models

Part of the [Bkper AI Gateway API](https://bkper.com/docs/api/ai-gateway.md). Read its guide for authentication, conventions, and examples.

Returns all current model IDs, model types, effective capabilities, and usage rates available through Bkper AI.

## Operation contract

```json
{
  "tags": [
    "Models"
  ],
  "operationId": "listModels",
  "summary": "List available models",
  "description": "Returns all current model IDs, model types, effective capabilities, and usage rates available through Bkper AI.",
  "security": [],
  "responses": {
    "200": {
      "description": "Available Bkper AI models",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ModelList"
          }
        }
      }
    }
  }
}
```

## Schemas

### ModelList

```json
{
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "list"
      ],
      "description": "Object type. Always list."
    },
    "default_model": {
      "type": "string",
      "description": "Current default language model ID."
    },
    "data": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/Model"
          },
          {
            "$ref": "#/components/schemas/DecisionModel"
          }
        ]
      },
      "description": "Current discoverable model profiles across supported model types."
    }
  },
  "required": [
    "object",
    "default_model",
    "data"
  ]
}
```

### Model

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Stable, versionless canonical model ID to send in POST /v1/responses."
    },
    "object": {
      "type": "string",
      "enum": [
        "model"
      ],
      "description": "Object type. Always model."
    },
    "type": {
      "type": "string",
      "enum": [
        "language"
      ],
      "description": "Model type. Language models use POST /v1/responses."
    },
    "created": {
      "type": "integer",
      "minimum": 0,
      "description": "Unix timestamp for this public model profile."
    },
    "owned_by": {
      "type": "string",
      "description": "Organization that develops or owns the model."
    },
    "display_name": {
      "type": "string",
      "description": "Human-readable canonical model family name."
    },
    "input_modalities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "text",
          "image"
        ]
      },
      "description": "Input modalities accepted by this model through Bkper AI."
    },
    "pricing": {
      "$ref": "#/components/schemas/ModelPricing"
    },
    "default_thinking_level": {
      "type": "string",
      "enum": [
        "none",
        "minimal",
        "low",
        "medium",
        "high",
        "xhigh",
        "max"
      ],
      "description": "Default reasoning effort when the client does not choose one."
    },
    "context_window": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Maximum supported request context in tokens."
    },
    "max_output_tokens": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Maximum output-token limit accepted for this model."
    },
    "thinking_levels": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "none",
          "minimal",
          "low",
          "medium",
          "high",
          "xhigh",
          "max"
        ]
      },
      "description": "Reasoning-effort values accepted for this model."
    },
    "structured_output": {
      "type": "object",
      "properties": {
        "json_schema": {
          "type": "boolean",
          "description": "Whether JSON Schema structured output is supported."
        },
        "strict": {
          "type": "boolean",
          "description": "Whether strict JSON Schema enforcement is supported."
        }
      },
      "required": [
        "json_schema",
        "strict"
      ],
      "description": "Structured-output capabilities. Omitted when unsupported."
    },
    "inline_file_extensions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Supported inline file extensions. Omitted when unsupported."
    },
    "prompt_cache_ttl_seconds": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Minimum lifetime in seconds of the prompt cache entry a request creates, refreshed by each reuse. Omitted when the provider documents no reliable lifetime."
    },
    "mid_conversation_system_messages": {
      "type": "boolean",
      "description": "System and developer messages sent after the conversation starts stay at their position, so adding one keeps the cached prefix. Omitted when such messages are folded into the leading instructions."
    }
  },
  "required": [
    "id",
    "object",
    "type",
    "created",
    "owned_by",
    "display_name",
    "input_modalities",
    "pricing",
    "default_thinking_level",
    "context_window",
    "max_output_tokens",
    "thinking_levels"
  ]
}
```

### ModelPricing

```json
{
  "type": "object",
  "properties": {
    "inputNanoUsdPerToken": {
      "type": "integer",
      "minimum": 0,
      "description": "Effective uncached-input rate in nano-USD per token."
    },
    "cachedInputNanoUsdPerToken": {
      "type": "integer",
      "minimum": 0,
      "description": "Effective cache-read input rate in nano-USD per token."
    },
    "cacheWriteNanoUsdPerToken": {
      "type": "integer",
      "minimum": 0,
      "description": "Effective cache-write input rate in nano-USD per token."
    },
    "outputNanoUsdPerToken": {
      "type": "integer",
      "minimum": 0,
      "description": "Effective output rate in nano-USD per token."
    }
  },
  "required": [
    "inputNanoUsdPerToken",
    "cachedInputNanoUsdPerToken",
    "cacheWriteNanoUsdPerToken",
    "outputNanoUsdPerToken"
  ],
  "description": "Effective Bkper AI usage rates. One nano-USD is 0.000000001 USD."
}
```

### DecisionModel

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Stable, versionless canonical model ID to send in POST /v1/decisions."
    },
    "object": {
      "type": "string",
      "enum": [
        "model"
      ],
      "description": "Object type. Always model."
    },
    "type": {
      "type": "string",
      "enum": [
        "decision"
      ],
      "description": "Model type. Decision models use POST /v1/decisions."
    },
    "created": {
      "type": "integer",
      "minimum": 0,
      "description": "Unix timestamp for this public model profile."
    },
    "owned_by": {
      "type": "string",
      "description": "Organization that develops or owns the model."
    },
    "display_name": {
      "type": "string",
      "description": "Human-readable canonical model family name."
    },
    "input_modalities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "text"
        ]
      },
      "description": "Input modalities accepted by this decision model."
    },
    "pricing": {
      "$ref": "#/components/schemas/DecisionModelPricing"
    },
    "context_window": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Maximum combined request context in tokens."
    },
    "max_state_question_tokens": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Maximum tokens for state plus the longest individual question."
    },
    "question_types": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "noul",
          "choice",
          "score"
        ]
      },
      "description": "Question types accepted by this decision model."
    }
  },
  "required": [
    "id",
    "object",
    "type",
    "created",
    "owned_by",
    "display_name",
    "input_modalities",
    "pricing",
    "context_window",
    "max_state_question_tokens",
    "question_types"
  ]
}
```

### DecisionModelPricing

```json
{
  "type": "object",
  "properties": {
    "inputNanoUsdPerToken": {
      "type": "integer",
      "minimum": 0,
      "description": "Effective input rate in nano-USD per token."
    },
    "outputNanoUsdPerToken": {
      "type": "integer",
      "minimum": 0,
      "description": "Effective output rate in nano-USD per token."
    }
  },
  "required": [
    "inputNanoUsdPerToken",
    "outputNanoUsdPerToken"
  ],
  "description": "Effective Bkper AI usage rates. One nano-USD is 0.000000001 USD."
}
```
