acuris-geo-com · Schema

ValidateResponse

Successful validation **or** centroid-fallback. The canonical form **always lives in `standardized`**. When value-changing corrections were applied, the response carries `status: "corrected"` with a human-readable `corrections` list, and `standardized` holds the corrected canonical form. When neither was attainable but SEG produced a centroid, the response carries `partial_match: true` with `lat`/`lng` set; `standardized` then echoes the caller's input for every component that could not be verified — only the components confirmed in `match_components` are reference data. All responses carry the match-quality contract (`match_type`, `match_score`, `match_components`, `input_corrected`).

CompanyGeocodingAddress-ValidationLocation-DataAPI

Properties

Name Type Description
standardized object
corrected object Reserved legacy key — not emitted. The corrected canonical form is returned in `standardized` (with `status: "corrected"` and the `corrections` list); read that instead.
status string `verified` = the street and house number matched exactly; postcode/locality repairs derived unambiguously from the matched premise may still appear in `corrections` (with `postcode_corrected: true` an
confidence number How strongly the match AND the returned coordinate are evidenced, 0–1. It is not the validity verdict: whether the address is valid is given by `status` (verified / corrected), `deliverable` and `conf
confidence_level string Plain confidence grade for bulk-CSV workflows. `high` = confirmed exact, `medium` = confirmed with safe corrections, `low` = partial/approximate (e.g. house number not found, or a locality/admin-area
corrections array Human-readable list of corrected input fields (e.g. `["Postal code", "City"]`). `"House number"` appears when the house number in the answer differs from the one you sent because the building was renu
accuracy_type object
point_coordinate boolean `true` when the coordinate identifies one address (`rooftop` or `arrival_point`), `false` for any derived/area tier. Branch on this rather than on `accuracy_type` literals — it stays correct when new
match_type object
match_score number
match_components object
input_corrected boolean
reasons array Present on `partial_match` responses: why full verification failed (e.g. `street_not_matched`, `house_number_unconfirmed`). The same codes appear on 404/422 error bodies.
truncated boolean Present (always `true`) when the search was cut short by its time limit; `reasons` then includes `search_budget_exhausted`. United States only on 200 answers: the answer is the best one found in time,
provided_components object **Always returned.** Echoes which components the caller actually supplied (non-empty after parsing), keyed identically to `match_components` (`house_number`, `street`, `city`, `zip`, `state`). Pair it
partial_match boolean `true` when the address could not be fully verified but a coordinate was still produced — at street level (`reasons` `house_number_unconfirmed` / `house_number_not_found`; pin `street_interpolated` /
nearby_house_numbers object Portugal only, optional. The street was matched but the house number you sent is not in the reference data (`street_centroid`, or `street_interpolated` between the nearest same-parity numbers with `co
street_postcodes array Netherlands only, optional. Present only on STREET-LEVEL answers (`accuracy_type` `street_centroid`, `street_segment_centroid` or `street_interpolated`): the postcodes the matched street covers, each
street_postcodes_total integer With `street_postcodes`, how many postcodes the street covers (not capped).
street_postcodes_truncated boolean With `street_postcodes`, `true` when the street covers more postcodes than are listed.
postcode_range object Netherlands only, optional. Sent with `street_postcodes` when the street covers MORE THAN ONE postcode: the lowest and highest postcode over the whole street (an outer bound, not a continuous run; `st
approximate boolean Portugal only, optional. `true` when the point is a town / area centre standing in for the address: a city- or neighbourhood-only request (reason `street_missing`), a street that could not be placed (
resolved_level object Portugal only, with `approximate: true`: which kind of place the point stands for (`locality`, `postal_town`, `municipality`, `district`, `lisbon_parish`).
resolved_name string Portugal only, with `approximate: true`: the name of that place as spelled in the reference data (e.g. `Cascais`; `Lisboa` for a Lisbon neighbourhood).
enrichment object Free geographic enrichment, attached automatically (no extra charge, no request parameter) for eighteen countries — USA, Canada, Germany, Austria, Switzerland, France, United Kingdom, Belgium, Spain,
match_type_legacy string Retained for backward compatibility. New clients should use `match_type`.
match_score_legacy string Retained for backward compatibility. Human-readable label (e.g. `"Perfect match"`, `"Partial match (street only)"`).
suggestions array Ranked near-miss candidates (score ≥ 0.5, below the correction threshold). Appears on 200 `partial_match` responses where the street could not be matched — the closest real streets in the caller's pos
alternative_matches array Reserved — not currently emitted (disabled pending an index). Planned behaviour: same street + house number in a different state, USA / CAN `verified` matches, up to 5 items.
lat number
lng number
arrival_point object Entrance / access coordinate (arrival point) of the matched premise, returned beside the served coordinate on house-number-level matches when the reference row carries one. With `accuracy_type: roofto
landmark_used object Present ONLY with `accuracy_type: landmark_proximity` (India). The address itself resolved no further than its postcode/locality, so the served coordinate was taken from a landmark named in the input.
house_number_not_found boolean The house number you sent is not on file for the matched street — either flagged by the matcher itself, or caught by the input-vs-returned comparison (a fallback row carried a different number). stand
postcode_corrected boolean
deliverable boolean `true` only when the address verified confidently against the reference data — `confidence_level` high or medium AND not a partial/centroid fallback AND a premise is identified (a house number you sup
hno_range_verified boolean The house number was confirmed against an official numbering RANGE for the street, not an individual premise row (interpolated-tier evidence, e.g. Brazil's official street ranges). Caps `confidence_le
parsed object Always returned. For single-line `input`: the parser's field breakdown (informational echo; lowercase). For fielded input: an echo of the supplied fields. Keys include `street`, `house_number`, `city`
match_details object Per-component flags from the DB lookup — keys `street`, `house_number`, `city`, `postcode` (not `zip`), `state` (when applicable), plus a duplicated `postcode_corrected` boolean. Unlike `match_compone
unverified_fields array Components echoed from the caller's input that reference data could NOT confirm (e.g. `["unit"]` — reference rows carry no unit data). The match itself still stands; treat the listed components as unv
unit_verified boolean Spain, Latvia and Singapore only. Present and `true` only when the sub-building unit you sent is listed for the matched building. Spain: staircase / floor / door (e.g. `Esc. 1, 1º B`) listed for the m
former_address object Latvia only. The address you sent is a FORMER address of the matched building in the State Address Register: the street was renamed, the building was renumbered, or a named property got a street addre
tenant_name_matched string Singapore only. The tenant or shop name (e.g. `MCDONALD'S`) that text in your input matched at the returned building, exactly as we hold it. The name is not part of the standardized address and never
building_name_matched string Singapore only. The building name that text in your input matched at the returned building, when it differs from `standardized.building_name` (another name the same building is known by). Absent when
unit_check string Spain, Latvia and Singapore only. What the reference unit list could say about the unit you sent. `verified`: listed at this building. `not_in_list`: the building has a unit list and yours is not in i
postcode_unverified boolean The postcode was echoed from the caller, never read from a reference row.
locality_from_postcode boolean The city was derived from the postcode rather than typed by the caller.
city_backfilled_from_postcode boolean No city was sent; the one in `standardized.city` was derived from the postcode (or, Netherlands, from the postcode + house number). A disclosure, not a correction. Absent otherwise.
street_backfilled_from_postcode boolean Netherlands: no street was sent; the street in `standardized.street` is the one that holds the house number at the postcode sent. A disclosure, not a correction (`corrections` stays empty). Absent oth
matched_via_alias boolean The locality matched through a recognised alias (e.g. a USPS alternate city name) rather than the primary name. `usps_city` and `locality_note` disclose the specifics where applicable.
usps_city string USA: the USPS-preferred city name when it differs from the input.
locality_note string Human-readable note on how the locality was matched (alias / municipality disclosure).
city_mismatch_ignored boolean The typed city disagreed with the matched row but was overridden by stronger evidence (street + postcode); disclosed rather than silently dropped.
postcode_supplied string Postcode-repair forensics — the postcode the caller sent. Also present on its own (without `postcode_suggested`) when the reasons carry `postcode_not_matched` (Sweden): the typed postcode matched noth
postcode_suggested string Postcode-repair forensics — the reference postcode for the matched premise, when it differs from `postcode_supplied`.
postcode_incoherent boolean `true` when the supplied postcode does not fit the matched street/locality at all (rather than being a near-miss).
postcode_status string Malaysia: whether the postcode is held with addresses (`stocked`), real but with no addresses on file (`valid_not_stocked` — see the matching reason code), or unknown. Companion fields `postcode_place
accuracy_label string Human-readable form of the served tier (e.g. `"postcode centroid"`). Display-only; branch on `accuracy_type` / `point_coordinate`.
non_deliverable_type string Classification of non-deliverable input (e.g. `po_box`). Appears on the 400 rejection body, or on the 200 body under `iso20022: true`. Never set on a verified Canadian PO Box (see `address_type`).
address_type string Present when the answer is not a street address. Today only `po_box`, in Canada and Singapore. Canada: the input is a PO Box, matched against the reference lock-box ranges of Canada Post installations
address_class string Present when the matched address is real but not a postal delivery point. Today only `nonpostal` (Netherlands): the official BAG register holds the address exactly as you sent it (e.g. a wharf cellar
address_note string Plain-language explanation that accompanies `address_class`, e.g. "This address exists in the official BAG register but has no postcode; it is not a postal delivery point."
po_box object Canada, with `address_type: po_box`. The box: `number`, `station_type` (`STN`, `SUCC`, `RPO`, `PO`, ...), `station_name` (e.g. `A`, `CENTRAL`, `MAIN`), `station` (type and name together, empty for a p
po_box_alternatives array Canada, partial PO Box answers only (`po_box_ambiguous`, `po_box_postcode_town_mismatch`, and `po_box_not_in_range` when the town you sent is not the postal code's): the post offices whose ranges hold
verdict_note string Plain-language note on a component listed in `unverified_fields`, e.g. a Canadian PO Box whose station you named differently from the reference data (`po_box_station`).
uprn_match_m number UK only. Distance in metres between the Royal Mail PAF delivery point and the matched OS Open UPRN coordinate (0.0 is a real and best value). Present when extended UK fields are enabled (on by default
credits_remaining integer After keyed validation.
validation_credits_remaining integer
geocode_credits_remaining integer
key_accepted boolean
View JSON Schema on GitHub

JSON Schema

acuris-geo-com-validate-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/acuris-geo-com/json-schema/acuris-geo-com-validate-response-schema.json",
  "title": "ValidateResponse",
  "description": "Successful validation **or** centroid-fallback. The canonical form\n**always lives in `standardized`**. When value-changing corrections were\napplied, the response carries `status: \"corrected\"` with a\nhuman-readable `corrections` list, and `standardized` holds the\ncorrected canonical form. When neither was attainable but SEG produced a\ncentroid, the response carries `partial_match: true` with `lat`/`lng`\nset; `standardized` then echoes the caller's input for every component\nthat could not be verified — only the components confirmed in\n`match_components` are reference data. All responses carry the\nmatch-quality contract (`match_type`, `match_score`, `match_components`,\n`input_corrected`).\n",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/acuris-geo-com-openapi.json#/components/schemas/ValidateResponse",
  "type": "object",
  "additionalProperties": true,
  "required": [
    "match_type",
    "match_score",
    "match_components",
    "input_corrected",
    "accuracy_type"
  ],
  "properties": {
    "standardized": {
      "$ref": "#/$defs/StandardizedAddress"
    },
    "corrected": {
      "deprecated": true,
      "description": "Reserved legacy key — not emitted. The corrected canonical form is returned in `standardized` (with `status: \"corrected\"` and the `corrections` list); read that instead.",
      "allOf": [
        {
          "$ref": "#/$defs/StandardizedAddress"
        }
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "verified",
        "corrected"
      ],
      "description": "`verified` = the street and house number matched exactly; postcode/locality repairs derived unambiguously from the matched premise may still appear in `corrections` (with `postcode_corrected: true` and `confidence_level` capped at `medium`) without demoting status. `corrected` = the street or city itself required a value-changing correction (fuzzy match above the 0.85 similarity threshold, or standardized fields). Omitted (with `partial_match: true`) when the address could not be verified. Standardization is never a correction: for a city-state (Singapore, Monaco) the city implied by the country — filled in when you omit it, or typed as an alias such as `SG` / `Republic of Singapore` — does not appear in `corrections` and does not make the status `corrected`; nor do Singapore street-type abbreviations (`Jln` = Jalan, `Bt` = Bukit, `Ave`, `Cres`, `Cl`, …). A genuinely different city or a misspelt street is still reported."
    },
    "confidence": {
      "type": "number",
      "format": "float",
      "description": "How strongly the match AND the returned coordinate are evidenced, 0–1. It is not the validity verdict: whether the address is valid is given by `status` (verified / corrected), `deliverable` and `confidence_level`. The number starts at 1.0 for a verified match (the similarity score, 0.85–1.0, for a corrected one) and is then capped by the precision of the coordinate: every `accuracy_type` has a ceiling — e.g. `rooftop` / `arrival_point` 1.0, `street_interpolated` 0.9, `street_centroid` 0.75, `postcode_centroid` 0.6, `locality_centroid` 0.5, `admin_centroid` 0.4, Canadian `po_box` 0.9 and `po_box_postcode_area` 0.5 — so a verified address with a coarse pin carries a lower number. Exception: when a house number you supplied was confirmed on a premise row, the coordinate ceiling is not applied (the address itself is proved; `accuracy_type` still states the pin). The number is also capped at match_score (0.2–0.6) whenever a street or house number you PROVIDED could not be confirmed against the matched record (e.g. the match fell back to a different street, or the house number is not on file); confidence_level is demoted to `low` in those cases."
    },
    "confidence_level": {
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low",
        "none"
      ],
      "description": "Plain confidence grade for bulk-CSV workflows. `high` = confirmed exact, `medium` = confirmed with safe corrections, `low` = partial/approximate (e.g. house number not found, or a locality/admin-area centroid only), `none` = no match. The grade of a confirmed address does not depend on the coordinate: an address the register holds without a coordinate (derived pin, `point_coordinate: false`) is still `high`."
    },
    "corrections": {
      "type": "array",
      "description": "Human-readable list of corrected input fields (e.g. `[\"Postal code\", \"City\"]`). `\"House number\"` appears when the house number in the answer differs from the one you sent because the building was renumbered (Latvia, see `former_address`).",
      "items": {
        "type": "string"
      }
    },
    "accuracy_type": {
      "$ref": "#/$defs/AccuracyType"
    },
    "point_coordinate": {
      "type": "boolean",
      "description": "`true` when the coordinate identifies one address (`rooftop` or `arrival_point`), `false` for any derived/area tier. Branch on this rather than on `accuracy_type` literals — it stays correct when new tiers are added. Emitted on matches and street-tier partials; omitted on postcode/locality/admin-centroid fallbacks."
    },
    "match_type": {
      "$ref": "#/$defs/MatchType"
    },
    "match_score": {
      "type": "number",
      "format": "float",
      "minimum": 0,
      "maximum": 1
    },
    "match_components": {
      "$ref": "#/$defs/MatchComponents"
    },
    "input_corrected": {
      "type": "boolean"
    },
    "reasons": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/FailureReason"
      },
      "description": "Present on `partial_match` responses: why full verification failed (e.g. `street_not_matched`, `house_number_unconfirmed`). The same codes appear on 404/422 error bodies."
    },
    "truncated": {
      "type": "boolean",
      "description": "Present (always `true`) when the search was cut short by its time limit; `reasons` then includes `search_budget_exhausted`. United States only on 200 answers: the answer is the best one found in time, and a finer pin may exist. Absent otherwise."
    },
    "provided_components": {
      "$ref": "#/$defs/MatchComponents",
      "description": "**Always returned.** Echoes which components the caller actually supplied (non-empty after parsing), keyed identically to `match_components` (`house_number`, `street`, `city`, `zip`, `state`). Pair it with `match_components` field-by-field to tell \"not provided\" apart from \"provided but not matched\"."
    },
    "partial_match": {
      "type": "boolean",
      "description": "`true` when the address could not be fully verified but a coordinate was still\nproduced — at street level (`reasons` `house_number_unconfirmed` /\n`house_number_not_found`; pin `street_interpolated` / `street_centroid`) or via\nthe SEG cascade (postcode / locality / admin\ncentroid). Absent or `false` on full verified/corrected matches. The response\nstill carries `standardized`, but it echoes the caller's input for every\ncomponent that could not be verified (only the components confirmed in\n`match_components` are reference data) — treat `lat`/`lng` as the only\ntrustworthy output, and check `reasons` for what could not be pinned down.\n"
    },
    "nearby_house_numbers": {
      "allOf": [
        {
          "$ref": "#/$defs/NearbyHouseNumbers"
        }
      ],
      "description": "Portugal only, optional. The street was matched but the house number you sent is not in the reference data (`street_centroid`, or `street_interpolated` between the nearest same-parity numbers with `confidence` 0.8 and `deliverable: false`); names the nearest numbers that are held. Sent with reason `house_number_not_in_reference`."
    },
    "street_postcodes": {
      "type": "array",
      "description": "Netherlands only, optional. Present only on STREET-LEVEL answers (`accuracy_type` `street_centroid`, `street_segment_centroid` or `street_interpolated`): the postcodes the matched street covers, each with its house-number range. Sorted by `house_number_from`, then `postcode`; at most 50 entries (see `street_postcodes_total` and `street_postcodes_truncated`). Ranges count numeric house numbers only; addresses whose number carries letters are not counted. Absent on rooftop and other house-number-level answers.",
      "items": {
        "type": "object",
        "properties": {
          "postcode": {
            "type": "string"
          },
          "house_number_from": {
            "type": "integer"
          },
          "house_number_to": {
            "type": "integer"
          },
          "parity": {
            "type": "string",
            "enum": [
              "odd",
              "even",
              "both"
            ],
            "description": "Which side(s) of the street the postcode covers within that range."
          }
        }
      }
    },
    "street_postcodes_total": {
      "type": "integer",
      "description": "With `street_postcodes`, how many postcodes the street covers (not capped)."
    },
    "street_postcodes_truncated": {
      "type": "boolean",
      "description": "With `street_postcodes`, `true` when the street covers more postcodes than are listed."
    },
    "postcode_range": {
      "type": "object",
      "description": "Netherlands only, optional. Sent with `street_postcodes` when the street covers MORE THAN ONE postcode: the lowest and highest postcode over the whole street (an outer bound, not a continuous run; `street_postcodes` lists the exact ones). In that case `standardized.postcode` carries `text` instead of a single postcode and `standardized.formatted_address` prints it. Check for this field before treating `standardized.postcode` as one postcode.",
      "properties": {
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "approximate": {
      "type": "boolean",
      "description": "Portugal only, optional. `true` when the point is a town / area centre standing in for the address: a city- or neighbourhood-only request (reason `street_missing`), a street that could not be placed (reason `fell_back_to_locality`), or an estate / urbanisation name sent with a town we can place (reasons `street_not_found` + `fell_back_to_locality`). `accuracy_type` is then `locality_centroid` or `admin_centroid` and `confidence` is 0.4 or lower. Absent otherwise."
    },
    "resolved_level": {
      "allOf": [
        {
          "$ref": "#/$defs/ResolvedLevel"
        }
      ],
      "description": "Portugal only, with `approximate: true`: which kind of place the point stands for (`locality`, `postal_town`, `municipality`, `district`, `lisbon_parish`)."
    },
    "resolved_name": {
      "type": "string",
      "description": "Portugal only, with `approximate: true`: the name of that place as spelled in the reference data (e.g. `Cascais`; `Lisboa` for a Lisbon neighbourhood)."
    },
    "enrichment": {
      "type": "object",
      "description": "Free geographic enrichment, attached automatically (no extra\ncharge, no request parameter) for eighteen countries — USA,\nCanada, Germany, Austria, Switzerland, France, United Kingdom,\nBelgium, Spain, Portugal, Ireland, Netherlands, Finland, Sweden,\nLuxembourg, Japan, Singapore and Hong Kong — whenever the result\nis precise\nenough for a small-area lookup to be trustworthy (gates below).\nOmitted otherwise — never null, never an empty object. Fields whose\ngeography does not apply to the point are likewise omitted, never\nnull. Sub-fields are country-specific; every layer is public\ngovernment data.\n\n**When it appears**\n\n- USA, Canada, Germany, Austria, Switzerland and the France admin\n  fields need a street-accurate coordinate (`rooftop`,\n  `arrival_point`, `street_interpolated` or `street_centroid` —\n  never a postcode/locality/admin centroid, where the point could\n  fall in the wrong small area).\n- The France `building` block and the whole UK block need a\n  premise-level match (`rooftop` / `arrival_point`). The UK block\n  is keyed on the matched address's `uprn` (ONS National Statistics\n  UPRN Lookup). Great Britain only — Northern Ireland (BT\n  postcodes) carries no block because NI statistical geography is\n  separately licensed.\n- Finland and the Netherlands are keyed on the validated postcode;\n  the block describes the whole postal area (see its `scope`\n  field), not the individual household.\n- Japan derives the 500 m JIS X 0410 mesh cell from the\n  coordinate.\n- Singapore joins on the standardized block number + street; HDB\n  blocks only, so a miss on private housing is normal.\n- Belgium is keyed on the matched row's 9-character Statbel\n  statistical sector (also emitted as `statistical_sector`); a\n  Belgian postcode spans several sectors, so a postcode-grain join\n  would attribute one sector's figures to all of them.\n- Spain resolves the 10-digit census section (CUSEC) from the INE\n  Callejero — municipality + street + house-number range + parity —\n  and falls back to municipality level when no range covers the\n  number. The block's `scope` says which tier answered\n  (`census_section` or `municipality`); the parity filter is\n  load-bearing and refuses rather than assigning the wrong side of\n  the street.\n- Portugal, Ireland, Sweden, Luxembourg and Hong Kong are\n  point-in-polygon on the returned coordinate, each returning a\n  `statistical_area` block whose `code` is that country's finest\n  published unit: Portugal BGRI subsecção (11 chars, block-level),\n  Ireland CSO Small Area (2022), Sweden DeSO, Luxembourg commune\n  (LAU2), Hong Kong Small Subunit Group.\n- Three Irish Small Areas genuinely overlap (slivers of 38–433 m²\n  from 20 m generalisation). A point inside one is reported as\n  ambiguous rather than silently resolved — picking the smallest\n  area would cross an electoral-district boundary in Carlow.\n\nEnrichment can accompany `partial_match: true` when the inferred\ncoordinate still reaches a qualifying tier (e.g.\n`street_centroid`); postcode-, locality- and admin-centroid\nfallbacks never carry it.\n\nStatistical layers respect the publisher's disclosure control:\nwithheld values are absent from the block — an absent value is not\na zero (Swiss hectare grid, Dutch PC6, Japanese age bands) — and\nGerman Zensus grid counts are Cell-Key perturbed. Each such block\nsays so in its `note`.\n",
      "additionalProperties": true,
      "properties": {
        "state_fips": {
          "type": "string",
          "description": "USA: 2-digit state FIPS."
        },
        "county_fips": {
          "type": "string",
          "description": "USA: 5-digit county FIPS (state+county)."
        },
        "census_tract": {
          "type": "string",
          "description": "USA: 11-digit census tract GEOID. Canada: CTUID (urban areas only)."
        },
        "block_group": {
          "type": "string",
          "description": "USA: 12-digit block-group GEOID."
        },
        "cbsa": {
          "type": "object",
          "description": "USA: Core-Based Statistical Area (metro/micro). Omitted (not null) outside any CBSA.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "metro",
                "micro"
              ]
            }
          }
        },
        "congressional_district": {
          "type": "object",
          "description": "USA: 119th-Congress district (`00` at-large; `98`/`99` non-voting).",
          "properties": {
            "state_fips": {
              "type": "string"
            },
            "district": {
              "type": "string"
            },
            "congress": {
              "type": "integer"
            }
          }
        },
        "school_district": {
          "type": "object",
          "description": "USA: school district.",
          "properties": {
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "unified",
                "elementary",
                "secondary"
              ]
            }
          }
        },
        "dissemination_area": {
          "type": "string",
          "description": "Canada: 8-digit Dissemination Area UID (province + census division + DA)."
        },
        "province_code": {
          "type": "string",
          "description": "Canada: 2-digit province/territory (SGC)."
        },
        "census_division": {
          "type": "string",
          "description": "Canada: 4-digit census division UID."
        },
        "census_subdivision": {
          "type": "object",
          "description": "Canada: census subdivision (municipality).",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "cma_ca": {
          "type": "object",
          "description": "Canada: Census Metropolitan Area / Census Agglomeration. Omitted outside both.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "metro",
                "agglomeration"
              ]
            }
          }
        },
        "federal_electoral_district": {
          "type": "object",
          "description": "Canada: federal electoral district.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "ags": {
          "type": "string",
          "description": "Germany: 8-digit Amtlicher Gemeindeschlüssel."
        },
        "ars": {
          "type": "string",
          "description": "Germany: 12-digit Amtlicher Regionalschlüssel."
        },
        "gemeinde": {
          "type": "string",
          "description": "Germany / Austria / Switzerland: municipality name."
        },
        "gemeinde_type": {
          "type": "string",
          "description": "Germany: municipality kind (Stadt, Gemeinde, Kreisfreie Stadt, …)."
        },
        "bundesland": {
          "type": "object",
          "description": "Germany / Austria: federal state.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "kreis": {
          "type": "object",
          "description": "Germany: district.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string"
            }
          }
        },
        "nuts3": {
          "type": "string",
          "description": "Germany: NUTS-3 code (e.g. DEA12)."
        },
        "bundestagswahlkreis": {
          "type": "object",
          "description": "Germany: Bundestag electoral constituency.",
          "properties": {
            "number": {
              "type": "integer"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "gkz": {
          "type": "string",
          "description": "Austria: 5-digit Gemeindekennziffer."
        },
        "politischer_bezirk": {
          "type": "object",
          "description": "Austria: political district.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "regionalwahlkreis": {
          "type": "object",
          "description": "Austria: regional electoral constituency.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "zaehlsprengel": {
          "type": "string",
          "description": "Austria: census enumeration district (smallest census unit)."
        },
        "bfs_nummer": {
          "type": "string",
          "description": "Switzerland: BFS municipality number."
        },
        "kanton": {
          "type": "object",
          "description": "Switzerland: canton — also the Nationalrat electoral constituency.",
          "properties": {
            "number": {
              "type": "integer"
            },
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "bezirk": {
          "type": "object",
          "description": "Switzerland: district.",
          "properties": {
            "number": {
              "type": "integer"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "grossregion": {
          "type": "object",
          "description": "Switzerland: major region = Swiss NUTS-2 unit.",
          "properties": {
            "number": {
              "type": "integer"
            },
            "nuts2": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "sprachgebiet": {
          "type": "object",
          "description": "Switzerland: official language region — which language to address this customer in.",
          "properties": {
            "language": {
              "type": "string",
              "description": "ISO 639-1: de/fr/it/rm"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "degree_of_urbanisation": {
          "type": "object",
          "description": "Switzerland: Eurostat DEGURBA class.",
          "properties": {
            "code": {
              "type": "string",
              "enum": [
                "city",
                "town_suburb",
                "rural"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        },
        "stadt_land": {
          "type": "string",
          "enum": [
            "urban",
            "intermediate",
            "rural"
          ],
          "description": "Switzerland: BFS Stadt/Land typology."
        },
        "gemeindetyp": {
          "type": "object",
          "description": "Switzerland: BFS municipality typology (9 classes); `class` is the 3-fold split.",
          "properties": {
            "code": {
              "type": "string"
            },
            "class": {
              "type": "string",
              "enum": [
                "urban",
                "periurban",
                "rural"
              ]
            }
          }
        },
        "agglomeration": {
          "type": "object",
          "description": "Switzerland: agglomeration.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "arbeitsmarktregion": {
          "type": "object",
          "description": "Switzerland: labour-market region.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "macro_region": {
              "type": "string"
            }
          }
        },
        "insee": {
          "type": "string",
          "description": "France: INSEE commune code."
        },
        "commune": {
          "type": "string",
          "description": "France: commune name."
        },
        "departement": {
          "type": "object",
          "description": "France: département.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "region": {
          "type": "object",
          "description": "France: région. UK: ONS region.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "iris": {
          "type": "object",
          "description": "France: INSEE IRIS statistical district (metropolitan France).",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "residential",
                "economic_activity",
                "miscellaneous",
                "whole_commune"
              ]
            }
          }
        },
        "building": {
          "type": "object",
          "description": "France, premise-level matches only: the IGN BD TOPO building the coordinate falls on (or the nearest within 8 m). `coord_verified` is true when the point is inside or ≤ 2 m from the footprint. `sub_unit_expected` is true when the building is multi-dwelling and the caller supplied no apartment/unit — the address is probably incomplete.",
          "properties": {
            "coord_verified": {
              "type": "boolean"
            },
            "match_type": {
              "type": "string",
              "enum": [
                "inside",
                "nearest"
              ]
            },
            "distance_m": {
              "type": "number"
            },
            "building_type": {
              "type": "string",
              "description": "e.g. Unspecified, Church, Castle, …"
            },
            "usage": {
              "type": "string",
              "description": "Residential, Commercial and services, Industrial, …"
            },
            "usage_secondary": {
              "type": "string"
            },
            "height_m": {
              "type": "number"
            },
            "floors": {
              "type": "integer"
            },
            "dwellings": {
              "type": "integer"
            },
            "is_multi_dwelling": {
              "type": "boolean"
            },
            "rnb_id": {
              "type": "string",
              "description": "French national building registry (RNB) id."
            },
            "sub_unit_expected": {
              "type": "boolean"
            },
            "source": {
              "type": "string"
            }
          }
        },
        "output_area": {
          "type": "string",
          "description": "UK: 2021 Output Area code — finest ONS tier; output areas have no name."
        },
        "lsoa": {
          "type": "object",
          "description": "UK: Lower layer Super Output Area.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "msoa": {
          "type": "object",
          "description": "UK: Middle layer Super Output Area.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "local_authority": {
          "type": "object",
          "description": "UK: local authority district.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "ward": {
          "type": "object",
          "description": "UK: electoral ward.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "westminster_constituency": {
          "type": "object",
          "description": "UK: Westminster parliamentary constituency.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "country": {
          "type": "object",
          "description": "UK: constituent country (England, Scotland, Wales).",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "police_force_area": {
          "type": "object",
          "description": "UK: police force area.",
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "rural_urban": {
          "type": "object",
          "description": "UK: rural/urban classification.",
          "properties": {
            "code": {
              "type": "string"
            },
            "description": {
              "type": "string"
            }
          }
        },
        "demographics": {
          "type": "object",
          "description": "Germany: Zensus 2022 100 m grid — grid_cell, population, avg_age, avg_household_size, avg_net_rent_per_sqm, owner_occupier_pct, vacancy_pct, foreign_national_pct; small counts are Cell-Key perturbed (approximate). Switzerland: BFS STATPOP 100 m hectare grid — hectare_cell, population, buildings, dwellings; withheld cells are absent (an absent value is not a zero). Always carries `note` and `source`.",
          "additionalProperties": true
        },
        "economy": {
          "type": "object",
          "description": "Switzerland: BFS STATENT hectare-grid workplace stats — hectare_cell, workplaces, employees_fte, note, source.",
          "additionalProperties": true
        },
        "postal_area": {
          "type": "object",
          "description": "Finland: Statistics Finland PAAVO statistics for the whole postal area (`scope: postal_area`) — names (fi/sv), municipality_code, area_km2, centroid, population + age bands, mean/median incomes (personal and household), employment, jobs_total, households by type/tenure, dwellings, avg_dwelling_area_m2, summer_cottages. CC BY 4.0; `source` inside the block.",
          "additionalProperties": true
        },
        "postcode_area": {
          "type": "object",
          "description": "Netherlands: CBS Kerncijfers for the six-character postcode (`scope: postcode6_area`) — inhabitants + age bands, households by type, dwellings, avg_home_value_eur, pct_owner_occupied, pct_rented, persons_on_benefits, avg_gas_m3, avg_electricity_kwh. CBS-suppressed cells are absent, never 0.",
          "additionalProperties": true
        },
        "mesh_area": {
          "type": "object",
          "description": "Japan: 2020 Population Census on the 500 m JIS X 0410 mesh (`scope: mesh_500m`) — mesh_code, pop_total, pop_male, pop_female, pop_0_14, pop_15_64, pop_65_plus, households. Withheld age bands are absent.",
          "additionalProperties": true
        },
        "hdb_block": {
          "type": "object",
          "description": "Singapore: HDB Property Information for the matched block (`scope: hdb_block`) — bldg_contract_town, max_floor_lvl, year_completed, residential / commercial / market_hawker / multistorey_carpark / precinct_pavilion / miscellaneous flags, total_dwelling_units and the full unit mix (units_1room … units_studio, rental_1room … rental_other). HDB blocks only — private housing has no block.",
          "additionalProperties": true
        },
        "statistical_sector_area": {
          "type": "object",
          "description": "Belgium: Statbel figures for the address's statistical sector (`scope: statistical_sector`) — municipality NIS code and nam

# --- truncated at 32 KB (86 KB total) ---
# Full source: https://artifacts.apis.io/acuris-geo-com/json-schema/acuris-geo-com-validate-response-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/acuris-geo-com-validate-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.