---
title: "Api Models List"
method: GET
path: "/api/models/"
tags: ["models"]
---

# Api Models List

`GET /api/models/`

GET/POST /api/llm_models/models/  (platform - shows global + custom)
GET/POST /api/llm-models/custom-models/  (public API - shows ONLY custom)

Unified endpoint for models.

GET:  List models
      - Platform: global + org's custom (same for superadmin - no cross-org listing)
      - Public (custom-models path): ONLY org's custom models
      Filter with standard syntax: { "filters": { "affiliation_category": { "value": ["CUSTOM"] } } }

POST:
    - Without 'model_name' in body: Filter/list models (backward compatible)
    - With 'model_name' in body: Create model
        - organization_id=null + superadmin: Create global model
        - Otherwise: Create custom model for target org (superadmin can specify organization_id)

Note: Uses SuperAdminMixin for consistency, but queryset is intentionally the same
for both regular users and superadmins (global + org's custom pattern).

## Query parameters

- `page` integer
- `page_size` integer

## Headers

- `Authorization` string, required

## Response `200`

- PaginatedPublicModelListList
  - `count` integer, required
  - `next` string, uri, nullable
  - `previous` string, uri, nullable
  - `total_count` integer
  - `current_filters` FilterParamDictPydantic — Pydantic model for FilterParamDict. A dictionary that maps metric names to their filter parameters. Each key is a metric name (str), and each value can be: - A single MetricFilterParamPydantic (one condition) - A List[MetricFilterParamPydantic] (multiple conditions for same metric) - A FilterBundlePydantic (nested filter bundle with connector) Note: Uses extra="allow" for dynamic metric name fields. The __pydantic_extra__ annotation tells Pydantic what types to expect for extra fields, and generates typed additionalProperties in JSON Schema.
  - `filters_data` PaginatedPublicModelListListFiltersData
  - `results` PublicModelList[], required
    - `project` string, nullable
    - `provider` PublicLLMProvider, required — Public API serializer for nested provider in model responses - hides internal fields
      - `project` string, nullable
      - `provider_name` string, required
      - `provider_id` string, required
      - `extra_kwargs` unknown
      - `created_at` string, date-time, nullable, required
      - `updated_at` string, date-time, nullable, required
      - `respan_discount_rate` number, double
      - `models_sync_config` unknown
      - `id` string, required
    - `supported_params` string, required
    - `affiliation_category` 'custom' | 'keywordsai' — * `custom` - Custom * `keywordsai` - Keywordsai
    - `is_managed` boolean
    - `is_called_by_custom_name` boolean
    - `model_name` string, required
    - `base_model_name` string
    - `display_name` string
    - `max_context_window` integer
    - `input_cost` number, double
    - `output_cost` number, double
    - `cache_hit_input_cost` number, double
    - `cache_creation_input_cost` number, double
    - `respan_discount_rate` number, double, nullable
    - `streaming_support` integer
    - `function_call` integer
    - `image_support` integer
    - `overridden_fields` string[]
    - `load_balance_backups` unknown
    - `status` 'active' | 'deprecated' — * `active` - Active * `deprecated` - Deprecated
    - `is_verified` boolean — Whether the model's pricing has been human-verified. Unverified auto-discovered models are kept out of the live model dictionary.
    - `source` 'hardcoded' | 'db' — * `hardcoded` - Synced from Code * `db` - Database Only
    - `model_type` 'chat' | 'embedding' | 'audio' — * `chat` - Chat * `embedding` - Embedding * `audio` - Audio
    - `metadata` PublicModelListMetadata — Flexible catalog metadata; known keys are documented, extras allowed.
      - `privacy_policy_url` string, nullable
      - `zero_data_retention` boolean, nullable
      - `prompt_training` boolean, nullable
      - `prompt_logging` boolean, nullable
      - `moderation` boolean, nullable
      - `is_available_on_credits` boolean, nullable
      - `stream_cancellation_supported` boolean, nullable
      - `precision` string, nullable
      - `quantization` string, nullable
      - `release_date` string, nullable
      - `context_size` integer, nullable
      - `weekly_tokens` integer, nullable
      - `daily_tokens` integer, nullable
      - `benchmarks` ModelBenchmarksMetadata — Source-keyed benchmark blobs on ``LLMModel.metadata.benchmarks``.
        - `deepswe` DeepSWEBenchmarkPayload — Full DeepSWE v1.1 leaderboard row stored at ``metadata.benchmarks.deepswe``. Includes artifact envelope fields (``version``, ``generated_at``, ``n_tasks_in_set``) plus the complete best-config row from DeepSWE (``pass_rate``, ``pass_at_4``, cost/token aggregates, confidence intervals, etc.).
          - `version` string, nullable
          - `generated_at` string, nullable
          - `n_tasks_in_set` integer, nullable
          - `model` string, nullable
          - `harness` string, nullable
          - `reasoning_effort` string, nullable
          - `config` string, nullable
          - `source` string, nullable
          - `pass_rate` number, double, nullable
          - `pass_at_1` number, double, nullable
          - `pass_at_4` number, double, nullable
    - `id` string, required
    - `is_byok` boolean, required
    - `effective_discount_rate` number, double, required

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
