For App Developers
Build on the property record.
The Foundation API lets your software submit property service events, attach documents, and read event history — programmatically, at scale. Your field software, CRM, or dispatching platform can contribute directly to the permanent property record.
Base URL
https://api-rc.bluetruss.com
Source: PUBLIC_API_BASE_URL
Authentication
Pass your provider identity via the X-Provider-Id request header. API keys will be issued during early access onboarding.
Format
All request and response bodies are JSON unless uploading a document, which uses multipart/form-data. All timestamps are ISO 8601 with timezone offset.
API Reference — v0.2.1-rc.4
Endpoints
Try It Defaults
Used for all Try It requests on this page.
/events Submit a new property event
Records a completed service event against a property. The property is resolved automatically from the site address. Returns a unique eventId that can be used to attach documents.
Request Body
{
"providerEventId": "WO-10045",
"eventType": "hvac.service.completed",
"occurredAt": "2026-07-01T14:30:00-05:00",
"summary": "Annual HVAC tune-up, replaced filter, checked refrigerant.",
"site": {
"addressLine1": "123 Main Street",
"city": "Nashville",
"state": "TN",
"postalCode": "37201"
},
"tags": ["hvac", "maintenance"],
"references": [
{ "type": "workOrder", "value": "WO-10045" }
],
"metadata": {
"technician": "Jane Doe",
"unitModel": "Carrier 24ACC636A003"
}
}Responses
-
202 AcceptedEvent recorded. Body contains eventId and providerEventId.{ "eventId": "f4ca8a20-8f7b-4e67-9cb1-c07b68f9250b", "providerEventId": "WO-10045", "status": "accepted" } -
400 Bad RequestValidation failed. Body contains field-level error details.{ "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1", "title": "Validation failed.", "status": 400, "errors": { "ProviderEventId": ["ProviderEventId is required."], "Site.PostalCode": ["Site.PostalCode is required."] } } -
409 ConflictAn event with this providerEventId already exists.{ "message": "An event with this ProviderEventId already exists.", "providerEventId": "WO-10045", "eventId": "f4ca8a20-8f7b-4e67-9cb1-c07b68f9250b" }
/events/{eventId} Retrieve an event by Foundation ID
Returns the full event record including site details, metadata, and any attached documents. Only accessible to the provider that submitted the event.
Responses
-
200 OKEvent found. Body contains full event details and document list.{ "eventId": "f4ca8a20-8f7b-4e67-9cb1-c07b68f9250b", "providerEventId": "WO-10045", "eventType": "hvac.service.completed", "occurredDate": "2026-07-01T14:30:00-05:00", "summary": "Annual HVAC tune-up, replaced filter, checked refrigerant.", "site": { "addressLine1": "123 Main Street", "city": "Nashville", "state": "TN", "postalCode": "37201" }, "documents": [] } -
404 Not FoundEvent not found or not accessible with the current provider identity.{ "title": "Event not found.", "status": 404, "detail": "Event 'f4ca8a20-8f7b-4e67-9cb1-c07b68f9250b' was not found." }
/events?providerEventId={id} Retrieve an event by your own ID
Looks up an event using the providerEventId you assigned at submission. Useful for checking whether a work order has already been recorded.
Responses
-
200 OKEvent found.{ "eventId": "f4ca8a20-8f7b-4e67-9cb1-c07b68f9250b", "providerEventId": "WO-10045", "eventType": "hvac.service.completed", "occurredDate": "2026-07-01T14:30:00-05:00", "summary": "Annual HVAC tune-up, replaced filter, checked refrigerant.", "site": { "addressLine1": "123 Main Street", "city": "Nashville", "state": "TN", "postalCode": "37201" }, "documents": [] } -
400 Bad RequestproviderEventId query parameter is required.{ "title": "Validation failed.", "status": 400, "errors": { "providerEventId": ["providerEventId is required."] } } -
404 Not FoundNo event found for this providerEventId.{ "title": "Event not found.", "status": 404, "detail": "Event with providerEventId 'WO-10045' was not found." }
/events/{eventId}/documents Attach a document to an event
Uploads a file (PDF, image) and attaches it to an existing event. Accepts multipart/form-data with a documentType field and a file field.
Request Body
// multipart/form-data
documentType: "Invoice" // Invoice | Receipt | Photo | Inspection Report | Permit | Warranty
file: <binary>Responses
-
202 AcceptedDocument uploaded and attached.{ "documentId": "6d67bc57-6092-41e2-a43c-2d70a5efef2c", "eventId": "f4ca8a20-8f7b-4e67-9cb1-c07b68f9250b", "documentType": "Invoice", "status": "accepted" } -
400 Bad RequestValidation failed — missing file, unsupported document type, or file is empty. -
404 Not FoundParent event not found. -
413 Payload Too LargeFile exceeds the 25 MB limit.{ "message": "File size exceeds the 25 MB limit." } -
415 Unsupported Media TypeMIME type not permitted for the chosen document type.{ "message": "Unsupported MIME type 'text/plain' for document type 'Invoice'." } -
422 Unprocessable EntityDocument limit reached (max 20 per event).{ "message": "Document limit reached. Maximum 20 documents are allowed per event." }
/events/{eventId}/documents/{documentId} Download a document
Returns the raw file content of an attached document with appropriate Content-Type and Content-Disposition headers.
Responses
-
200 OKFile stream returned.// Binary file stream Content-Type: application/pdf Content-Disposition: attachment; filename="invoice-10045.pdf" -
404 Not FoundDocument or event not found.{ "message": "Document not found." }
Reference Data
Supported event types
The eventType field must be one of the recognized values below. The catalog is expanding — contact us if your trade isn't listed.
-
hvac.service.completedHVAC service -
roof.replacedRoof replacement -
plumbing.repairedPlumbing repair
Quick Start — cURL
curl -X POST https://api-rc.bluetruss.com/events \
-H "Content-Type: application/json" \
-H "X-Provider-Id: your-provider-id" \
-d '{
"providerEventId": "WO-10045",
"eventType": "hvac.service.completed",
"occurredAt": "2026-07-01T14:30:00-05:00",
"summary": "Annual HVAC tune-up.",
"site": {
"addressLine1": "123 Main Street",
"city": "Nashville",
"state": "TN",
"postalCode": "37201"
}
}'Ready to integrate?
Foundation is in early access. Tell us about your platform and we'll get you set up with credentials and sandbox access.
Request API Access