API docs
Guides

Agents and automated clients

How an AI agent or a script checks coverage with no key, how a person gets a key, and the rate limits.

Setback answers one question for a parcel: what do the covenants recorded against it say? An agent that evaluates a property can use the API the same way a person uses the app.

Check coverage with no key

GET https://api.setback.io/v1/coverage/summary returns every county Setback reads, with its status (covered or coming_soon), the counts, and the last update. No key is needed. The response carries Cache-Control: public, max-age=300; cache it for five minutes.

GET https://api.setback.io/v1/coverage/check?county=Franklin returns whether Setback holds any recorded covenant for that county. It also accepts address in place of county. For the coverage status a person sees, use the summary.

Read a report

GET /v1/properties/{apn}/report?county=Franklin&state=WA returns the report. With no key, a county on the free list returns the preview: the first rules and the recorded documents, with the rest marked locked. With a key on the Base or Pro plan it returns every rule, the quoted clause, the page and the recording number.

Get a key

A person creates an account at setback.io/register and chooses a plan. API keys are not self-serve yet. Request an API key from the account page; the request goes by email, and the key comes back the same way. Send it in the Authorization header as Bearer <key>. Keys belong to a person; an agent acts for that person.

Rate limits

Endpoints that need no key are limited per IP address: 120 requests a minute, with a burst of 40. A request over the limit gets a 429 with a Retry-After header. Per-plan call quotas are not enforced yet.

Machine-readable description

The full OpenAPI 3.1 document is at api.setback.io/openapi.json. The site index for agents is at setback.io/llms.txt.

What not to do

Do not crawl /parcels/ or /search on setback.io. They are for people with an account, and robots.txt disallows them. Use the API.

On this page