> ## 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.

<CodeGroup>
  ```bash CLI theme={"system"}
  vetta session create --agent Refunder --window priority
  ```

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

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.
</Tip>

## What the window is worth

From the [benchmark](https://usenaive.ai/benchmarks), Vetta against the cheapest competing cell in the same window (dollars per completed task; completions of 16 in brackets):

| Window      | Vetta             | 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 Vetta's 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. Vetta 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/benchmarks) 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](/docs/concepts/model-router).
</Warning>

## 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 title="Next: budgets" icon="shield" href="/docs/concepts/budgets">
  Every call priced before it is made.
</Card>
