---
title: "Fusion"
description: "minirouter/fusion reads the request, then picks the model and reasoning effort by task and complexity."
canonical_url: "https://minirouter.sh/docs/fusion"
markdown_url: "https://minirouter.sh/docs/fusion.md"
last_updated: "2026-09-26"
---

# Fusion

Send `minirouter/fusion`. MiniRouter balances price and quality, choosing a model and reasoning effort for your request.

## Send a request

```sh
curl https://api.minirouter.sh/v1/chat/completions \
  -H "Authorization: Bearer $MINIROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "minirouter/fusion",
  "messages": [
    {
      "role": "user",
      "content": "Explain an API gateway in one sentence."
    }
  ],
  "max_tokens": 256
}'
```

Examples read your key from `MINIROUTER_KEY`.

## How it chooses

1. **Read**: A classifier reads the request. TypeSafe Jev, in about half a second.
2. **Label**: Task type and complexity.
3. **Pick**: Use the published frontier for that label.
4. **Check**: Allowed, affordable, healthy, fits. The same checks as [Auto](https://minirouter.sh/docs/auto-router).

## Task types

- **Coding**: Code, agents, extraction. Any request with tools counts as coding.
- **Reasoning**: Maths, analysis, planning.
- **Writing**: Drafts, copy, long-form.
- **Chat**: Conversation and roleplay.

## Complexity

| Tier | For |
| --- | --- |
| Light | Lookups, rewrites, short answers. |
| Mid | Everyday multi-step work. |
| Strong | Hard reasoning, large changes. |
| Frontier | Expert-level work. |

## Variants

| Model ID | Balance |
| --- | --- |
| `minirouter/fusion:cheap` | Prioritises cost with a lower quality floor. [Published picks](https://minirouter.sh/docs/routers/fusion-cheap). |
| `minirouter/fusion` | Balances quality above the floor against cost. [Published picks](https://minirouter.sh/docs/routers/fusion). |
| `minirouter/fusion:max` | Prioritises quality within the latency budget. [Published picks](https://minirouter.sh/docs/routers/fusion-max). |

Available variants appear in `/v1/models`.

## Pareto frontier

The frontier highlights model and reasoning-effort combinations where no cheaper option scores as well. Choose a task to compare estimated cost and benchmark quality.

*Compare benchmark quality with estimated task cost. The Pareto frontier highlights options with no cheaper, equally capable alternative. Estimates vary by task and reasoning effort; use each variant's published picks for its current routing choices.*

## Published picks

Each variant has 16 task-and-complexity cells. Its published frontier sets the model, effort and ordered fallbacks for each cell.

Candidates balance benchmark quality, estimated request cost and latency. Quality floors guide selection; when no candidate fits, constraints can relax. Fallbacks favour different labs.

Picks can change over time. Check each variant's published picks for its current models and fallbacks. Benchmark scores and cost estimates do not guarantee results for a particular request.

## Reasoning effort

- **Set for you**: Fusion sends the effort in its published pick. Skipped where it would raise the amount held for the call. The model's default effort applies then.
- **Yours wins**: Send `reasoning`, `reasoning_effort` or `think` and Fusion leaves it. Messages requests keep the model's default effort.

## Response

- **Chosen model**: Named in `model` and `x-minirouter-model`.
- **Why**: `x-minirouter-route-reason`: `task=code; tier=mid; effort=high`.
- **Price**: Provider cost plus 10%, classification included. If classification is unavailable, the Auto rate of 8% applies.

## Privacy

| Data | Sent to TypeSafe Jev |
| --- | --- |
| System prompt | Yes, the first 2,000 characters. |
| Latest user message | Yes, up to 6,000 characters. |
| Tool names | Yes, up to 32. |
| Tool results, images, replies | Never. |

Fusion variants use the same classifier. [Auto](https://minirouter.sh/docs/auto-router) and named models do not send prompts to it.

## Limits

| Limit | Detail |
| --- | --- |
| Endpoints | Chat Completions, Responses and Messages. |
| Conversations | Labels are cached for 10 idle minutes. New turns keep the cached tier. |
| Retry escalation | Repeating a turn with the same `prompt_cache_key` can raise complexity one tier, up to Frontier. Without a session key, retries keep their tier. Use a distinct, nonempty `prompt_cache_key` for each conversation, up to 512 characters. |
| Codex and Claude Code | Both work. Codex lists Fusion first in its model picker. Context blocks the client adds are skipped, not classified. |
| Classifier down | Uses the router's published fallback candidates. |
| Fallback lists | Not combinable with `models` or `fallbacks`. |
| No match | 503 [`auto_unresolvable`](https://minirouter.sh/docs/errors#auto_unresolvable). Retry after 15 seconds. |
