StrataWorx has a REST API, signed webhooks and an MCP server for AI assistants. Use them to connect StrataWorx to your strata software, automation tools such as Zapier, Make or Power Automate, or assistants such as Claude.
Authentication
Create an API key in StrataWorx under Integrations. Keys start with ll_live_ and are shown once, so store them somewhere safe. Send the key as a bearer token on every request:
Authorization: Bearer ll_live_YOUR_KEY
read Every key can read emails, work orders, lots and schemes.
write Keys created with write access can also send replies, create and update work orders, and update the strata roll.
Status
Meaning
401
Missing, invalid or revoked API key
403
The key doesn't have the scope this endpoint needs
402
The firm's subscription or trial is inactive
429
Over the limit of 120 requests per minute per key
404
The email or work order wasn't found in your account
400
Invalid input. The message says what to fix.
Errors come back as { "error": { "message": "..." } }. Keys only ever see their own firm's data.
REST API
All endpoints are under https://main.dtu6scqlpzz7e.amplifyapp.com/api/v1, accept and return JSON, and support limit and offset on lists.
GET
/api/v1/messages
read scope
List emails, newest first.
Query parameter
Description
status
open (awaiting a reply), sent, dismissed or triage_failed
category
repairs, levies, bylaws, records, bookings, insurance or other
urgency
urgent, soon or routine
scheme
Strata plan number, e.g. SP 70412. Returns an empty list if the scheme isn't found.
since
ISO 8601 date or time. Only emails received on or after it.
Create a work order. Only title is required. Creating a work order doesn't contact anyone. due_date must be YYYY-MM-DD, and message_id must be an email in your account.
Create or update 1 to 1,000 lots in one call, matched on scheme and lot number. New schemes are created as needed. Rows without a scheme or lot_number are skipped. Your billed lot count updates to match.
Add a webhook under Integrations with a public https URL and choose the events it receives. StrataWorx sends a POST with a JSON body for each event. You'll get a signing secret when you create it.
Event
Sent when
message.received
A new email arrives and has been sorted
message.sent
A reply is sent from StrataWorx, the API or an AI assistant
message.dismissed
An email is dismissed without a reply
job.created
A work order is created
job.updated
A work order's status changes
lot.updated
A lot's tenant or managing agent is changed on the strata roll
Payload
Every delivery has the same shape. id is the delivery ID, which stays the same on retries, so you can use it to skip duplicates.
{
"id": 1842,
"event": "job.created",
"created_at": "2026-10-15T21:04:12.000Z",
"data": {
"id": "6f1c...",
"title": "Leak from Lot 18 into Lot 14 bathroom",
"status": "open",
"scheme": "SP 81234",
"lot": "14",
...
}
}
Verifying the signature
Each request includes a Lotline-Event header and a Lotline-Signature header:
Lotline-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${body}` using your signing secret>
Compute the HMAC over the raw request body, before any JSON parsing, and compare in constant time. Reject old timestamps to stop replays.
import crypto from "node:crypto";
// secret: the signing secret shown when you created the webhook
// rawBody: the request body exactly as received, as a string
export function verifyLotline(rawBody, header, secret, toleranceSeconds = 300) {
const parts = Object.fromEntries(
header.split(",").map((p) => p.split("=", 2))
);
const t = Number(parts.t);
if (!t || !parts.v1) return false;
if (Math.abs(Date.now() / 1000 - t) > toleranceSeconds) return false;
const expected = crypto
.createHmac("sha256", secret)
.update(`${t}.${rawBody}`)
.digest("hex");
const a = Buffer.from(expected, "hex");
const b = Buffer.from(parts.v1, "hex");
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
// Example with Express:
// app.post("/lotline", express.text({ type: "application/json" }), (req, res) => {
// if (!verifyLotline(req.body, req.get("Lotline-Signature"), process.env.LOTLINE_SECRET)) {
// return res.sendStatus(401);
// }
// const event = JSON.parse(req.body);
// res.sendStatus(200);
// });
Retries
Reply with any 2xx status within 10 seconds. Redirects are not followed. If delivery fails, StrataWorx retries after 1, 5, 30, 120 and 720 minutes, then stops.
MCP: use StrataWorx inside Claude and other AI assistants
Premium
StrataWorx runs a Model Context Protocol (MCP) server, so assistants such as Claude can search your inbox, work orders, strata roll, documents, arrears, compliance items and meetings, and act on them. It's part of the Premium plan and the free trial.
Endpoint
Use it when
https://main.dtu6scqlpzz7e.amplifyapp.com/api/mcp
Your client can send an Authorization: Bearer header
Your client only accepts a URL. Treat this URL like a password.
read Read-only keys see the lookup tools, such as search_emails, list_jobs, list_lots, search_documents, list_arrears and list_compliance.
write Write keys also see action tools, such as create_job, send_email_reply, request_quotes and send_arrears_reminder. Tools that email people outside your firm send real emails, and the assistant is told to confirm with you first.
Tip: start with a read-only key. Create a separate write key once you're comfortable with how the assistant works.
Add StrataWorx to Claude
In StrataWorx, open Integrations and create an API key. Copy it.
In Claude, open Settings > Connectors and choose Add custom connector.
Give it the name StrataWorx and paste the URL with your key in it:
Any client that supports MCP over Streamable HTTP can connect. StrataWorx answers POST requests with JSON responses and doesn't need a session. A 402 response means the firm isn't on Premium or its subscription is inactive.
Agent-to-agent (A2A)
StrataWorx's assistant speaks the A2A protocol (JSON-RPC, version 0.3), so other AI agents such as Microsoft Copilot, Salesforce Agentforce, SAP Joule, Google agents or your own can work with a firm's StrataWorx data. Premium only.
Agent card: https://main.dtu6scqlpzz7e.amplifyapp.com/.well-known/agent-card.json. Endpoint: https://main.dtu6scqlpzz7e.amplifyapp.com/api/a2a with Authorization: Bearer <API key>. Read-only keys can only look things up; write keys can also raise work orders and start StrataWorx's agents (whose emails still wait for approval).
The reply is a completed task with the answer as a text artifact. Send the returned contextId with your next message to continue the conversation.
Data feed for BI tools
Pull data into Power BI, Excel, Tableau, Microsoft Fabric, Databricks or BigQuery with a read key. Datasets: messages, work orders, schemes, lots, compliance, arrears, usage. Add format=csv for CSV and since=YYYY-MM-DD to limit by date (up to 50,000 rows per call).
Power BI: Get data › Web › Advanced. URL parts: the address above. HTTP request header: Authorization = Bearer <key>.
SCIM 2.0 provisioning
Base URL https://main.dtu6scqlpzz7e.amplifyapp.com/scim/v2, bearer token from Business systems › Identity. Supports Users (list with userName, externalId or emails.value eq filters, create, get, PUT, PATCH, DELETE) and three fixed Groups for roles: admin (StrataWorx Admins), manager (StrataWorx Managers) and viewer (StrataWorx Read-only). Setting active to false or deleting a user removes their access.
Business-system connectors
Firms connect SAP S/4HANA (maintenance notifications via API_MAINTNOTIFICATION), SAP BTP, AWS, Azure and Google Cloud (see below), Salesforce (Cases), ServiceNow (incidents or any table), Dynamics 365 / Dataverse (any table), Snowflake (nightly MERGE into VARIANT tables through the SQL API with key-pair authentication), Microsoft Teams and Slack, and any other REST API with a JSON template. Work orders created or updated in StrataWorx are sent within seconds; failures retry for up to 14 hours and are listed with each connector.
Cloud platform connectors
Events (job.created, job.updated, message.received) are published as CloudEvents 1.0 with type au.lotline.<event> to SAP BTP Event Mesh (topic <prefix>/job/created, QoS 1), SAP BTP Integration Suite (HTTPS iFlow, OAuth client credentials), AWS EventBridge (DetailType = event, Detail = record), Amazon SQS (FIFO supported), Azure Event Grid (CloudEvents or Event Grid schema), Azure Service Bus (SAS, Label = event) and Google Cloud Pub/Sub (attribute event). AWS requests use Signature V4, Google uses service-account JWTs, Azure uses SAS.
Nightly exports to Amazon S3, Azure Blob Storage / Data Lake and Google Cloud Storage write <folder>/<dataset>/<yyyy-mm-dd>.jsonl and latest.jsonl for messages, work orders, schemes, lots, compliance and arrears.
Data imports and signed push
Firms pull data from SAP (S/4HANA, Business One, ByDesign, SuccessFactors, Datasphere), Oracle Fusion, NetSuite (SuiteQL, token-based auth), Dynamics 365 (Business Central, Finance & Operations, Dataverse), Workday (RaaS), Infor, Epicor, IFS, Acumatica, Sage Intacct, Odoo, Xero, MYOB, Salesforce (SOQL), ServiceNow, Snowflake, BigQuery, files in S3 / Azure Blob / Cloud Storage, and any OData or REST API, into schemes, lots, trades, compliance, arrears, work orders or work order status.
To push instead, create an import with the source "Push from your systems" and send:
POST https://main.dtu6scqlpzz7e.amplifyapp.com/api/imports/<import id>
Content-Type: application/json
Lotline-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" with the signing secret>
{"rows": [{"SupplierId": "V-1001", "Name": "Harbour Plumbing", "Email": "work orders@harbourplumbing.com.au"}]}
Up to 5,000 rows or 5 MB per request. Signatures older than 5 minutes, and repeated requests, are refused (401 / 409). The reply lists rows read, saved and skipped. A sample script is in starter-kit/push/push.mjs.
Extensions
An extension is your own service that adds buttons to emails and work orders, AI tools for the StrataWorx assistant, and event handlers. Create one under Extensions to get a client ID, client secret and signing secret.
Reply to manifest with {"events": [...], "actions": [{"id", "label", "on": "message" | "work order"}], "tools": [{"name", "description", "input_schema", "kind": "read" | "action"}]}; to an action with {"message", "open_url"}; to a tool with {"content"}. Read tools run when the assistant needs them; action tools are confirmed by a person first.
Use the token on the REST API, MCP and A2A. It carries only the scopes the admin ticked, and pausing the extension or rotating its secret revokes it at once. A one-file starter kit with no dependencies is in starter-kit/extension.
Questions about the API? Email your account contact, or see the StrataWorx home page.