---
title: "Read a citation"
method: GET
path: "/v1/citations/{jurisdiction}/{document}/{version}/{file}/{passageId}"
tags: ["Unlocks and reports"]
---

# Read a citation

`GET /v1/citations/{jurisdiction}/{document}/{version}/{file}/{passageId}`

## Request

- Base URL: `https://app.propcode.com.au/api`
- URL: `https://app.propcode.com.au/api/v1/citations/{jurisdiction}/{document}/{version}/{file}/{passageId}`
- Auth: HTTP bearer

The text a Rapid Planning Report citation points to, from the version the report read: GET its contentUrl. It answers with the cited passage, its text stopping at 10,000 characters (truncated says so). With includeParentSection=true it answers with the section the passage is in instead, with all its subclauses and the passage in <mark>, as the Library shows a citation; parentSection says which you got, since it's the passage alone where the section would be the whole document, runs past 20,000 characters, or is the passage itself. Each comes as HTML and as plain text. A report cites 50 to 100 passages, so read the ones you need. Any key reads them; a live key's team reads up to 2,000 different passages a day, and repeats are free. Legislation's text is the published legislation's; a development control plan's is read from the council's PDF, which libraryUrl opens.

## Path parameters

- `jurisdiction` string, required
- `document` string, required
- `version` string, required
- `file` integer, required
- `passageId` integer, required

## Query parameters

- `includeParentSection` boolean

## Response `200`

The cited text.

- Citation: The text a Rapid Planning Report citation points to, from the version the report read: the passage, or with includeParentSection, the section it is in.
  - `object` 'citation', required
  - `document` object, required
    - `id` string, required
    - `name` string, required
    - `jurisdiction` string, required
  - `version` string, required: The document's version, e.g. 2026-07-01.
  - `file` integer, required: The document's file, by number, as the path names it.
  - `passageId` integer, required: The passage, as the path names it (a text within an element reads as the element).
  - `location` string: Where the passage is in the document, 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.
  - `parentSection` boolean, required: true: html and text are the passage's parent section, the passage in <mark>. false: they're the passage alone.
  - `html` string, required: The text as HTML.
  - `text` string, required: The same, plain: a line for each paragraph, list item or table row, with its number, e.g. (a).
  - `truncated` unknown
  - `libraryUrl` string, required: The passage in PropCode's Library, at this version.

## Other responses

- `400`: The request isn’t valid. Codes: `key_in_url`, `invalid_parameter`, `passage_too_broad`.
- `401`: No valid key. Codes: `missing_api_key`, `invalid_api_key`.
- `404`: Not found. Codes: `citation_not_found`.
- `422`: Facts or jurisdiction not accepted. Codes: `unsupported_jurisdiction`.
- `429`: Over a limit: retry after Retry-After. Codes: `rate_limited`, `sandbox_daily_limit`, `daily_citation_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)
