Documentation menu
API reference

Jurisdictions and their law

Covers jurisdiction, district, code, process and region. Every parameter, response and example below is generated from the contract.

The facts that belong to every operation rather than to this group, the refusal shape, the cursor rules, the filters and the credential each call accepts, are the other pages under API. What a field means is under Get started.

Operations
14
Tags
5
Need a credential
14
Public
0

jurisdiction

2 operations

Governments, with Census identity, agencies, bodies and containment.

GET/jurisdictionAPI key

List governments

Which governments exist, with their Census identity.

Every filter here is a real column. The two that are not yet, has_zoning and coverage_tier, refuse rather than return an unfiltered list.

Operation ID list_jurisdiction_jurisdiction_get

Parameters

query

qstring | null
Name match, case and punctuation insensitive.
statestring | null
Two-letter postal code or two-digit state FIPS.
countystring | null
County FIPS, 3 or 5 digits, or a county's own id.
typestring | null
place_type: city, town, township, county.
level"state" | "county" | "cousub" | "place" | null
Census level.
fipsstring | null
A fips_key (us:place:2637000) or a bare code with level.
population[gte]integer | null
No description.
population[lte]integer | null
No description.
has_zoningboolean | null
Needs the coverage layer (M3).
coverage_tierstring | null
Needs the coverage layer (M3).
sortstring | null
name, population, fips, created_at. Prefix - to reverse.
sizeinteger | null
No description.
cursorstring | null
From a previous page's next_cursor.
totalboolean
Include a match count. First page only.

Responses

200
Collection_Jurisdiction_
Successful Response
422
HTTPValidationError
Validation Error

Example request

curl -X GET 'http://localhost:8000/jurisdiction?state=NC&size=50' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "item": [
    {
      "id": "<Id>",
      "slug": "<Slug>",
      "name": "<Name>",
      "fips": "<Fips>",
      "lifecycle_status": "<Lifecycle Status>",
      "legal_name": "string",
      "type": "string",
      "gnis_id": "string",
      "population": 1,
      "population_year": 1
    }
  ],
  "page": {
    "size": 1,
    "next_cursor": "string",
    "suppressed": 0,
    "total": "<paging__Total>"
  }
}
GET/jurisdiction/{id}API key

One government

One government, its offices, its bodies, and what contains it.

Operation ID get_jurisdiction_jurisdiction__id__get

Parameters

path

idrequiredstring
A jur_ id, a slug, or a fips_key like us:place:2637000.

query

includestring | null
agency, body, containment.

Responses

200
Jurisdiction
Successful Response
422
HTTPValidationError
Validation Error

Example request

curl -X GET 'http://localhost:8000/jurisdiction/id_123' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "id": "<Id>",
  "slug": "<Slug>",
  "name": "<Name>",
  "fips": {
    "level": "state",
    "code": "<Code>",
    "state": "<State>",
    "key": "<Key>",
    "county": "string",
    "cousub": "string",
    "place": "string"
  },
  "lifecycle_status": "<Lifecycle Status>",
  "legal_name": "string",
  "type": "string",
  "gnis_id": "string",
  "population": 1,
  "population_year": 1
}

district

2 operations

A town's zoning districts, base and overlay, with their controls and permissions embedded.

GET/jurisdiction/{jurisdiction}/districtAPI key

A town's zoning districts

Every district in force at as_of, base and overlay, with their purpose passages.

Sortable: code_normalized (default), code_raw, effective_from, type.

Operation ID list_district_jurisdiction__jurisdiction__district_get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).

query

as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.
kind"base" | "overlay" | null
Base districts or overlays.
typestring | null
residential, commercial, agricultural, ...
includestring | null
Comma-separated: control, permission, composition, definition.
sortstring | null
field or -field, comma-separated, at most three. Sortable fields are listed per operation.
cursorstring | null
From a previous page's page.next_cursor.
sizeinteger | null
Default 25.
totalboolean
Include page.total. First page only.
filterobject map
filter[<field>][<op>]=<value>. Operators: eq ne in nin lt lte gt gte between prefix contains is_null not_null any all permits forbids. AND across fields, OR within repeated values. A row whose status has no comparable value is returned as filter_outcome: indeterminate, never silently dropped; filter_indeterminate=exclude opts out. An unknown field, operator or value is a 422, never an empty result.
filter_indeterminate"include" | "exclude" | "only"
only is the audit query: which rows is the code silent on.

Responses

