Documentation menu
Endpoints
List portfolio sites
GET
/api/v1/portfolio/sitesYour Portfolio Monitor sites. Portfolio Monitor customers only.
Returns the sites you uploaded to Portfolio Monitor, in the order you added them. Your own data, so it uses no records.
- Access: Portfolio Monitor customers.
- Records: free, uses none.
Parameters
| Parameter | Type | Description |
|---|---|---|
limit | integer 1-500Default: 100 | Page size, 1 to 500. Defaults to 100.Missing, zero or non-numeric values use 100; values above 500 are treated as 500. |
cursor | string | next_cursor from the previous page, passed back exactly as returned (cur_...).400 bad_request if altered, or if it came from another endpoint. |
Example request
curl "https://planningsignal.co.uk/api/v1/portfolio/sites?limit=100" \
-H "Authorization: Bearer ps_live_your_key_here"Example response
{
"data": [
{
"id": 812,
"site_ref": "STORE-0147",
"name": "Hampstead High Street",
"address": "52 High Street, London",
"postcode": "NW3 1QH",
"lat": 51.5566,
"lng": -0.1779,
"uprn": null,
"region": "London North",
"tags": [
"retail"
],
"radius_m": 250,
"watch_on_site": true,
"active": true,
"geocode_status": "ok",
"authority": "Camden",
"covered": true,
"created_at": "2026-10-01T09:30:00.000Z",
"updated_at": "2026-10-01T09:30:00.000Z"
}
],
"next_cursor": null
}Pass next_cursor back as cursor for the next page; it is null on the last page. See pagination.
Errors
| Status | code | When |
|---|---|---|
| 400 | bad_request | Altered cursor. |
| 403 | plan_required | Portfolio Monitor is not active on the account. |
| 401 | unauthorized | Missing, invalid or revoked key. |
| 429 | rate_limited | Over 60 requests a minute. |
| 500 | server_error | Something failed on our side. Retry shortly. |
Every error has the same JSON shape: { "error": "...", "code": "..." }, with extra fields on some codes. Full bodies are on rate limits and errors.
Questions? Contact us, or see the help centre.