Using the API
Billing and the spending cap
Three meters, one flat rate per 1,000 requests each, and a monthly cap you set.
Live keys are billed for what they use. Every request is counted on one of three meters, and each meter has one flat rate per 1,000 requests.
These rates are drafts. They are placeholders until launch and may change before any live key is billed.
Live keys are not open yet. They open once the rates are final. Until then a card can be saved in the dashboard, and a request with a live key answers 403 with the code live_not_open. Sandbox keys work now.
| Meter | What counts | Per 1,000 requests (draft) |
|---|---|---|
records | Any list or detail read: jurisdictions, meetings, agenda items, motions and votes, documents, bylaws, money, posts, permits, works, officials, departments, press, platforms, topics, the change feed. | $2.00 (draft) |
search | A full-text search across agenda items, motions, transcripts, documents, bylaws and posts. | $6.00 (draft) |
transcripts | A page of a meeting recording's transcript. | $10.00 (draft) |
The rules
- One flat rate per meter. No tiers, no volume discounts, and no free allowance hidden in the bill.
- Failed requests are never billed. Any
4xxor5xxanswer is free. Only a2xxanswer counts. - The sandbox is free. Requests with a
htd_test_key are counted in the dashboard but never billed. - An MCP tool call is one request on its tool's meter. The MCP handshake and the tool list are free.
- Each page is one request. A list read three pages deep is three requests.
- A cached answer is still a request. The API may answer from its edge cache, and the answer is billed the same.
GET /v1/statsandGET /v1/coverageare never billed. They need no key.
An example month
A month with 120,000 list and detail reads, 8,000 searches and 1,500 transcript pages comes to:
| Meter | Requests | Rate per 1,000 (draft) | Comes to |
|---|---|---|---|
| Records | 120,000 | $2.00 | $240.00 |
| Search | 8,000 | $6.00 | $48.00 |
| Transcripts | 1,500 | $10.00 | $15.00 |
| Total | 129,500 | $303.00 |
The example uses the same bill function the monthly invoice uses.
Your bill
The month runs in Vancouver time. At the end of it you get one invoice in US dollars for the month's live requests. The dashboard shows your usage, your bill to date and where the month is heading at its pace so far. Counts reach the dashboard every few minutes, so the newest requests may not show yet.
The spending cap
An account owner can set a monthly spending cap in the dashboard. Once the month's bill would pass it, live requests answer 402 with the code spend_cap_reached. Raise the cap or remove it to carry on. Sandbox keys are never stopped by the cap.
Set a cap before you go live. It is the simplest guard against a loop that runs away.
Unpaid invoices
If an invoice is not paid, the dashboard shows the day live keys will stop. After that day, live requests answer 402 with the code billing_required until the invoice is paid.