Documentation menu
API reference

Search across jurisdictions

Covers permission, ordinance, section and moratorium. 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
7
Tags
4
Need a credential
7
Public
0

permission

1 operation

Where a use is allowed, across jurisdictions.

GET/permissionAPI key

Where a use is allowed, across jurisdictions

Every district in scope where the use is addressed, grouped by jurisdiction, cited and dated.

layer[] and the coverage rows name every jurisdiction in scope we cannot answer for, so a short list is never mistaken for a complete one. Sortable: jurisdiction.name (default), jurisdiction.population, district.code_normalized, level_rank, effective_from, coverage_tier.

Operation ID list_permission_permission_get

Parameters

query

userequiredstring[]
A use_ id or vocabulary slug (energy.storage.battery). Required, repeatable.
level"by_right" | "permitted_with_standards" | "administrative_approval" | "conditional_use"[]
Only these levels. 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.
includestring | null
Comma-separated: control, composition.
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.
dry_runboolean
Price and scope the request without answering it.
regionstring | null
A saved rgn_ region, or a statistical area such as a CBSA (sta_ id). Membership resolves at as_of.
jurisdictionstring[]
A jur_ id or fips_key. Repeatable.
statestring | null
Two-letter postal code or two-digit FIPS.
countystring | null
County FIPS, 5 digits, or a county's jur_ id.
geometrystring | null
WKT or GeoJSON. Jurisdictions that intersect it.
buffernumber | null
Feet around geometry.
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_RegionalPermission_
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/permission?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": [
    {
      "constant": true,
      "data_horizon": "2026-09-13",
      "horizon_basis": "measured",
      "id": "prm_01h455vb4pex5vsknk084sn02q",
      "use": "<UseRef>",
      "binds": true,
      "segment": [
        "<PermissionSegment>"
      ],
      "jurisdiction": "<JurisdictionRef>",
      "district_code": "<District Code>",
      "supersession_risk": "<SupersessionRisk>",
      "district": "dst_01h455vb4pex5vsknk084sn02q",
      "overlay": "dst_01h455vb4pex5vsknk084sn02q",
      "private_restriction": "pvr_01h455vb4pex5vsknk084sn02q",
      "filter_outcome": "match"
    }
  ],
  "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>"
  }
}

ordinance

2 operations

Adopted and proposed instruments, including standalone solar, wind and storage ordinances.

GET/ordinanceAPI key

Adopted and proposed ordinances, across jurisdictions

The instruments themselves: the gap between the code on the website and the law is where wrong answers live.

Sortable: -adopted_on (default), effective_from, jurisdiction.name, status.

Operation ID list_ordinance_ordinance_get

Parameters

query

kind"text_amendment" | "map_amendment" | "standalone" | "moratorium"[]
standalone for solar, wind, battery storage and noise ordinances.
subject"solar" | "wind" | "battery_storage" | "noise"[]
No description.
status"proposed" | "introduced" | "adopted" | "failed"[]
proposed is what is coming.
numberstring | null
No description.
adopted[gte]string | null
No description.
adopted[lte]string | 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.
includestring | null
Comma-separated: permission, control, notice.
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.
regionstring | null
A saved rgn_ region, or a statistical area such as a CBSA (sta_ id). Membership resolves at as_of.
jurisdictionstring[]
A jur_ id or fips_key. Repeatable.
statestring | null
Two-letter postal code or two-digit FIPS.
countystring | null
County FIPS, 5 digits, or a county's jur_ id.
geometrystring | null
WKT or GeoJSON. Jurisdictions that intersect it.
buffernumber | null
Feet around geometry.
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_Ordinance_
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/ordinance?as_of=2026-09-13&size=50&jurisdiction=value' \
  -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": "ord_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "<JurisdictionRef>",
      "title": "<Title>",
      "kind": "text_amendment",
      "status": "proposed",
      "href": "<Href>",
      "number": "string",
      "subject": "solar",
      "introduced_on": "2026-09-13",
      "adopted_on": "2026-09-13",
      "effective_from": "2026-09-13"
    }
  ],
  "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/ordinance/{ordinance}API key

One ordinance

Operation ID get_ordinance_ordinance__ordinance__get

Parameters

path

ordinancerequiredstring
An ord_ id.

query

includestring | null
Comma-separated: permission, control, notice.

Responses

200
Single_Ordinance_
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/ordinance/ordinance_123' \
  -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": "ord_01h455vb4pex5vsknk084sn02q",
    "jurisdiction": "<JurisdictionRef>",
    "title": "<Title>",
    "kind": "text_amendment",
    "status": "proposed",
    "href": "<Href>",
    "number": "string",
    "subject": "solar",
    "introduced_on": "2026-09-13",
    "adopted_on": "2026-09-13",
    "effective_from": "2026-09-13"
  },
  "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>"
  }
}

section

2 operations

Full-text search and navigation of retained code text.

GET/sectionAPI key

Search and navigate code text, across jurisdictions

Every hit comes back as a section with a citation ready to quote.

search_scope names the exact versions searched. Sortable: ordinal_path (default), -relevance (default with q), effective_from.

Operation ID list_section_section_get

Parameters

query

