> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kymaapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding a model (capabilities)

> What Kyma must declare and verify before a model is in the catalog, so agents do not guess from a missing flag or a wrong status code.

A model that is missing tools, files, or output formats — or that returns the wrong HTTP status — makes the caller's agent invent a story. Declare the facts; verify them; then ship.

The full checklist lives in the repo: `docs/MODEL-ADD-CHECKLIST.md`. Guard: `bun run test:model-add-checklist`.

## What `/v1/models` must tell you

| Field                                  | Meaning                                                               |
| -------------------------------------- | --------------------------------------------------------------------- |
| `supports_tools`                       | OpenAI-style `tools[]` on chat completions. **Language models only.** |
| `supports_vision`                      | Image in the prompt.                                                  |
| `supports_structured_outputs`          | `response_format` / JSON mode.                                        |
| `input_modalities`                     | `text`, `image`, `audio`, `video`, `file`. PDF is `file`.             |
| `context_window` / `max_output_tokens` | Creator limits.                                                       |
| `supported_parameters`                 | Includes `stream` for chat; `tools` only when tools are real.         |

If a flag is absent from a language model in the registry, Kyma currently treats tools / JSON / caching as **on**. New rows must set the booleans explicitly.

## Errors the caller can trust

| Status | When                                                                    |
| ------ | ----------------------------------------------------------------------- |
| 400    | This model cannot do what you asked (tools, JSON, PDF, STT timestamps). |
| 401    | Bad key.                                                                |
| 402    | Not enough credits.                                                     |
| 404    | Unknown model id.                                                       |
| 429    | Rate limit.                                                             |
| 4xx    | STT heard no speech — not 502.                                          |
| 5xx    | Every route failed.                                                     |

Never a **200** with an empty billed transcript. See [Error handling](/guides/error-handling).
