> For the complete documentation index, see [llms.txt](https://docs.fill-easy.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fill-easy.com/land-registry-report.md).

# Land Registry Report

Retrieve official land and property documents in minutes.

***

#### Flow

1. Pass the Property Reference Number (`prn`), `memorialNo`, or `address` to `/lra/request` to initiate the report request
2. Receive results via **webhook** or **poll** `/lra/poll`

***

#### Result Delivery

**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body. When the report is ready, a `POST` request is sent to that URL with the report payload wrapped in a `WebhookPayload` envelope. Polling remains available as a fallback if delivery fails.

**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.

## Request

> Each request maps to exactly one returned document.\
> \
> Specify either PRN or address.\
> \
> Requests with the PRN will return within 5 minutes most of the time.\
> \
> Requests with Just the address will be manually resolved within 1-2 days.\
> \
> For memorial copies, pass the memorial number as \`memorialNo\` — the plain memorial-form\
> copy is retrieved automatically, usually within 5 minutes.\
> \
> \*\*Dry Run:\*\* Set \`dryRun: true\` to test the integration without incurring costs.\
> A sample Land Registry PDF is uploaded to the report path and returned immediately — no\
> retrieval script or manual process runs. The response includes \`dryRun: true\` and a token\
> that can be polled normally via \`/lra/poll\`.\
> \
> \*\*Webhook Delivery:\*\* Provide \`callbackUrl\` to receive a \`POST\` with the completed report\
> when it is ready. The webhook body is a \[\`WebhookPayload\`]\(#/components/schemas/WebhookPayload)\
> containing the same data as a \`200\` response from \`/lra/poll\`.\
> The request includes \`X-Webhook-Event: lra.report.completed\` and \`X-Request-Id\` headers,\
> plus any custom headers supplied in \`callbackHeaders\`.\
> Polling via \`/lra/poll\` remains available regardless of whether a \`callbackUrl\` is provided.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Land Registry Report","description":"Retrieve official land and property documents in minutes.\n\n---\n\n### Flow\n\n1. Pass the Property Reference Number (`prn`), `memorialNo`, or `address` to `/lra/request` to initiate the report request\n\n2. Receive results via **webhook** or **poll** `/lra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/lra/request":{"post":{"tags":["Land Registry Report"],"summary":"Request","description":"Each request maps to exactly one returned document.\n\nSpecify either PRN or address.\n\nRequests with the PRN will return within 5 minutes most of the time.\n\nRequests with Just the address will be manually resolved within 1-2 days.\n\nFor memorial copies, pass the memorial number as `memorialNo` — the plain memorial-form\ncopy is retrieved automatically, usually within 5 minutes.\n\n**Dry Run:** Set `dryRun: true` to test the integration without incurring costs.\nA sample Land Registry PDF is uploaded to the report path and returned immediately — no\nretrieval script or manual process runs. The response includes `dryRun: true` and a token\nthat can be polled normally via `/lra/poll`.\n\n**Webhook Delivery:** Provide `callbackUrl` to receive a `POST` with the completed report\nwhen it is ready. The webhook body is a [`WebhookPayload`](#/components/schemas/WebhookPayload)\ncontaining the same data as a `200` response from `/lra/poll`.\nThe request includes `X-Webhook-Event: lra.report.completed` and `X-Request-Id` headers,\nplus any custom headers supplied in `callbackHeaders`.\nPolling via `/lra/poll` remains available regardless of whether a `callbackUrl` is provided.\n","operationId":"lraRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"countryCode":{"type":"string","description":"Country code for the property"},"prn":{"type":"string","description":"Property Reference Number"},"address":{"type":"string","description":"Property Address"},"memorialNo":{"type":"string","description":"Memorial number to order a plain memorial-form copy for (category `memorial`).\nWhen present, retrieval runs automatically instead of parking for manual handling.\n"},"category":{"type":"string","enum":["confirm","clarify","reject","lot","memorial"],"description":"Resolver outcome for this order (drives the ops dashboard view)"},"reasoning":{"type":"string","description":"Judge reasoning or defer reason, shown to ops"},"candidates":{"type":"array","description":"Alternative matches considered (shown to ops for clarify/reject)","items":{"type":"object","required":["prn","free_format_addr_eng"],"properties":{"prn":{"type":"string","description":"Property Reference Number"},"free_format_addr_eng":{"type":"string","description":"Free format English address"}}}},"emailList":{"type":"array","items":{"type":"string","format":"email"},"description":"Optional field for usage analytics"},"externalRefId":{"type":"string","description":"Your own reference ID (optional field for usage analytics)"},"dryRun":{"type":"boolean","description":"Set to `true` to test the full request-poll flow without incurring costs.\nA sample Land Registry PDF is uploaded to S3 and the request returns immediately.\n"},"express":{"type":"boolean","description":"Expediate request speed (Only used if turn-around times have been agreed upon)"},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://.+","description":"HTTPS URL to receive a webhook POST when the report is ready.\nWhen provided, the completed report (same payload as a `200` response from `/lra/poll`)\nis delivered to this URL.\nPolling remains available as a fallback.\n"},"callbackHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the webhook request.\nUse this to pass authentication or any other headers your endpoint requires\n(e.g. `{\"Authorization\": \"Bearer <token>\", \"X-Api-Key\": \"...\"}`).\n"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Poll with this token"},"dryRun":{"description":"Echoed back as `true` when the request was a dry run — no cost incurred","type":"boolean"}}}}}}}}}}}
```

## Poll Report

> Check the status of a land registry report request.\
> Keep polling until a \`200\` response is returned.\
> \
> Returns \`202\` while the report is still being processed.\
> \
> If a \`callbackUrl\` was provided in \`/lra/request\`, the report is also\
> delivered via webhook when ready. Polling is always available as a fallback.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Land Registry Report","description":"Retrieve official land and property documents in minutes.\n\n---\n\n### Flow\n\n1. Pass the Property Reference Number (`prn`), `memorialNo`, or `address` to `/lra/request` to initiate the report request\n\n2. Receive results via **webhook** or **poll** `/lra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/lra/poll":{"post":{"tags":["Land Registry Report"],"summary":"Poll Report","description":"Check the status of a land registry report request.\nKeep polling until a `200` response is returned.\n\nReturns `202` while the report is still being processed.\n\nIf a `callbackUrl` was provided in `/lra/request`, the report is also\ndelivered via webhook when ready. Polling is always available as a fallback.\n","operationId":"lraPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["token"],"type":"object","properties":{"token":{"type":"string","description":"Output of `/lra/request`"}}}}}},"responses":{"200":{"description":"Report ready","content":{"application/json":{"schema":{"type":"object","required":["message","data"],"properties":{"message":{"type":"string"},"data":{"type":"string","description":"Presigned URL to download the report"},"fileName":{"type":"string","description":"Suggested file name — the property address (or PRN), e.g. \"Flat A, 12 F, Block 1, Discovery Bay_Land Search.pdf\"."}}}}}},"202":{"description":"Report is pending","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}}}}}}}
```
