API docs
The same real nationwide ledger behind the dashboard, as JSON. Amounts are stated approval dollars — amount: null means not reported, never zero.
Authentication
Create a key in your account, then send it as the x-api-key header (or ?api_key=). API access requires a Basic or Enterprise plan.
curl -H "x-api-key: uo_live_..." \ "https://usa-outlays.ai/api/v1/approvals?state=TX&min_amount=1000000"
Quotas
- Basic — 100 requests/day
- Enterprise — 100,000 requests/day
Every response includes a quota object with your tier, limit, used, and remaining counts. Exceeding the daily quota returns HTTP 429.
Endpoints
GET/api/v1/approvals
Approvals and funding decisions — the layer that authorized spending.
params: state, body_type, item_type, min_amount, page
GET/api/v1/awards
Awards (who got paid) and CA procurement line items.
params: state, record_kind (award|po_line), topic (node id), vendor_id, min_amount, page
GET/api/v1/topics
Taxonomy tree: government functions → domains → topics, with classified award counts and stated dollars.
params: none
GET/api/v1/vendors/{vendorId}
Canonical vendor entity: aliases, award counts, stated totals, top topics.
params: vendorId in path
GET/api/v1/bodies
Government bodies — the entity spine.
params: state, body_type, q, page
GET/api/v1/search
Full-text search across approvals, awards, and PO lines.
params: q (required), state, record_kind, limit
Data honesty
- Amounts are stated approval dollars from public records — not confirmed spend.
amount: nullmeans the amount was not reported; never treat it as 0.- Agenda-only records are proposed actions, not confirmed spend.
record_kind: "po_line"rows are California purchase-order line items (FY2012–2015), not standalone awards.- Obligations are not outlays. Coverage: all loaded states.