200
Collection_District_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/district?as_of=2026-09-13&size=50' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": [
    {
      "id": "dst_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
      "kind": "base",
      "code_raw": "<Code Raw>",
      "code_normalized": "<Code Normalized>",
      "local_label": "<Local Label>",
      "type": "<Type>",
      "version": "ver_01h455vb4pex5vsknk084sn02q",
      "effective_from": "2026-09-13",
      "href": "<Href>",
      "subtype": "string",
      "purpose": "<Purpose>",
      "section_ref": "<SectionRef>",
      "effective_through": "2026-09-13",
      "map": "<MapRef>"
    }
  ],
  "page": {
    "size": 1,
    "next_cursor": "string",
    "indeterminate": 0,
    "total": "<envelope__Total>"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
GET/jurisdiction/{jurisdiction}/district/{district}API key

One district, by the town's own code

A district with what it allows, its standards, and how its overlays compose.

An interval as_of returns every segment it spans, so this is also the district's history.

Operation ID get_district_jurisdiction__jurisdiction__district__district__get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).
districtrequiredstring
The town's own code (R-1, percent-encoded if it contains a slash) or a dst_ id.

query

as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.
usestring[]
Only the permissions and controls for these uses.
includestring | null
Comma-separated: control, permission, composition, definition.

Responses

200
Single_District_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/district/district_123?as_of=2026-09-13&use=townhome' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": {
    "id": "dst_01h455vb4pex5vsknk084sn02q",
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "kind": "base",
    "code_raw": "<Code Raw>",
    "code_normalized": "<Code Normalized>",
    "local_label": "<Local Label>",
    "type": "<Type>",
    "version": "ver_01h455vb4pex5vsknk084sn02q",
    "effective_from": "2026-09-13",
    "href": "<Href>",
    "subtype": "string",
    "purpose": "<Purpose>",
    "section_ref": "<SectionRef>",
    "effective_through": "2026-09-13",
    "map": "<MapRef>"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}

code

3 operations

Compiled codes (zoning, subdivision, adopted building and fire codes) and adopted plans.

GET/jurisdiction/{jurisdiction}/codeAPI key

The codes in force in a town

Zoning, subdivision and the other regulatory codes, and which building and fire code editions apply.

A model code adopted by the state or county appears here with adoption.level saying so, because the town is still governed by it.

Operation ID list_code_jurisdiction__jurisdiction__code_get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).

query

kind"zoning" | "subdivision" | "stormwater" | "floodplain"[]
Repeatable.
as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.

Responses

200
Collection_Code_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/code?as_of=2026-09-13' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": [
    {
      "id": "cod_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
      "kind": "zoning",
      "title": "<Title>",
      "effective_from": "2026-09-13",
      "href": "<Href>",
      "compiled_through": "<CompiledThrough>",
      "ordinance_since_compiled": 0,
      "section_count": 1,
      "version": "ver_01h455vb4pex5vsknk084sn02q",
      "document": "doc_01h455vb4pex5vsknk084sn02q"
    }
  ],
  "page": {
    "size": 1,
    "next_cursor": "string",
    "indeterminate": 0,
    "total": "<envelope__Total>"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
GET/jurisdiction/{jurisdiction}/code/{code}API key

One code, as a table of contents

The compiled code, what it is compiled through, and its section outline and glossary on request.

Operation ID get_code_jurisdiction__jurisdiction__code__code__get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).
coderequiredstring
A kind (zoning, building) or a cod_ id.

query

as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.
includestring | null
Comma-separated: outline, definition, amendment.

Responses

200
Single_Code_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/code/code_123?as_of=2026-09-13' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": {
    "id": "cod_01h455vb4pex5vsknk084sn02q",
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "kind": "zoning",
    "title": "<Title>",
    "effective_from": "2026-09-13",
    "href": "<Href>",
    "compiled_through": "<CompiledThrough>",
    "ordinance_since_compiled": 0,
    "section_count": 1,
    "version": "ver_01h455vb4pex5vsknk084sn02q",
    "document": "doc_01h455vb4pex5vsknk084sn02q"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
GET/jurisdiction/{jurisdiction}/planAPI key

A town's adopted plans

Comprehensive and area plans with their future land use categories. Where a designation applies on the ground is GET /place?include=future_land_use, and it is never a permission.

Operation ID list_plan_jurisdiction__jurisdiction__plan_get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).

query

kind"comprehensive" | "master" | "area" | "corridor" | null
No description.
as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.

Responses

200
Collection_Plan_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/plan?as_of=2026-09-13' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": [
    {
      "id": "pln_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
      "name": "<Name>",
      "kind": "comprehensive",
      "adopted_on": "2026-09-13",
      "document": "doc_01h455vb4pex5vsknk084sn02q",
      "citation": "cit_01h455vb4pex5vsknk084sn02q",
      "effective_from": "2026-09-13",
      "href": "<Href>",
      "horizon_year": 1,
      "designation": [
        "<Designation>"
      ],
      "is_permission": false
    }
  ],
  "page": {
    "size": 1,
    "next_cursor": "string",
    "indeterminate": 0,
    "total": "<envelope__Total>"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}

