DocsCost & finance
Commitments
Record a committed-spend agreement with a provider, track how much of it is used from reported cost, and see a forecast of where it will end.
INFRO is in private early access. Running these examples requires an early-access account, an active trial or subscription entitlement, and your own provider connection. Self-serve purchasing is not generally open. See Early access.
Many provider contracts include a spend commitment: an amount you agree to spend with the provider over a period, often in exchange for a discount. Missing it can mean paying for capacity you did not use; overshooting it early can mean paying list rates for the rest of the term. A commitment in INFRO tracks one such agreement against the cost your provider reports, and forecasts where it will end.
Available on the Business plan. The commitment is your contract with your provider — INFRO is not a party to it and bills none of it.
Recording a commitment
Commitments are entered by hand, in the console. INFRO does not read contract terms from your provider.
provider_kindstringrequired- The provider the commitment is with, such as
openaioranthropic. labelstringrequired- A name you will recognise, such as "OpenAI 2026 commit".
amount_usdnumberrequired- The committed amount in US dollars.
period_startYYYY-MM-DDrequired- First day of the term, UTC.
period_endYYYY-MM-DDrequired- Last day of the term, UTC, inclusive.
discount_pctnumber- The discount the contract carries, for reference. It does not change any estimate; enter the rate itself under Prices.
modelsstring[]- Limit the commitment to these model ids. Omit it to count every model on that provider.
notesstring- Free text, such as a contract reference.
Creating, editing and deleting a commitment needs the policy.manage permission, and each change is recorded in the audit log. Every edit increments the commitment's version.
Burn-down
- Consumption is measured on reported cost when the organization has a billing credential for that provider, which is what the provider will hold you to. See Cost reconciliation.
- Without one, it falls back to INFRO's estimate, and the commitment carries a warning saying so. An estimate uses list rates unless you entered your own, and can be missing unpriced traffic and traffic that does not go through INFRO, so it is a planning figure, not the number your provider will count.
- INFRO's estimate is shown beside the reported figure in either case, with a daily cumulative series for the whole term.
- Each commitment has a status: on track, under, over, not started, ended, or insufficient data.
Forecast
The forecast is the amount consumed so far plus the trailing 28-day daily mean, multiplied by the days remaining in the term. The band around it comes from how much daily spend varied over those same 28 days. A new commitment reports insufficient data until there is enough history to compute it.
This is a straight-line projection of recent spend. It does not model seasonality, planned launches or price changes, and it says so rather than presenting the band as certainty.
Warnings
- Ending soon — at 60, 30 and 7 days before the end of the term.
- Forecast under or forecast over — when the forecast differs from the committed amount by more than 10%.
- Warnings appear on the commitment in the console and in the API. Email delivery of warnings is not yet available.
Suggestions never move traffic
When a commitment is forecast to fall short, INFRO may suggest a change, such as pointing a route at the committed provider, with a link to where you would make it. It never reroutes traffic on its own. Routing decides where production requests go, and a change to it should be made by somebody who knows the application.
API
GET /v1/commitments returns { "data": [...] } with each commitment's terms, progress, forecast and warnings. It is read-only and needs the same key access as the FOCUS export. Money is a US-dollar number; days are YYYY-MM-DD in UTC; null means unknown, never zero.
{
"id": "cmit_…",
"provider_kind": "openai",
"label": "OpenAI 2026 commit",
"amount_usd": 120000,
"period_start": "2026-01-01",
"period_end": "2026-12-31",
"basis": "reported",
"basis_warning": null,
"progress": {
"as_of": "2026-09-23",
"status": "on_track",
"days_remaining": 99,
"consumed_usd": 81230.4,
"consumed_share": 0.677,
"expected_share": 0.729,
"forecast_usd": 112400.0,
"forecast_low_usd": 108000.0,
"forecast_high_usd": 116800.0,
"forecast_vs_commit": -0.063
},
"warnings": []
}