# Models (/api-v1/models)



List the models available to your key, in OpenAI's exact model shape. The list includes both Zumik [aliases](/concepts/model-aliases) (such as `code.fast`) and the underlying provider model names, so either works as a `model` value in a request.

OpenAI's model object is intentionally small: `id`, `object`, `created`, `owned_by`. Richer capability metadata lives under [`/v2/model-aliases`](/concepts/model-aliases), not here.

## List models [#list-models]

```
GET https://api.zumik.ai/v1/models
```

<CodeGroup>
  ```bash title="curl"
  curl https://api.zumik.ai/v1/models \
    -H "Authorization: Bearer zk_live_..."
  ```

  ```python title="OpenAI SDK"
  from openai import OpenAI

  client = OpenAI(base_url="https://api.zumik.ai/v1", api_key="zk_live_...")

  for m in client.models.list().data:
      print(m.id)
  ```

  ```python title="Zumik SDK"
  from zumik import Zumik

  zk = Zumik(api_key="zk_live_...")
  for m in zk.models.list().data:
      print(m.id)
  ```
</CodeGroup>

### Response [#response]

```json
{
  "object": "list",
  "data": [
    { "id": "auto.balanced", "object": "model", "created": 1750000000, "owned_by": "zumik" },
    { "id": "code.fast", "object": "model", "created": 1750000000, "owned_by": "zumik" },
    { "id": "gpt-4o", "object": "model", "created": 1750000000, "owned_by": "zumik" }
  ]
}
```

<ResponseField name="object" type="string">
  Always `"list"`.
</ResponseField>

<ResponseField name="data" type="array">
  The available models, sorted by `id`. Includes both aliases and provider models.
</ResponseField>

## Retrieve a model [#retrieve-a-model]

```
GET https://api.zumik.ai/v1/models/{model_id}
```

<ParamField path="model_id" type="string">
  An alias (for example `code.fast`) or a provider model name (for example `gpt-4o`).
</ParamField>

```bash
curl https://api.zumik.ai/v1/models/code.fast \
  -H "Authorization: Bearer zk_live_..."
```

### Response [#response-1]

```json
{ "id": "code.fast", "object": "model", "created": 1750000000, "owned_by": "zumik" }
```

<ResponseField name="id" type="string">
  The model id, echoed back.
</ResponseField>

<ResponseField name="object" type="string">
  Always `"model"`.
</ResponseField>

<ResponseField name="created" type="integer">
  A stable epoch. These are platform aliases, not dated provider snapshots, so the value is fixed.
</ResponseField>

<ResponseField name="owned_by" type="string">
  Always `"zumik"`.
</ResponseField>

An unknown model id returns `404` with the message `The model '{id}' does not exist.`

## Errors [#errors]

| HTTP | `code`            | When                                                 |
| ---- | ----------------- | ---------------------------------------------------- |
| 401  | `invalid_api_key` | Missing or invalid bearer key.                       |
| 404  | (none)            | The model id is not a known alias or provider model. |

See the full [error reference](/api-reference/errors).
