# Tree Inventory AI > Tree inventory software for arborists. Field capture on mobile, sites and > estimates on the web, and a public API meant to be driven by programs. ## API Base URL: https://treeinventory.ai/api/v1 Auth header: Authorization: ApiKey tiai_YOUR_KEY The scheme word is "ApiKey", not "Bearer". A bearer token is rejected. OpenAPI 3.1 spec (no key needed): https://treeinventory.ai/api/v1/openapi.json Human reference: https://www.treeinventory.ai/docs/api Quickstart, spreadsheet to quote in four calls: https://www.treeinventory.ai/docs/api/quickstart Every response, success or failure, is {success, message, data}. Branch on data.code, never on message. A missing record is 404, never 500. Retry 5xx and 429; never retry a 4xx. Writes accept Idempotency-Key (a UUID). Reuse it on every retry. Lists are cursor paginated: send data.nextCursor back as ?cursor=. Rate limit 1000/hour per key. RateLimit-Reset is SECONDS remaining. There is no orgId field anywhere. Your key carries its organization. ## Endpoints ### Customers: https://www.treeinventory.ai/docs/api/customers The people and organizations you work for. Everything else hangs off a customer: a site belongs to one, and an estimate is written for the customer who owns the site it prices. - GET /customers (customers:read): List customers - POST /customers (customers:write): Create a customer ### Sites: https://www.treeinventory.ai/docs/api/sites Job sites, one per property. The domain calls these addresses internally; the API calls them sites, because that is what an arborist means. - GET /sites (sites:read): List sites - POST /sites (sites:write): Create a site ### Trees: https://www.treeinventory.ai/docs/api/trees Individual trees captured in the field, with their measurements and the confidence attached to each one. Read-only: capture happens in the mobile app, where the camera is. - GET /sites/{siteId}/trees (inventory:read): List the trees captured at a site - GET /trees/{treeId} (inventory:read): Get one tree ### Catalog: https://www.treeinventory.ai/docs/api/catalog The products and services the org sells. Read this before writing an estimate: every line references a catalog item id. - GET /catalog/items (catalog:read): List catalog items ### Estimates: https://www.treeinventory.ai/docs/api/estimates Quotes. This is the only write that creates real money-shaped work, so it is the one to send an Idempotency-Key with. - POST /estimates (estimates:write): Create an estimate - GET /estimates/{estimateId} (estimates:read): Get one estimate ### Reports: https://www.treeinventory.ai/docs/api/reports A site's mapped inventory as GeoJSON: the same facts a PDF report shows, in a form a program can read. - GET /sites/{siteId}/report (reports:read): Get a site's inventory report ## Docs - https://www.treeinventory.ai/docs: product how-tos and arboriculture reference - https://www.treeinventory.ai/changelog: what shipped, dated