Messages
Messages are notes or updates related to a site visit.
Common operations:
GET /messagesPOST /messagesGET /messages/{id}PATCH /messages/{id}POST /messages/{id}/file-attachmentGET /messages/{id}/file-attachment
List responses support page[size] and page[after]. When more records are
available, use meta.nextCursor as the next page[after] value.
Client-writable fields:
typemessageThreadstatusurgencybuyerclientContacts
The API sets these fields internally:
method = EmailoccurredAt = nowssnPm = true
Create messages against an owned site visit by sending the SSN API site-visit
ID. Include a unique Idempotency-Key for every create request.
POST /api/v1/messages
Authorization: Bearer YOUR_ACCESS_TOKEN
Idempotency-Key: import-2026-05-14-messages-row-000123
Content-Type: application/json
{
"siteVisitId": "visit_0d995b97a85e4c64ad5594c2e74b69e4",
"type": "Support",
"messageThread": "Client note: technician should call before arrival.",
"status": "Open",
"urgency": "Normal",
"buyer": true,
"clientContacts": true
}
Use PATCH /messages/{id} to append to messageThread or update writable
message fields. GET /messages/{id} responses include an ETag header. Send
that value in If-Match when patching a message.
PATCH /api/v1/messages/msg_123
Authorization: Bearer YOUR_ACCESS_TOKEN
If-Match: "1"
Content-Type: application/json
{
"messageThread": "Follow-up note: store manager confirmed the revised window.",
"status": "Open"
}
Message attachments use the file upload workflow documented on File Uploads.
See the API Reference for the full message request and response schemas.