---
title: "Get Property"
method: GET
path: "/api/v1/property/{property_id}"
tags: ["property"]
---

# Get Property

`GET /api/v1/property/{property_id}`

## Request

- Base URL: `https://api.casaintelligence.com.au` (the document declares no server; this is the origin it was published from)
- URL: `https://api.casaintelligence.com.au/api/v1/property/{property_id}`
- Auth: API key in header `X-API-Key`

Get full property intelligence by ID.

Sequential (safe) execution, with per-stage timing for visibility:

First attempt at parallelisation via asyncio.gather on a single
AsyncSession produced `asyncpg.InterfaceError: connection is closed`
in production — SQLAlchemy 2.0 async sessions DO NOT support
concurrent statements on a single session, even for read-only
queries. Reverted to sequential. The dedup of `ci_rea_listings`
fetch (passed to both score + intent helpers) is the real durable
win — saves one round-trip per request.

Per-stage timing logged at INFO with a tag the operator can grep:
`[property/get] property_id=... t_fetch=Xms t_zone=Yms t_da=Zms
t_nearby=Wms t_rea=Vms t_score=Sms t_intent=Ims t_total=Tms`.
Once we have several real samples in Railway, the dominant cost
will be obvious — almost certainly `t_score` (score_rea_listing
fans out into _fetch_property_scoring_inputs + forecast_da_pathway).

## Path parameters

- `property_id` string, required

## Response `200`

Successful Response

- PropertyLookupResponse: Full response from property lookup endpoint.
  - `property` PropertySummary, required: Core property data returned from lookup.
    - `id` string, required
    - `lot_plan` string, required
    - `address` string, nullable
    - `suburb` string, nullable
    - `postcode` string, nullable
    - `lga` string, required
    - `state` string
    - `area_m2` number, nullable
    - `frontage_m` number, nullable
    - `depth_m` number, nullable
    - `shape_factor` number, nullable
    - `is_corner` boolean
    - `is_battle_axe` boolean
    - `location` PropertyLocation: Geographic coordinates for a property.
      - `latitude` number, required
      - `longitude` number, required
    - `zone_code` string, nullable
    - `zone_name` string, nullable
    - `overlays` string[], nullable
    - `is_in_pda` boolean
    - `pda_name` string, nullable
    - `subdivision_eligible` boolean, nullable
    - `subdivision_pathway` string, nullable
    - `max_lots` integer, nullable
    - `da_approval_probability` number, nullable
    - `development_potential` number, nullable
    - `estimated_uplift_low` number, nullable
    - `estimated_uplift_high` number, nullable
    - `data_quality` number, nullable
    - `last_enriched` string, date-time, nullable
  - `zone_rules` ZoneRules: Planning rules for a property's zone.
    - `zone_code` string, required
    - `zone_name` string, nullable
    - `lga` string, required
    - `min_lot_area_m2` number, nullable
    - `min_frontage_m` number, nullable
    - `max_site_cover_pct` number, nullable
    - `max_height_m` number, nullable
    - `max_storeys` integer, nullable
    - `min_setback_front_m` number, nullable
    - `min_setback_side_m` number, nullable
    - `min_setback_rear_m` number, nullable
    - `allows_subdivision` boolean, nullable
    - `dual_occ_permitted` boolean, nullable
    - `dual_occ_min_parent_m2` number, nullable
    - `dual_occ_min_result_m2` number, nullable
    - `multi_unit_permitted` boolean, nullable
    - `multi_unit_density` number, nullable
    - `notes` string, nullable
  - `score` PropertyScore: Casa Score block — same scoring used by widget endpoint and the Casa Daily dashboard so both products show the same number.
    - `casa_score` integer
    - `tier` string, nullable
    - `tier_color` string, nullable
    - `tier_label` string, nullable
    - `components` object, nullable
    - `rationale` string, nullable
  - `da_count` integer
  - `nearby_da_count` integer
  - `has_development_potential` boolean
  - `listing_intent_subdivision` boolean, nullable
  - `listing_intent_keywords` string[], nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine.md) · [All operations](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine/revisions/71d711039de0?raw)
