Task budgets

One job, many calls, one ceiling. Every row is a task_ref burning down.

RecentMost used
Get an API key to set it

Suggested ceilings

from your last 2 jobs of researcherp50 118p90 492max 492units
from your last job of enricher1,025units

A pick fills the ceiling field with that agent's label; sample data, so nothing here is saved. Each figure is the p50, p90 or max of that agent's last 20 finished jobs: one real job's total, in dollars at list price when every call of those jobs was priced, and in the jobs' own unit otherwise. How the suggestion is computed.

One job, one budget, in dollars, tokens or units of your own, chosen when the job opens and fixed after. A ceiling in dollars is the list-price estimate of the tokens each call reports: preflight reserves the job's recent median call (its largest recent call once the job is at 80% of its ceiling), or $0.10 before its first priced call, and each record settles to what the call cost. A call with no list price is charged its reservation, never $0. The ceiling saved here is the one preflight uses. Your code can open a job with task_ceiling on its first call; once the job exists, a task_ceiling on preflight is not applied, and the ceiling changes only here or through PUT /tasks/:task_ref/ceiling: last save wins. The agent label is read only when a save opens the job. When the job has no room left, preflight answers approved: false and your code decides what next.

task_refsample
TaskUsedBurn-downState
job-8871researcher
8 units left · 22m ago
3h 38m, first to last preflight on record
492 / 500 units close
batch-2211enricher
25 units past the ceiling · 1h ago
2h 30m, first to last preflight on record
1,025 / 1,000 units leaked
job-8870summarizer
92 units left · 12 reserved in flight · 3h ago
25m, first to last preflight on record
96 / 200 units running
100 units left · 60 reserved in flight · 5h ago
5h 56m, first to last preflight on record
1,840 / 2,000 units close
job-8864researcher
382 units left · 24h ago
8h 0m, first to last preflight on record
118 / 500 units running
spent reserved by a call in flightclose within a fifth of the ceiling ceiling held: the next call was refused leaked past the ceiling

5 tasks, most recently touched first. Used is what your code reported: tokens on a job wrap() opened, your own count on a job in units, and a dollar figure is the list-price estimate of the job's priced calls. The time on a row runs from the first to the last preflight on record for that job, approved or refused; it is not the job's own duration, and a record() does not move it. Those records begin 2026-09-03, so a job older than that shows only its preflights since then. The same rows, without that time, are on GET /tasks (?sort=used for this ranking) and GET /tasks/:task_ref.

Every number on this page is on the API too, except the preflight span on a task row, which the API does not return: GET /decisions for refusals, /tasks for budgets and /tasks/:task_ref for a job's list-price estimate, /usage?by=event_type for the split by event_type and its estimate, /customers for balances, /keys for keys, each with Authorization: Bearer <your key>. A suggested ceiling is one job's used_units, or its breakdown.list_price_usd_estimate when every call was priced, as GET /tasks/:task_ref returns it: the p50, p90 or max over one agent's 20 most recently updated finished jobs, worked out on this page.