Core
Resolve an address to a scheme and size the dataset — the shared entry points every integration uses.
Coverage
No keyGET/v1/coverage
Dataset summary — published so integrators can size the dataset before
building against it. This is the *dataset* coverage (counts), distinct from a
per-scheme `coverage_level`.
Response
{
"data": {
"schemes": 22300,
"by_state": {
"NSW": 21624,
"WA": 50,
"NT": 1,
"VIC": 117,
"ACT": 6,
"SA": 4,
"QLD": 498
}
},
"meta": {
"as_of": "2026-11-11T08:42:18Z"
}
}
curl "https://sqpzgvwade.ap-southeast-2.awsapprunner.com/v1/coverage"
Public endpoint — no API key required.
Resolve
PreviewPOST/v1/resolve
Map an address to the strata `scheme_id` a caller caches against a listing.
The scheme_id is the *result*, not an input — if you already have it, call the
scheme endpoints directly. `data.candidates` are ranked; `meta.confidence` says
how sure — confirm anything below 1.0. Registry-backed across ~88k NSW schemes.
Parameters
| Name | In | Description |
|---|
| address * | body | Free-text address, e.g. "1 Example Street, Sampleton NSW 2000". Unit prefix and street-type abbreviations are normalised. |
| state | body | Reserved; the registry is NSW today. |
Response
{
"data": {
"scheme_id": "SP00000",
"candidates": [
{
"scheme_id": "SP00000",
"address": "1 EXAMPLE STREET SAMPLETON",
"suburb": "SAMPLETON",
"post_code": "2000"
}
]
},
"meta": {
"coverage_level": "registry_only",
"confidence": 1,
"as_of": "2026-01-01T00:00:00Z",
"sources": [
{
"name": "NSW Strata Plan register (Spatial Services)",
"licence": "CC BY 4.0"
}
]
}
}
curl -X POST -H "X-API-Key: $COHABIT_API_KEY" \
-H "content-type: application/json" \
-d '{"address": "1 Example Street, Sampleton NSW 2000"}' \
"https://sqpzgvwade.ap-southeast-2.awsapprunner.com/v1/resolve"
Run a request to see the response.
Health Score
A coverage-aware 0–1000 score with a per-category breakdown and a confidence figure.
Health Score
GET/v1/health-score/{scheme_id}
A 0-1000 health score for a strata scheme, broken down by category,
with a confidence figure. Always read `confidence` next to the score: the
score is computed only over data that exists, and missing data lowers
confidence rather than silently scoring zero. Below 0.40 confidence the
headline is withheld -- `health_score` comes back null rather than a
number the evidence can't support. There is deliberately no single-word
band, which would read as a strong claim on weak data.
Parameters
| Name | In | Description |
|---|
| scheme_id * | path | Strata plan number, e.g. SP00000. Case-insensitive. |
| state | query | NSW, QLD, VIC, WA, or NT. A filter, not a hint: a mismatch returns 404 rather than being ignored. |
Response
{
"data": {
"health_score": 642,
"categories": {
"financial": 88,
"compliance": 44,
"liveability": 100,
"condition": 39,
"sustainability": 60
}
},
"meta": {
"scheme_id": "SP00000",
"state": "NSW",
"coverage_level": "full",
"confidence": 0.77,
"as_of": "2026-01-01T00:00:00Z",
"sources": [
{
"name": "Cohabit strata document dataset",
"licence": "proprietary"
},
{
"name": "Cohabit Health Score v2",
"licence": "proprietary"
}
],
"source": "document",
"score_version": "hs-2.0"
}
}
curl -H "X-API-Key: $COHABIT_API_KEY" \
"https://sqpzgvwade.ap-southeast-2.awsapprunner.com/v1/health-score/SP00000?state=NSW"
Run a request to see the response.
Strata Records
Structured building and management records extracted from a scheme's own documents.
Building Info
GET/v1/buildings/{scheme_id}
Address, size, age, and management details for a strata scheme.
Document-sourced schemes carry richer info than app-sourced ones. Three
things to read carefully: `address` is the full formatted address and
already contains suburb, state and post code -- don't concatenate them.
`building_age_years` counts from `registration_date`, the date the strata
scheme was registered (not when the building was built) -- these differ
for older buildings converted to strata later. A null field means the
source documents don't record it -- unknown, not absent.
Parameters
| Name | In | Description |
|---|
| scheme_id * | path | Strata plan number, e.g. SP00000. Case-insensitive. |
| state | query | NSW, QLD, VIC, WA, or NT. A filter, not a hint: a mismatch returns 404 rather than being ignored. |
Response
{
"data": {
"address": "1 Example Street, Sampleton NSW 2000",
"suburb": "Sampleton",
"post_code": "2000",
"latitude": -33.8,
"longitude": 151.2,
"lot_count": 42,
"building_age_years": 15,
"levels": 8,
"registration_date": "2010-01-01",
"has_building_manager": true,
"manager_name": "Example Strata Management",
"scheme_status": "Active"
},
"meta": {
"scheme_id": "SP00000",
"state": "NSW",
"coverage_level": "full",
"as_of": "2026-01-01T00:00:00Z",
"sources": [
{
"name": "Cohabit strata document dataset",
"licence": "proprietary"
}
],
"source": "document"
}
}
curl -H "X-API-Key: $COHABIT_API_KEY" \
"https://sqpzgvwade.ap-southeast-2.awsapprunner.com/v1/buildings/SP00000?state=NSW"
Run a request to see the response.
Risk & Exposure
Regulatory, defect, financial and catastrophe risk signals for a scheme.
Alerts
PreviewGET/v1/schemes/{scheme_id}/alerts
Regulatory orders, defect/financial/compliance signals for a scheme. BC
orders come from the registry-wide register, so a registry-only scheme still
gets them (coverage_level="registry_only"); the rule-based signals need
document data (coverage_level="full"). Each alert has a stable `id` (e.g.
MISSING_AGM, NO_FIRE_CERTIFICATE) -- match on `id`, not `description`.
`category` is one of compliance, financial, insurance, maintenance, or
regulatory; `severity` is high, medium, or low. Only fired alerts are
returned, so a scheme with no active flags returns an empty `alerts`
array.
Parameters
| Name | In | Description |
|---|
| scheme_id * | path | Strata plan number, e.g. SP00000. Case-insensitive. |
| state | query | NSW, QLD, VIC, WA, or NT. A filter, not a hint: a mismatch returns 404 rather than being ignored. |
Response
{
"data": {
"total_alerts": 3,
"alerts": [
{
"id": "BC_ORDER:demo",
"type": "BC_ORDER",
"category": "regulatory",
"severity": "high",
"description": "Building Commissioner order: Serious defect",
"detail": "Illustrative order (synthetic)",
"order_date": "2024-05-01",
"triggered": true
},
{
"id": "MISSING_AGM",
"category": "compliance",
"severity": "high",
"description": "No AGM in the last 15 months",
"triggered": true
},
{
"id": "OPEN_DEFECTS",
"category": "maintenance",
"severity": "medium",
"description": "Open defects recorded",
"triggered": true
}
]
},
"meta": {
"scheme_id": "SP00000",
"coverage_level": "full",
"as_of": "2026-01-01T00:00:00Z",
"sources": [
{
"name": "NSW Building Commissioner orders",
"licence": "CC BY 4.0"
},
{
"name": "Cohabit detection rules",
"licence": "proprietary"
}
]
}
}
curl -H "X-API-Key: $COHABIT_API_KEY" \
"https://sqpzgvwade.ap-southeast-2.awsapprunner.com/v1/schemes/SP00000/alerts"
Run a request to see the response.
Exposure
PreviewGET/v1/schemes/{scheme_id}/exposure
Per-peril catastrophe history and cyclone track proximity for the
scheme's postcode. Location-based, so it answers across the registry
(coverage_level="registry_only" when the scheme isn't document-extracted),
not only the extracted set. The loss and event figures are
postcode-level and industry-wide -- the exposure of the area, not this
scheme's own claims history or premium.
Parameters
| Name | In | Description |
|---|
| scheme_id * | path | Strata plan number, e.g. SP00000. Case-insensitive. |
| state | query | NSW, QLD, VIC, WA, or NT. A filter, not a hint: a mismatch returns 404 rather than being ignored. |
Response
{
"data": {
"available": true,
"postcode": "2000",
"overall_risk": "moderate",
"peril_count": 2,
"total_events": 4,
"active_catastrophes": 0,
"perils": [
{
"type": "Flood",
"risk": "moderate",
"events_5yr": 2,
"events_20yr": 4,
"total_loss_m": 1234.5,
"recent_events": [
{
"name": "Illustrative storm (synthetic)",
"year": 2024,
"loss_m": 120,
"claims": 3400,
"active": false
}
]
},
{
"type": "Bushfire",
"risk": "low",
"events_5yr": 0,
"events_20yr": 1,
"total_loss_m": 45,
"recent_events": []
}
],
"cyclone_exposure": null
},
"meta": {
"scheme_id": "SP00000",
"coverage_level": "registry_only",
"as_of": "2026-01-01T00:00:00Z",
"sources": [
{
"name": "ICA catastrophe events",
"licence": "CC BY 4.0"
},
{
"name": "BOM cyclone tracks",
"licence": "CC BY 4.0"
},
{
"name": "ABS postal areas",
"licence": "CC BY 4.0"
}
],
"catastrophe_model": "ica_peril_risk_v1",
"data_source_rows": 6
}
}
curl -H "X-API-Key: $COHABIT_API_KEY" \
"https://sqpzgvwade.ap-southeast-2.awsapprunner.com/v1/schemes/SP00000/exposure"
Run a request to see the response.