Limits & billing
What the API costs, what uses measurement credits, and how fast you can call it.
View as MarkdownWhat costs what#
API access is part of your TruTec plan. There's no separate API fee and no charge per call for reading or writing your own data.
| Call | Cost |
|---|---|
| Reading and writing customers, sites, jobs, estimates, job costing, events, webhooks and exports | Included |
| Reading saved measurements, results and imagery | Included |
Polling a measurement's status (GET /detect/status/{job_id}) |
Included |
Finding parcels (GET /parcels, or MCP find_parcels) |
Included |
Map images of saved takeoffs (export-image, imagery, map-link, or MCP get_map_image) |
Included |
Starting a measurement (POST /detect/full, /detect/address, /detect/tiles, or MCP measure_site / create_takeoff) |
Counts as one measurement on the key, however many parcels or areas it covers. Volume and any per-measurement price are set by your plan or agreement |
A condition rating (POST /condition/paser or /condition/pci) |
Set by your plan or agreement |
Starting a blueprint takeoff (POST /jobs/{job_id}/blueprint-takeoffs, or MCP create_blueprint_takeoff) |
One takeoff credit, the same as starting an AI Blueprint takeoff in the app. Sheets, scale and title reads, model runs and edits on it are included. See Blueprint takeoffs |
Reading a finished measurement again is free, so save the job_id and re-read it instead of measuring the same site twice.
Rate limits#
We don't enforce a fixed requests-per-minute limit today. To keep things fast for everyone, and to stay inside any limit we add later:
- keep to about 10 requests per second per workspace,
- run at most 5 measurements at once, and poll each one no more than every 3 seconds,
- use webhooks or the event feed to learn about changes instead of re-reading everything on a timer,
- use bulk export for full copies of your data instead of paging through every endpoint.
Handle 429 Too Many Requests now: back off and retry, honoring Retry-After if it's present (Errors & retries). If we introduce or change a rate limit, we'll announce it the way we announce other changes (Versioning & changes).
Per-key call caps#
You can ask us to put a cap on the number of calls a key can make, which is useful for a contractor's integration, a pilot or a test key. When a key reaches its cap, calls return 429 with the cap and the count:
{
"error": "API usage limit exceeded",
"message": "This API key has reached its limit of 500 calls",
"usage": {"count": 500, "limit": 500}
}
Request limits#
- Send JSON bodies under 10 MB. Photo and file uploads have their own limits, listed on their endpoints.
- Measurement areas have a maximum size; the limits and the error you get are in Measure a site.
- List endpoints are paged. Each page's maximum size is listed on the endpoint.