Models

List all available AI models grouped by provider.

See Common Concepts for authentication and error responses.


GET /v1/models

List all available AI models grouped by provider.

Request

ParameterTypeDescription
enablednumberOptional. 1 = enabled models only, omit for all
# All models
curl -X GET "https://api.puq.ai/v1/models" \
  -H "Authorization: Token your-api-key-here"

# Enabled models only
curl -X GET "https://api.puq.ai/v1/models?enabled=1" \
  -H "Authorization: Token your-api-key-here"

Response

interface ModelProvider {
  id: number;
  name: string;
  description: string;
  code: string;
  status: number; // 1 = enabled, 0 = disabled
}

interface Model {
  id: number;
  name: string;
  description: string;
  code: string;
  status: number;
  input_price: number | null;  // Price per 1M input tokens
  output_price: number | null; // Price per 1M output tokens
  provider: ModelProvider;
}

interface ListModelsResponse {
  models: Model[];
}

Success (200):

{
  "models": [
    {
      "id": 1,
      "name": "GPT-4o",
      "description": "OpenAI's GPT-4o model",
      "code": "openai/gpt-4o",
      "status": 1,
      "input_price": 0.00005,
      "output_price": 0.00015,
      "provider": {
        "id": 1,
        "name": "OpenAI",
        "description": "OpenAI provider",
        "code": "openai",
        "status": 1
      }
    },
    {
      "id": 2,
      "name": "GPT-3.5-turbo",
      "description": "OpenAI's GPT-3.5 Turbo model",
      "code": "openai/gpt-3.5-turbo",
      "status": 1,
      "input_price": 0.00003,
      "output_price": 0.00010,
      "provider": {
        "id": 1,
        "name": "OpenAI",
        "description": "OpenAI provider",
        "code": "openai",
        "status": 1
      }
    }
  ]
}

Error (401):

{ "error": "Unauthorized: Invalid or expired API key" }