qstring | null
Literal text, or a regex with mode=regex.
mode"literal" | "regex"
No description.
code_kind"zoning" | "subdivision" | "stormwater" | "floodplain" | null
Only this kind of code.
numberstring | null
A section number as the town writes it: 3.04.
parentstring | null
Children of this sec_ id.
context_lineinteger
Lines of context around each match.
certifyboolean
Mint an answer receipt, so a zero-hit search replays as evidence.
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.
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.
regionstring | null
A saved rgn_ region, or a statistical area such as a CBSA (sta_ id). Membership resolves at as_of.
jurisdictionstring[]
A jur_ id or fips_key. Repeatable.
statestring | null
Two-letter postal code or two-digit FIPS.
countystring | null
County FIPS, 5 digits, or a county's jur_ id.
geometrystring | null
WKT or GeoJSON. Jurisdictions that intersect it.
buffernumber | null
Feet around geometry.

Responses

200
SectionSearch
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/section?as_of=2026-09-13&size=50&jurisdiction=value' \
  -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": "sec_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
      "code": "cod_01h455vb4pex5vsknk084sn02q",
      "label": "<Label>",
      "ordinal_path": "<Ordinal Path>",
      "version": "ver_01h455vb4pex5vsknk084sn02q",
      "effective_from": "2026-09-13",
      "citation": "cit_01h455vb4pex5vsknk084sn02q",
      "href": "<Href>",
      "heading": "string",
      "parent": "sec_01h455vb4pex5vsknk084sn02q",
      "effective_through": "2026-09-13",
      "text": "string",
      "snippet": "string"
    }
  ],
  "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>"
  },
  "search_scope": {
    "query": {},
    "jurisdiction": [
      {}
    ],
    "corpus": [
      "<SearchCorpus>"
    ],
    "version_count": 1,
    "searched_at": "2026-09-13T12:00:00Z",
    "layer": "section_text",
    "citation": "cit_01h455vb4pex5vsknk084sn02q"
  }
}
GET/section/{section}API key

One section, with its text

Operation ID get_section_section__section__get

Parameters

path

sectionrequiredstring
A sec_ 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.

Responses

200
Single_Section_
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/section/section_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": "sec_01h455vb4pex5vsknk084sn02q",
    "jurisdiction": "jur_01h455vb4pex5vsknk084sn02q",
    "code": "cod_01h455vb4pex5vsknk084sn02q",
    "label": "<Label>",
    "ordinal_path": "<Ordinal Path>",
    "version": "ver_01h455vb4pex5vsknk084sn02q",
    "effective_from": "2026-09-13",
    "citation": "cit_01h455vb4pex5vsknk084sn02q",
    "href": "<Href>",
    "heading": "string",
    "parent": "sec_01h455vb4pex5vsknk084sn02q",
    "effective_through": "2026-09-13",
    "text": "string",
    "snippet": "string"
  },
  "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>"
  }
}

moratorium

2 operations

Pauses on classes of development.

GET/moratoriumAPI key

What is paused, where, until when

Sortable: -effective_from (default), expires_on, adopted_on, status.

Operation ID list_moratorium_moratorium_get

Parameters

query

subjectstring | null
battery_storage, data_center, solar, ...
usestring[]
A use_ id or slug. Repeatable.
status"proposed" | "in_effect" | "extended" | "expired"[]
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.
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.
regionstring | null
A saved rgn_ region, or a statistical area such as a CBSA (sta_ id). Membership resolves at as_of.
jurisdictionstring[]
A jur_ id or fips_key. Repeatable.
statestring | null
Two-letter postal code or two-digit FIPS.
countystring | null
County FIPS, 5 digits, or a county's jur_ id.
geometrystring | null
WKT or GeoJSON. Jurisdictions that intersect it.
buffernumber | null
Feet around geometry.

Responses

200
Collection_Moratorium_
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/moratorium?use=townhome&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": "mor_01h455vb4pex5vsknk084sn02q",
      "jurisdiction": "<JurisdictionRef>",
      "subject": "<Subject>",
      "status": "proposed",
      "area": "jurisdiction",
      "citation": "cit_01h455vb4pex5vsknk084sn02q",
      "href": "<Href>",
      "use": "<UseRef>",
      "adopted_on": "2026-09-13",
      "effective_from": "2026-09-13",
      "expires_on": "2026-09-13",
      "extension": [
        "<Extension>"
      ]
    }
  ],
  "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/moratorium/{moratorium}API key

One moratorium

Operation ID get_moratorium_moratorium__moratorium__get

Parameters

path

moratoriumrequiredstring
A mor_ 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.

Responses

200
Single_Moratorium_
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/moratorium/moratorium_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": "mor_01h455vb4pex5vsknk084sn02q",
    "jurisdiction": "<JurisdictionRef>",
    "subject": "<Subject>",
    "status": "proposed",
    "area": "jurisdiction",
    "citation": "cit_01h455vb4pex5vsknk084sn02q",
    "href": "<Href>",
    "use": "<UseRef>",
    "adopted_on": "2026-09-13",
    "effective_from": "2026-09-13",
    "expires_on": "2026-09-13",
    "extension": [
      "<Extension>"
    ]
  },
  "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>"
  }
}

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

What actually happens

7 operations: meeting, case, permit, metric.