process

2 operations

What you can apply for, with requirements, fees, review steps and review clock embedded.

GET/jurisdiction/{jurisdiction}/processAPI key

What you can apply for in a town

Operation ID list_process_jurisdiction__jurisdiction__process_get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).

query

kind"land_use_application" | "permit" | null
No description.
normalized_typestring[]
Repeatable.
as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.

Responses

200
Collection_Process_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/process?as_of=2026-09-13' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": [
    {
      "id": "apt_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
      "kind": "land_use_application",
      "name": "<Name>",
      "normalized_type": "<Normalized Type>",
      "citation": "cit_01h455vb4pex5vsknk084sn02q",
      "effective_from": "2026-09-13",
      "href": "<Href>",
      "body": "<BodyRef>",
      "agency": "<AgencyRef>",
      "threshold": "<Threshold>",
      "issuer": "<Issuer>",
      "requirement": [
        "<Requirement>"
      ]
    }
  ],
  "page": {
    "size": 1,
    "next_cursor": "string",
    "indeterminate": 0,
    "total": "<envelope__Total>"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
GET/jurisdiction/{jurisdiction}/process/{process}API key

One process, with requirements, fees, steps and clock

Operation ID get_process_jurisdiction__jurisdiction__process__process__get

Parameters

path

jurisdictionrequiredstring
A jur_ id or a fips_key (us:cousub:2609337420).
processrequiredstring
A normalized type (special_use) or an apt_ id.

query

as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
known_as_ofstring | null
Knowledge time: the answer we would have given then. Default now. Same grammar as as_of.
includestring | null
Comma-separated: observed.

Responses

200
Single_Process_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/jurisdiction/jurisdiction_123/process/process_123?as_of=2026-09-13' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": {
    "id": "apt_01h455vb4pex5vsknk084sn02q",
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "kind": "land_use_application",
    "name": "<Name>",
    "normalized_type": "<Normalized Type>",
    "citation": "cit_01h455vb4pex5vsknk084sn02q",
    "effective_from": "2026-09-13",
    "href": "<Href>",
    "body": "<BodyRef>",
    "agency": "<AgencyRef>",
    "threshold": "<Threshold>",
    "issuer": "<Issuer>",
    "requirement": [
      "<Requirement>"
    ]
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}

region

5 operations

Saved sets of jurisdictions, and Census statistical areas as read-only regions.

GET/regionAPI key

Saved regions and Census areas

Operation ID list_region_region_get

Parameters

query

kind"custom" | "cbsa" | "cbsa_division" | "csa"[]
custom for yours; cbsa, csa and the rest for Census areas.
qstring | null
No description.
statestring | null
No description.
codestring | null
No description.
vintagestring | null
No description.
as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
includestring | null
Comma-separated: member, jurisdiction, coverage.
cursorstring | null
From a previous page's page.next_cursor.
sizeinteger | null
Default 25.

Responses

200
Collection_Region_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/region?state=NC&as_of=2026-09-13&size=50' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": [
    {
      "id": "<Id>",
      "kind": "custom",
      "owner": "organization",
      "name": "<Name>",
      "member_count": 1,
      "resolved_jurisdiction_count": 1,
      "version": 1,
      "href": "<Href>",
      "code": "string",
      "vintage": "string",
      "governs": false,
      "notice": "A region is a set of jurisdictions. It governs nothing and no rule attaches to it.",
      "member": [
        "<RegionMember>"
      ]
    }
  ],
  "page": {
    "size": 1,
    "next_cursor": "string",
    "indeterminate": 0,
    "total": "<envelope__Total>"
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
POST/regionAPI key

Save a region

Operation ID post_region_region_post

Parameters

header

Idempotency-Keystring | null
No description.

Responses

201
Single_Region_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X POST 'http://localhost:8000/region' \
  -H 'X-API-Key: $PLACESTACK_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "<Name>",
  "member": [
    {
      "member_type": "jurisdiction",
      "member_id": "<Member Id>",
      "role": "included",
      "effective_from": "2026-09-13",
      "effective_to": "2026-09-13"
    }
  ],
  "as_of_default": "2026-09-13"
}'

Request body

RegionBody

{
  "name": "<Name>",
  "member": [
    {
      "member_type": "jurisdiction",
      "member_id": "<Member Id>",
      "role": "included",
      "effective_from": "2026-09-13",
      "effective_to": "2026-09-13"
    }
  ],
  "as_of_default": "2026-09-13"
}

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": {
    "id": "<Id>",
    "kind": "custom",
    "owner": "organization",
    "name": "<Name>",
    "member_count": 1,
    "resolved_jurisdiction_count": 1,
    "version": 1,
    "href": "<Href>",
    "code": "string",
    "vintage": "string",
    "governs": false,
    "notice": "A region is a set of jurisdictions. It governs nothing and no rule attaches to it.",
    "member": [
      "<RegionMember>"
    ]
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
GET/region/{region}API key

