API overview
Base URL, versioning, and the conventions every endpoint follows.
Base URL
All endpoints are served from:
https://api.setback.ioVersioning
The version is in the URL path. The current version is v1:
https://api.setback.io/v1/documentsRequests
- Send query parameters for filters and pagination.
- Send JSON bodies with
Content-Type: application/json. - Name counties without the word "County", for example
county=Franklin. The state defaults toWA.
Responses
Every response is JSON. Each endpoint returns its own named fields, not a shared envelope. For example, a list of documents looks like this:
{
"documents": [],
"total": 0,
"limit": 100,
"offset": 0
}Errors always have the same shape. See errors.
{
"error": "Not Found",
"message": "no restrictions found for parcel"
}Access
A few endpoints are public. Anyone can call them with no account:
GET /healthGET /v1/coverage/check,GET /v1/coverage/summary,POST /v1/coverage/notifyGET /v1/search/parcels,GET /v1/search/parcels/facets— open with no plan, for a visitor or an account, for the covered counties on coverageGET /v1/tiles/parcels/{z}/{x}/{y}— every covered parcel, with no plan or county gateGET /v1/properties/{apn}/report— open with no plan, for a visitor or an account, for the covered counties on coverage; it returns a preview: three rules in full and the rest locked, plus the risk flags and document listGET /v1/reports/{token},POST /v1/auth/register,POST /v1/auth/login
The parcel report, past its preview, needs Base or Pro. Every other
endpoint — the data endpoints (documents, parcels/{apn}/restrictions,
hoas, search/restrictions, search/properties), batch screening, and
share links — needs Pro (ADR-0019). Send your session token as a bearer
token:
Authorization: Bearer <token>API keys are coming soon and are not available yet; use a session token for now.
A request without the plan it needs gets one of these:
| Status | Meaning |
|---|---|
| 401 | No valid session token. Sign in and try again. |
| 403 | A valid session, but the account's plan does not cover this endpoint. The body carries {"error":"plan_required","plan":"<base|pro>"}. |
| 429 | Too many requests from this address. Wait for the Retry-After header, in seconds, then try again. |
Pagination
List and search endpoints take these query parameters:
| Parameter | Default | Description |
|---|---|---|
limit | 100 | Items per page, at most 100 |
offset | 0 | Items to skip |
Health check
GET /healthReturns 200 OK when the API is up.
The machine-readable description of every endpoint is at openapi.json.