---
title: "Generate the Rapid Planning Report"
method: POST
path: "/v1/reports/rpr"
tags: ["Unlocks and reports"]
---

# Generate the Rapid Planning Report

`POST /v1/reports/rpr`

## Request

- Base URL: `https://app.propcode.com.au/api`
- URL: `https://app.propcode.com.au/api/v1/reports/rpr`
- Auth: HTTP bearer

Starts generating an unlocked property's Rapid Planning Report, of the kind reportType names: every land use, one land use (landUse), or subdivision. It's generated from the property's planning documents, in NSW, VIC, ACT and TAS, and takes a few minutes, so this answers at once with its id; read GET /v1/reports/rpr/{id} until it's ready. Once the property is unlocked (Pro, or a Rapid Planning Report credit), its Rapid Planning Reports cost nothing more: every kind, for every land use. Your team holds one report of each kind on a property, and one for each land use, generated the first time anyone in the team asks for it. Asking again, with any of the team's keys or in PropCode, answers with that report (alreadyGenerated: true), unless it's incomplete or failed, which generates it again (once a day at most). Live keys only.

## Query parameters

- `section` union
  - 'none'
  - integer

## Request body

- object: Generate the property's Rapid Planning Report: its planning rules by land use and approval pathway, from its planning documents.
  - `title` string, required: The property's title id, as GET /v1/properties gives it, with its jurisdiction. NSW: lot/plan (5008/DP752015), lot/section/plan (10/10/DP979849) or a strata plan (SP58841); for several lots, join their ids with +: 10/DP503890+11/DP503890. VIC: lot\plan (1001\PS340516). ACT: suburb, block and section (ACTON Block 11 Section 67). TAS: volume and folio (Volume 100007 Folio 1), or CID or PID.
  - `jurisdiction` string: The state: nsw (the default), vic, act or tas. Complying development answers are NSW only.
  - `reportType` 'multiple_land_uses' | 'single_land_use' | 'subdivision': multiple_land_uses (the default): the rules for every land use. single_land_use: the rules for one land use, named by landUse. subdivision: the rules for subdividing the lot.
  - `landUse` string: A land use's id, from GET /v1/land-uses: required for single_land_use, and taken by no other type.

## Response `200`

The report, generating or ready.

- Rpr: A property's Rapid Planning Report.
  - `object` 'rpr', required
  - `id` string, required: The report's id, for GET /v1/reports/rpr/{id}.
  - `property` object, required
    - `title` string, required
    - `jurisdiction` string, required
    - `address` string, required
  - `reportType` 'multiple_land_uses' | 'single_land_use' | 'subdivision', required
  - `landUse` string: The land use's name, for single_land_use.
  - `status` 'generating' | 'ready' | 'incomplete' | 'failed', required: generating: in progress, usually 2–5 minutes; read it again. ready: generated, with its sections. incomplete: generated with sections missing (missing lists them), and the ones it has. failed: not generated (error says why). For incomplete or failed, POST /v1/reports/rpr again generates it again, once a day at most.
  - `alreadyGenerated` boolean: POST only. true: your team already had this report (one of each type, and one for each land use, per property), so this request generated nothing new. false: this request started generating it.
  - `createdAt` string, required: When it was started (ISO 8601).
  - `reportUrl` string, required: The report on PropCode.
  - `shareUrl` string, required: The report's share link, as PropCode's Share copies it: anyone who has it can read the report, without signing in.
  - `outline` object[]: Every section the report has, in order, once ready or incomplete.
    - `section` integer, required: Its number, for ?section=
    - `title` string, required
    - `characters` integer, required: Its HTML's length, for deciding what to read.
  - `sections` RprSection[]: The report, once ready or incomplete: every section, or the one ?section= asked for, or none with ?section=none.
    - `title` string, required
    - `html` string, required: The section, as HTML as PropCode writes it. Each citation is its document's name and a [n] that citations explains.
    - `citations` RprCitation[], required
      - `n` integer, required: Its number, as [n] in the section.
      - `document` string, required: The planning document, e.g. a local environmental plan.
      - `version` string: The document's version the report read, e.g. 2026-07-01.
      - `location` string: Where in it, by its headings, e.g. Part 4 › 4.3 Height of buildings.
      - `fileName` string: For a document published as PDFs, the name of the PDF the passage is in. Left out for legislation.
      - `page` integer: The page of that PDF the passage starts on, counting from 1, where the document records it.
      - `pdfUrl` string: PropCode's copy of the council's PDF, opened at the page (#page=…). It stops working if PropCode removes that copy.
      - `libraryUrl` string: The passage in PropCode's Library: the document at the version the report read, its file, and the place in it.
      - `contentUrl` string: The cited passage’s text, from the version the report read: GET it with your key (GET /v1/citations/…), or give it to read_citation over MCP.
  - `missing` string[]: The sections that weren't generated, or came out cut short, when incomplete.
  - `error` string: What went wrong, when incomplete or failed.

## Other responses

- `400`: The request isn’t valid. Codes: `key_in_url`, `invalid_parameter`.
- `401`: No valid key. Codes: `missing_api_key`, `invalid_api_key`.
- `403`: This key can’t ask that. Codes: `sandbox_title_only`, `key_owner_left`, `not_unlocked`, `live_key_required`.
- `404`: Not found. Codes: `title_not_found`.
- `429`: Over a limit: retry after Retry-After. Codes: `rate_limited`, `sandbox_daily_limit`.
- `500`: Our error. Codes: `internal_error`.

---

[API](https://skmtc.dev/propcode/apis/propcode-api.md) - [All operations](https://skmtc.dev/propcode/apis/propcode-api/llms.txt) - [OpenAPI document](https://skmtc.dev/propcode/apis/propcode-api/revisions/f393cce32349?raw)
