Added
12 November 2026 - Open API 1.12.0
2 days ago by Martin Gunther
Manage For Sale and To Let boards for sales and lettings properties, and cancel and acknowledge lettings maintenance jobs.
For Sale and To Let boards
Manage the board on a sales or lettings property, as the board management panel in Loop does.
GET /v2/sales/properties/{propertyId}/boardandGET /v2/lettings/properties/{propertyId}/board: the board up now, the board contractor and every board job, newest first. The contractor is an address book entry (links.contractor). Sales and lettings properties now link to their board (links.board).PUT …/boardchanges the board. SendboardTypeandaction, and optionallynotes,markAsDoneanduserId. A board job is recorded with the current contractor, and a "Board Type updated" note is added to the property. Changing tonotRequiredwhen the property has any other board, or none set yet, is always recorded asneedsTakingDown, as in Loop.PUT …/board/contractorsets the board contractor: sendcontractorId, an entry in the agency's address book, ornullto clear it. Jobs already recorded keep the contractor they had.POST …/board/history/{historyId}/donemarks a board job done, now or at thedateDoneyou send. A job that's already done answers409 Conflict.- No emails are sent to the contractor from these calls.
- Board types are
notRequired,forSale,soldSTCandsoldfor sales, andnotRequired,toLet,letandletAgreedfor lettings. Actions areneedsErecting,needsMoving,needsReErectingandneedsTakingDown. - Scopes:
read:boardsandwrite:boards.
{
"boardType": "soldSTC",
"action": "needsMoving",
"notes": "Add the Sold STC slip to the existing board.",
"markAsDone": false
}{
"propertyId": 12345,
"boardType": "soldSTC",
"notes": "Add the Sold STC slip to the existing board.",
"boardContractorId": 501,
"history": [
{
"id": 9002,
"boardType": "soldSTC",
"action": "needsMoving",
"notes": "Add the Sold STC slip to the existing board.",
"boardContractorId": 501,
"creatingAgentId": "3f2b8c1e-0000-4000-8000-000000000001",
"dateCreated": "2026-11-12T10:15:00",
"dateDone": null,
"emailed": false
},
{
"id": 9001,
"boardType": "forSale",
"action": "needsErecting",
"notes": null,
"boardContractorId": 501,
"creatingAgentId": "3f2b8c1e-0000-4000-8000-000000000001",
"dateCreated": "2026-10-01T09:00:00",
"dateDone": "2026-10-03T14:30:00",
"emailed": true
}
],
"links": {
"self": "/v2/sales/properties/12345/board",
"property": "/v2/sales/properties/12345",
"contractor": "/v2/address-book/501"
}
}Cancelling and acknowledging maintenance jobs
Two more steps of a lettings maintenance job, as an agent takes them in Loop.
POST /v2/lettings/maintenance-jobs/{id}/cancelcancels a job. Send areason(required, up to 320 characters) and optionallyuserId, the agent cancelling it. Only anotAcknowledged,pendingorapprovedjob can be cancelled; a complete or already cancelled job answers409 Conflict. The job's quotes are left as they are, and a "Cancelled job" note is added to the job.- Every maintenance job now carries
cancellation: when it was cancelled, why and by whom. It'snullunless the job iscancelled. POST /v2/lettings/maintenance-jobstakesacknowledge. Sendtruewhen the agent has already acknowledged the job: it's created aspending, so you can add quotes straight away, and a "Job acknowledged" note is added, credited to the agent recorded as creating it. Without it, the job isnotAcknowledgedas before.POST /v2/lettings/maintenance-jobs/{id}/acknowledgeacknowledges anotAcknowledgedjob later, with an optionaluserId. The job becomespending. Any other job answers409 Conflict.- No emails are sent to the contractor, landlord or tenant from these calls.
- Scope:
write:maintenance, which you already need to report jobs.
{
"reason": "The tenant has repaired the tap themselves.",
"userId": "3f2b8c1e-0000-4000-8000-000000000001"
}{
"id": 48213,
"refId": "48213",
"lettingsPropertyId": 12345,
"status": "cancelled",
"summary": "Dripping bathroom tap",
"completion": {
"dateCompleted": null,
"notes": null
},
"cancellation": {
"dateCancelled": "2026-11-12T10:15:00",
"reason": "The tenant has repaired the tap themselves.",
"cancelledByAgentId": "3f2b8c1e-0000-4000-8000-000000000001"
},
"links": {
"self": "/v2/lettings/maintenance-jobs/48213",
"lettingsProperty": "/v2/lettings/properties/12345"
}
}{
"lettingsPropertyId": 12345,
"subType": "bathroomsToiletsTapDripping",
"summary": "Dripping bathroom tap",
"reportedBy": "tenant",
"userId": "3f2b8c1e-0000-4000-8000-000000000001",
"acknowledge": true
}New scopes.
read:boardsandwrite:boardsaren't on existing keys. Ask us to add them to your key.
