---
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.
      - `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. See ADR-0002.
      - `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.
      - `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
    - `profiles` object, required
    - `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

## Changes

- **2026-05-27** `d145a90eb76e` — 3 info
  - added the optional property `models/items/capabilities` to the response with the `200` status
  - added the required property `data` to the response with the `200` status
  - added the required property `object` to the response with the `200` status
- **2026-05-08** `a499d5bea359` — 2 breaking, 2 warning
  - removed the required property `data` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - removed the optional property `models/items/capabilities` from the response with the `200` status
  - removed the optional property `models/items/pending_generation` from the response with the `200` status

[Change history](https://skmtc.dev/superlinked/apis/sie-gateway/changes/v1/models/get.md)

---

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