Cost & budgets
Every pipeline attempt records its USD cost, and the rollups climb the tree: attempt → subtask → task (phase) → project. Budgets hang off the same tree — a project-level hard cap, optional per-phase and per-step caps from the workflow — and the runner enforces them before dispatching new work.
Project cost fields
On every project object:
| Field | What it is |
|---|---|
cost_total_usd |
Running spend, updated as attempts complete. |
cost_budget_usd |
Optional hard cap (USD decimal). null = uncapped. |
cost_warning_threshold |
Soft-warning fraction of the budget. Default 0.80. |
cost_burst_per_minute_usd |
Optional burn-rate guard. |
Set the budget at create time (cost_budget_usd in the create body) or later via PATCH /v1/projects/{id} — the HTTP twin of the runtime's pipeline_set_budget tool. Tasks and subtasks carry their own cost_budget_usd / cost_total_usd pair when the workflow declares per-phase or per-step caps.
What happens at the thresholds
- Soft (warning) threshold — when spend crosses
cost_warning_threshold × budget, acost_threshold_warningevent lands in the project timeline. The portal's budget bar turns amber. - Hard cap — the runner checks the budget before dispatching each step (and re-checks after each attempt's cost lands). On breach it emits
cost_budget_breachedand pauses the project — work in flight isn't killed, but nothing new starts. The portal's budget bar turns red.
Recovery is deliberate: raise (or clear) the budget via the project Edit sheet or PATCH, then Resume.
The cost endpoint
GET /v1/projects/{project_id}/cost
{
"project_id": "sustainable-urban-farming-explainer-3f9a1c2b",
"total_usd": "1.8421",
"budget_usd": "5.00",
"budget_burn": 0.37,
"tasks": [
{ "task_id": "…", "phase_slug": "research", "task_kind": "regular",
"budget_usd": null, "spent_usd": "0.4210" }
]
}
budget_burn is total / budget (0.0 when uncapped). The tasks array is the per-phase breakdown the portal's stat card and the tasks table draw from. All amounts are USD decimal strings — Catentio pipeline costs are never denominated in IDR.
Pre-flight estimates
Backtrack operations estimate before they spend: retrigger responses include cost_estimate_usd derived from historical per-template cost stats, and edit-session plans carry cost/risk in the plan you approve.
Workspace-level cost
Cross-project rollups (today / week / month / all-time totals, top projects, daily series) live at Dashboard → Cost and GET /v1/cost/summary — see API resources.
Next
- Portal → Projects — the budget bar and Edit sheet.
- Artifact versioning & backtrack — estimates on retrigger.
- Autodrive — why a paused-for-budget project stays paused until you act.