Quickstart
Five minutes from no integration to your first webhook. Mint an API key, call the REST API, and subscribe to call + SMS + work-record events.
Prerequisites
- Approved partner access. Sign into the developer portal; if you don't have access yet, apply to the developer track.
- A tool for HTTP requests — curl, Postman, or your language's standard client.
Mint an API key
In the developer portal go to /portal/api-keys and click Create key. Pick a scope:
- READ — list / get endpoints only. Safe for analytics jobs and read-only integrations.
- WRITE — adds the create / update / upsert endpoints. The default for most apps.
- ADMIN — adds webhook subscription CRUD and other org-administration endpoints.
Keys are shown once at mint time. Format: ak_live_<32-char base32> for production or ak_test_… for the sandbox.
Important: Copy the key right away — we store only a SHA-256 hash, so it cannot be recovered. If you lose it, revoke + mint a new one.
# Store the key as an environment variable
export ADAPT_API_KEY="ak_live_..."Make your first request
Hit GET /v1/schema to confirm the key works and to see every canonical entity exposed to your workspace.
curl https://adaptlive.app/api/v1/schema \
-H "Authorization: Bearer $ADAPT_API_KEY"Response shape — every API response follows the same envelope:
{
"data": {
"entities": [
{ "slug": "work-records", "modelName": "WorkRecord", "writable": true, "scalarFields": [ ... ] },
{ "slug": "field-values", "modelName": "FieldValue", "writable": true, "scalarFields": [ ... ] },
...
]
},
"meta": { "requestId": "f4c0…-…-…-…" }
}Now try a list endpoint — work records (jobs, appointments, cases, matters, deliveries):
curl "https://adaptlive.app/api/v1/work-records?limit=10" \
-H "Authorization: Bearer $ADAPT_API_KEY"List responses add a pagination block — pass ?cursor=… with the value from pagination.nextCursor to walk the page.
Subscribe to webhooks
Webhooks push events to your endpoint over HTTPS, signed with an HMAC-SHA256 secret. Send eventTypes: [] to subscribe to every event type, or list specific ones from the event catalog.
curl -X POST https://adaptlive.app/api/v1/webhooks \
-H "Authorization: Bearer $ADAPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.example.com/webhooks/adaptlive",
"eventTypes": ["call.ended", "sms.received", "work_record.created"]
}'The response includes the full signing secret — store it now, it is shown only once:
{
"data": {
"id": "5d8f…-…",
"url": "https://your-app.example.com/webhooks/adaptlive",
"eventTypes": ["call.ended", "sms.received", "work_record.created"],
"status": "active",
"signingSecret": "whsec_<48 hex chars>"
},
"meta": { "requestId": "…" }
}Verify incoming deliveries against the secret — adaptlive sends the signature in the X-AdaptLive-Signature header using the same t=<timestamp>,v1=<hex> shape Stripe / Linear / Vercel use. The Webhooks reference has copy-paste verifier code in Node, Python, Ruby, and Go.
Explore the rest of the API
The full machine-readable contract lives at /openapi.json — feed it into openapi-typescript, openapi-fetch, Postman, Insomnia, or Stoplight to generate a typed client in one command. The dynamic equivalent at /api/v1/openapi.json always reflects the deployed shape.
Where to next
API reference
Every endpoint, parameter, and response shape — generated from the OpenAPI spec.
View referenceWebhooks
Event catalog, signing format, replay, and copy-paste verifiers for four languages.
Learn moreZapier app
14 triggers and 7 actions / searches over the REST API — no code needed.
Explore ZapierSDKs & clients
Use the OpenAPI spec with the standard ecosystem tools — typed clients in TypeScript, Python, Go, and more.
Pick a clientStuck?
Email developers@adaptlive.app with your request ID (every response includes one in meta.requestId) and we'll dig in.