One region

Operation ID get_region_region__region__get

Parameters

path

regionrequiredstring
An rgn_ id for a saved region, or an sta_ id for a Census area.

query

as_ofstring | null
Valid time: the law in force then. Default now, in the jurisdiction's timezone. 2024-06-30, 2024-06-30T14:00:00-04:00, from:2023-01-01 to:2024-12-31, or last 90 days. An interval returns segment[], never a winner.
includestring | null
Comma-separated: member, jurisdiction, coverage.

Responses

200
Single_Region_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X GET 'http://localhost:8000/region/region_123?as_of=2026-09-13' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": {
    "id": "<Id>",
    "kind": "custom",
    "owner": "organization",
    "name": "<Name>",
    "member_count": 1,
    "resolved_jurisdiction_count": 1,
    "version": 1,
    "href": "<Href>",
    "code": "string",
    "vintage": "string",
    "governs": false,
    "notice": "A region is a set of jurisdictions. It governs nothing and no rule attaches to it.",
    "member": [
      "<RegionMember>"
    ]
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
PATCH/region/{region}API key

Change a saved region

Census areas are read-only: 403.

Operation ID patch_region_region__region__patch

Parameters

path

regionrequiredstring
An rgn_ id for a saved region, or an sta_ id for a Census area.

header

If-Matchstring | null
No description.

Responses

200
Single_Region_
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X PATCH 'http://localhost:8000/region/region_123' \
  -H 'X-API-Key: $PLACESTACK_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "member": [
    "<RegionMember>"
  ],
  "as_of_default": "2026-09-13"
}'

Request body

RegionPatch

{
  "name": "string",
  "member": [
    "<RegionMember>"
  ],
  "as_of_default": "2026-09-13"
}

Example response

{
  "request": {
    "path": "<Path>",
    "param": {},
    "dry_run": false
  },
  "meta": {
    "contract_date": "2026-09-13",
    "vocabulary_version": "<Vocabulary Version>",
    "request_id": "req_01h455vb4pex5vsknk084sn02q",
    "api_version": "v1",
    "answer_id": "ans_01h455vb4pex5vsknk084sn02q",
    "answer_through": 1,
    "unit": {
      "key": "string"
    },
    "cost": "<Cost>"
  },
  "item": {
    "id": "<Id>",
    "kind": "custom",
    "owner": "organization",
    "name": "<Name>",
    "member_count": 1,
    "resolved_jurisdiction_count": 1,
    "version": 1,
    "href": "<Href>",
    "code": "string",
    "vintage": "string",
    "governs": false,
    "notice": "A region is a set of jurisdictions. It governs nothing and no rule attaches to it.",
    "member": [
      "<RegionMember>"
    ]
  },
  "as_of": {
    "resolved": "<Interval>",
    "timezone": "<Timezone>",
    "basis": "requested",
    "known_as_of": "2026-09-13T12:00:00Z",
    "known_as_of_basis": "requested",
    "requested": "string",
    "earliest_retained": {
      "key": "2026-09-13"
    },
    "constant": true,
    "segment_count": 1
  },
  "notice": [
    {
      "code": "as_of_interval_spans_change",
      "severity": "info",
      "detail": "<Detail>",
      "count": 1,
      "subject": [
        "string"
      ]
    }
  ],
  "coverage": {
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "layer": {
      "key": "<CoverageLayer>"
    },
    "href": "<Href>"
  }
}
DELETE/region/{region}API key

Delete a saved region

Operation ID delete_region_region__region__delete

Parameters

path

regionrequiredstring
An rgn_ id for a saved region, or an sta_ id for a Census area.

header

If-Matchstring | null
No description.

Responses

204
empty
Successful Response
401
empty
No usable credential.
402
ErrorResponse
quota_exhausted: out of credit. Credit is prepaid and the balance cannot go below zero, so add credit rather than retrying.
403
ErrorResponse
entitlement_missing: the plan does not cover this operation.
404
ErrorResponse
No such id. The only meaning of 404.
422
ErrorResponse
The request cannot be answered as asked. The code says why.
429
ErrorResponse
rate_limited, with Retry-After.
501
ErrorResponse
not_available: this operation does not answer yet.

Example request

curl -X DELETE 'http://localhost:8000/region/region_123' \
  -H 'X-API-Key: $PLACESTACK_API_KEY'

The document

Everything above is read from OpenAPI 3.1.0 version 0.0.0. When the contract changes, this page follows.

Download the OpenAPI document

Next

Search across jurisdictions

7 operations: permission, ordinance, section, moratorium.