---
title: "GET /v1/models"
method: GET
path: "/v1/models"
tags: ["models"]
---

# GET /v1/models

`GET /v1/models`

## Response `200`

Models visible to this gateway replica

- ModelsResponse — Response for `GET /v1/models`. Hybrid shape: `object` + `data` is the OpenAI list format (consumed by vanilla OpenAI clients and Open WebUI for model discovery); `models` is the richer native shape consumed by the SIE Python/TS SDKs. Both describe the same set of models.
  - `data` OpenAiModelObject[], required — OpenAI-shaped model objects for ecosystem compatibility.
    - `created` integer, required — Unix epoch seconds. SIE has no per-model creation time, so this is a fixed sentinel; OpenAI clients use it only for display.
    - `id` string, required — Model id — the same string `/v1/chat/completions` accepts as `model`.
    - `object` string, required — Always `"model"`.
    - `owned_by` string, required — Always `"sie"`.
  - `models` ModelInfoWire[], required — Native SIE model info (capabilities, dims, profiles).
    - `capabilities` ModelCapabilitiesWire — Capability summary surfaced on each entry of ``GET /v1/models``. Mirrors the JSON shape constructed in ``types/model.rs::to_model_info_value``. All fields are optional — their presence depends on what the model config declares. These flags indicate that a model *supports* a task — they are NOT a precision-independent quality SLA. A flag is true at the model level even when quality is profile/precision-dependent (e.g. ``sql`` quality regresses under FP8; route SQL-critical traffic to a BF16 bundle via the ``sql`` alias). Treat them as "can do this", not "guaranteed to score X".
      - `code` boolean, required — Whether the model is validated for code generation — backs the ``model="code"`` alias. Informational only; never request-gated.
      - `grammar` string[], nullable — Grammar kinds the model's active backend supports (``json_schema`` | ``regex`` | ``ebnf``). EBNF presence depends on the backend: SGLang's Outlines backend does not implement EBNF, so a profile with ``grammar_backend: outlines`` advertises only ``["json_schema", "regex"]``; xgrammar/llguidance profiles advertise all three.
      - `guard` boolean, required — Whether the model is a content-moderation / policy-check guard — backs the ``model="guard"`` alias. Informational only; never request-gated.
      - `lora_adapters` string[], nullable — Union of LoRA served-names across profiles. Back-compat summary for consumers that don't care about profile scope; validation MUST go through ``profile_lora_adapters``.
      - `profile_lora_adapters` object, nullable — Per-profile LoRA breakdown — keyed by profile name. Added by M10 so consumers needing precise routing scope don't have to reverse-engineer it from the union. The validation gate uses this map; ``lora_adapters`` is for display only.
      - `sql` boolean, required — Whether the model targets the SQL path — backs the ``model="sql"`` alias. Informational only; never request-gated. Precision-sensitive: SQL quality can regress sharply under FP8, so this model-level flag is a support signal, not a per-profile quality guarantee.
      - `tools` boolean, nullable — Whether the model supports tool / function calling.
    - `dims` object, required
    - `inputs` string[], required
    - `last_error` unknown
    - `loaded` boolean, required
    - `max_sequence_length` integer, nullable
    - `name` string, required
    - `outputs` string[], required
    - `pending_generation` PendingGenerationSnapshot
      - `groups` PendingGenerationGroup[], required
        - `active_streams` integer, required
        - `count` integer, required
        - `display_model` string, required
        - `model` string, required
        - `oldest_request_age_ms` integer, required
        - `pool` string, required
        - `republished` integer, required
        - `waiting_first_chunk` integer, required
      - `total` integer, required
    - `profiles` object, required
    - `revision` string, nullable — Immutable model weights revision, when the catalog pins one.
    - `state` string, required
  - `object` string, required — Always `"list"` (OpenAI list envelope).

## Other responses

- `401` — Missing or invalid bearer token (inference token)
- `500` — Gateway auth enabled but no tokens configured

---

[API](https://skmtc.net/superlinked/apis/sie-gateway.md) · [All operations](https://skmtc.net/superlinked/apis/sie-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/superlinked/sie-gateway/revisions/516a1abd18c8/schema)
