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

# Presets

> Save a model, routing policy, system prompt, and parameters behind a slug — then send only messages.

A preset is a **saved, versioned configuration** — model or model chain,
routing policy, system prompt, and sampling parameters — addressed by a slug.
Your application sends only the messages; the preset supplies everything else.

That means you can change the model, tighten a routing policy, or edit a system
prompt without shipping a code change.

## Call a preset

```bash theme={null}
curl https://www.ninjachat.ai/api/v1/presets/support-triage/chat/completions \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      { "role": "user", "content": "My invoice shows two charges for March." }
    ]
  }'
```

The request body is the ordinary [Chat Completions](/chat) body with one
difference: `messages` is the only required field. The preset's saved model,
routing, system prompt, and parameters are applied for you.

The response is a standard chat completion, plus headers identifying which
preset and version served the request:

| Header                   | Meaning                                  |
| ------------------------ | ---------------------------------------- |
| `X-Ninja-Preset`         | The preset slug that served this request |
| `X-Ninja-Preset-Version` | The exact saved version applied          |

Log the version header — it tells you which configuration produced a given
response after the preset has moved on.

## Overriding per call

Pass `model` or `models` to override the preset's chain for a single request;
every other Chat Completions parameter (`temperature`, `max_completion_tokens`,
`stream`, `stop`, `seed`, and the rest) is accepted and takes precedence over
the saved value.

```json theme={null}
{
  "messages": [{ "role": "user", "content": "Summarise this thread." }],
  "models": ["claude-sonnet-4.6", "gpt-5.6-sol"],
  "temperature": 0
}
```

Streaming, tool calling, and [fallback chains](/fallback-chains) behave exactly
as they do on `/chat/completions`.

## Managing presets

Create and version presets in the
[developer console](https://www.ninjachat.ai/developers). Publishing a new
version changes what the slug serves on the next request — no redeploy on your
side.
