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

# Completion window

> Three prices for one model, chosen per request.

The completion window is a single field with three settings. `immediate` answers now. `priority` answers soon. `loose` answers eventually. These three strings — `immediate`, `priority`, `loose` — are exactly what travel on the wire. The model is identical in all three; what changes is the tariff and the latency. Because the trade-off is a property of the *task* rather than the deployment, you pick a window per request.

## Choosing per request

The window can be set on the agent as a default and overridden per session.

```bash CLI theme={"system"}
vetta session create --agent agt_01j8rf6tq2m4vz9xkp3n7c5hwd --window priority
```

```typescript TypeScript theme={"system"}
const session = await vetta.sessions.create({ agent: agent.id, window: "priority" });
```

The same model runs in every lane — only latency and price move:

```
                        same model, three lanes
  request ──┬── immediate ─────▶ answers now         $$$  highest
            ├── priority  ─────▶ answers soon        $$   lower
            └── loose     ─────▶ answers eventually  $    lowest
```

> [!TIP]
>
> An agent a person is watching should be on `immediate`. An agent that starts at midnight and delivers at nine has no reason to be, and pays materially less for the same model. Being able to say which one a given task is — per request rather than per deployment — is the feature.

## What the window is worth

From the [benchmark](https://usenaive.ai/blogs/introducing-naive-managed-agents), Naive Managed Agents against the cheapest competing cell in the same window (dollars per completed task; completions of 16 in brackets):

| Window | Managed Agents | Best competitor |
| - | - | - |
| `immediate` | **\$0.2976** (12) | \$0.8720 (11) |
| `priority` | **\$0.2332** (13) | \$0.5327 (11) |
| `loose` | **\$0.1709** (10) | \$0.2931 (11) |

`priority` is the interesting setting: it completes **13 of 16 — the highest completion count of any cell in the study** — at **\$0.2332** per completed task, 21.6% below Managed Agents' own `immediate` default. It finishes more work and costs less; the only thing it spends is time.

## A cheap bill is not automatically a saving

A looser window is genuinely cheaper per token, but part of a low `loose` bill is the agent simply doing *less work* inside the same wall-clock cap. Decomposed as `total = rate x volume`, the tariff discount alone lands between 0.69x and 0.80x across harnesses; anything beyond that is reduced volume, not a discount. Managed Agents reports cost per **completed** task precisely so a window that looks cheap because trials died early is not mistaken for a real saving. See [Benchmarks](https://usenaive.ai/blogs/introducing-naive-managed-agents) for the full decomposition.

> [!WARNING]
>
> The window is served on supported models only. On an unsupported model, a request for `priority` or `loose` is refused with a typed error — `window_unavailable`, HTTP 400 — rather than quietly downgraded to the default. See [Model router & inference](https://vetta.sh/docs/concepts/model-router.md).

## Fields

The window field takes one of three settings, and the same string travels on the wire:

| Window | Latency | Relative price |
| - | - | - |
| `immediate` | Answers now | Highest |
| `priority` | Answers soon | Lower |
| `loose` | Answers eventually | Lowest |

`immediate` is the default and is available on every model; `priority` and `loose` require a pool-supported model. Precedence is `session.window` over `agent.window` over the org default.

> [card] [Next: budgets](https://vetta.sh/docs/concepts/budgets.md)
>
> Every call priced before it is made.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.