Double-check an answer
Ask Flux to double-check a flux-auto answer with flux_verify: it re-checks against stronger models, capped at $0.25 per request, and returns a receipt.
Sometimes an answer matters enough to spend a little more on it. On flux-auto, you can ask Flux to double-check any request by setting flux_verify: true. Flux runs the request, checks the answer against a deterministic gate, and if it misses the bar, escalates across stronger models until it passes or the budget runs out. The extra work is capped at $0.25 per request, and the response carries a machine-readable receipt showing exactly what happened.
This is opt-in and per request: Flux never bills a double-check you didn't ask for.
How to opt in
flux_verify works on flux-auto requests, in any of three equivalent places:
- Top-level body field —
"flux_verify": truenext tomodelandmessages. - Metadata —
"metadata": { "flux_verify": true }. - Header —
X-Flux-Verify: true.
curl https://api.fluxrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $FLUX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-auto",
"flux_verify": true,
"messages": [
{ "role": "user", "content": "What is the exact SQL to deduplicate this table without losing the newest row?" }
]
}'
What happens on an opted-in request
- Flux serves the request through normal routing.
- The answer is scored against a deterministic gate — a fixed set of checks for the kind of task it is.
- If the answer passes, you get it back immediately with the receipt (often at no extra cost).
- If it misses, Flux escalates: it re-runs the task against stronger models and re-checks each attempt, keeping the best result.
Whatever the outcome, you always get an answer — a failed climb returns the best attempt, never an error.
The receipt
An opted-in response carries a response.flux object and matching lowercase x-flux-* headers:
| Field | Header | Meaning |
|---|---|---|
stamp | x-flux-stamp | checked when the answer passed the deterministic gate; otherwise unset |
checks_passed / checks_total | x-flux-checks-passed / x-flux-checks-total | How many gate checks the returned answer passed |
attempts | x-flux-attempts | How many attempts the double-check ran |
elevated_reason | x-flux-elevated-reason | What happened, e.g. probe_passed (no climb needed) or climbed_to_green |
customer_charge_usd | x-flux-customer-charge-usd | What you paid for this request, cap included |
est_frontier_usd | x-flux-est-frontier-usd | Informational: what the same token volume would list at frontier rates |
models_used | x-flux-models-used | The models the double-check ran against |
stamp: "checked" means one thing only: the returned answer passed every check in the deterministic gate. If the gate could not be passed within budget, the stamp stays unset and elevated_reason tells you the double-check was best-effort.
What it costs
The double-check surcharge is hard-capped at $0.25 per request, no matter how many attempts the climb takes. customer_charge_usd in the receipt is the settled number, and it also lands on your bill like any other request. If the first answer already passes the gate, there is nothing to climb and typically nothing extra to pay.
The suggestion header
When you have not opted in but your request reads like you want an answer double-checked (for example, "are you sure?", "this must be exactly right"), Flux adds one response header:
x-flux-verify-available: true
Nothing about the response changes and nothing extra is billed — it is a hint that re-sending the request with flux_verify: true would trigger the double-check. Agent harnesses can watch for this header and decide per task whether the answer is worth $0.25 of scrutiny.
Notes
flux_verifyapplies toflux-autoonly; pinned models and tier aliases serve exactly the model you asked for.- The flag is read per request. There is no account-level switch, so nothing changes for traffic that doesn't set it.
- See Transparency headers for the standard
X-Flux-*headers present on every response.