---
title: "Seed Suburbs"
method: POST
path: "/api/v1/cd-precedent/seed-suburbs"
tags: ["Casa Daily — Precedent"]
---

# Seed Suburbs

`POST /api/v1/cd-precedent/seed-suburbs`

## 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/cd-precedent/seed-suburbs`
- Auth: API key in header `X-API-Key`

Return suburbs+zones where dev_type approvals concentrate.

Performance notes: the townhouse predicate uses ILIKE patterns on
`ci_da_applications.description` (no trigram GIN yet) and scans
~270K rows. Cold-cache call lands ~10-15s; subdivision/duplex/etc.
are 1-5s because dev_type_classified covers them directly.

Cache-Control set to `s-maxage=3600, stale-while-revalidate=86400` so
Vercel's edge layer + Casa-Daily's fetch-cache make repeat calls
free. The data updates daily (after the nightly DA ingestion run),
so a 1-hour cache is well within the data freshness budget.

## Request body

- PrecedentSeedRequest
  - `dev_type` 'subdivision' | 'duplex' | 'townhouse' | 'multi_unit' | 'secondary_dwelling' | 'mcu' | 'kdr' | 'single_dwelling', required: Development type to seed from.
  - `lookback_months` integer: How far back to count approvals.
  - `lgas` string[], nullable: Restrict to these LGAs. None = all SEQ. Pass a subset (e.g. ['Sunshine Coast']) to seed within the user's preferred patch.
  - `min_approvals` integer: Drop suburbs/zones with fewer approved DAs.
  - `min_approval_rate_pct` number: Drop (suburb, zone) combos where less than this %% of decided DAs were approved.
  - `limit` integer: Max (suburb, zone) tuples to return.

## Response `200`

Successful Response

- PrecedentSeedResponse
  - `dev_type` string, required
  - `lookback_months` integer, required
  - `lgas` string[], nullable, required
  - `total` integer, required
  - `suburbs` PrecedentSuburb[], required
    - `lga` string, required
    - `suburb` string, required
    - `zone_code` string, nullable, required
    - `approved_n` integer, required
    - `refused_n` integer, required
    - `decided_n` integer, required
    - `approval_rate_pct` number, required
    - `newest_decision_year` integer, nullable, required
    - `median_decision_year` integer, nullable, required
  - `elapsed_ms` integer, required

## 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)
