Tours
Two read endpoints, both scoped to your client — they return tours across every organisation you own.
Authentication
Every request needs a bearer token from
/auth/server/token. Send it as
Authorization: Bearer <token>.
List tours
GET /server/tours
Returns every tour for your client, newest first.
Query parameters
| Parameter | Type | Description |
|---|---|---|
organisationId | string (optional) | Return only tours for this organisation. Omit to return all. |
Example
curl "https://api.noughtyreality.com/tours/v1/server/tours?organisationId=org_123" \
-H "Authorization: Bearer $TOKEN"
[
{
"id": "0191d8e0-7f3a-7c2b-9b1e-2f5a9c4d8e10",
"name": "3-bed flat, Shoreditch",
"thumbnailURL": "https://…",
"organisationId": "org_123",
"metadata": {}
}
]
| Field | Type | Description |
|---|---|---|
id | string | Tour id (UUID). |
name | string | Tour name. |
thumbnailURL | string | null | Pre-signed thumbnail URL, or null if the tour has no default scan. |
organisationId | string | The organisation the tour belongs to. |
metadata | object | Arbitrary key/value metadata attached to the tour. |
Get a tour
GET /server/tours/{id}
Returns one tour with its full floor → room → scan tree.
Example
curl https://api.noughtyreality.com/tours/v1/server/tours/0191d8e0-7f3a-7c2b-9b1e-2f5a9c4d8e10 \
-H "Authorization: Bearer $TOKEN"
{
"id": "0191d8e0-7f3a-7c2b-9b1e-2f5a9c4d8e10",
"name": "3-bed flat, Shoreditch",
"description": null,
"defaultScanId": "0191d8e0-8a1b-7c2b-9b1e-2f5a9c4d8e11",
"thumbnailURL": "https://…",
"slug": null,
"organisationId": "org_123",
"metadata": {},
"floors": [
{
"id": "0191d8e0-9c2d-7c2b-9b1e-2f5a9c4d8e12",
"name": "Ground floor",
"number": 0,
"planURL": "https://…",
"rooms": [
{
"id": "0191d8e0-ad3e-7c2b-9b1e-2f5a9c4d8e13",
"localId": "kitchen-1",
"name": "Kitchen",
"type": "kitchen",
"date": "2026-01-01T00:00:00.000Z",
"scans": [
{
"id": "0191d8e0-be4f-7c2b-9b1e-2f5a9c4d8e14",
"status": "FINISHED",
"theta": 1.57,
"transform": [1, 0, 0, 0, 1, 0, 0, 0, 1],
"panoramaURL": "https://…",
"panoramaLowResURL": "https://…",
"thumbnailURL": "https://…",
"date": "2026-01-01T00:00:00.000Z"
}
]
}
]
}
]
}
Beyond the list fields, the single-tour response adds description,
defaultScanId, slug, and the nested floors tree.
Asset URLs expire
Pre-signed URLs (thumbnailURL, planURL, panoramaURL, …) are time-limited —
fetch them fresh from the API rather than storing them.
Errors
| Status | When |
|---|---|
404 Tour not found | No tour with that id belongs to your client. |