adaptlive
← Documentation

REST API Reference

Full read/write access to the adaptlive canonical schema. Every entity follows the same five-verb pattern with consistent authentication, pagination, and error handling.

Base URL

https://adaptlive.app/api/v1

Authentication

Every request requires a Bearer token in the Authorization header. API keys are minted from the developer portal at /portal/api-keys.

curl https://adaptlive.app/api/v1/work-records \
  -H "Authorization: Bearer ak_live_XXXXXXXXXXXXXXXXXXXXXXXXXX"

API Key Scopes

  • READ — List and retrieve records. Cannot create or modify.
  • WRITE — Full CRUD access to records. Cannot manage organization settings.
  • ADMIN — Full access including organization management. Owner only.

Request Format

All request and response bodies are JSON. Set Content-Type: application/json on POST and PATCH requests.

Idempotency

For POST, PATCH, and PUT requests, include an Idempotency-Key header (UUID format). We store the response for 24 hours and replay it verbatim on duplicate keys—safe to retry through proxies and job runners.

POST /v1/work-records
Authorization: Bearer ak_live_...
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
Content-Type: application/json

{
  "kind": "JOB",
  "title": "Emergency water leak repair",
  "customerId": "cust_abc123"
}

Reusing the same key with a different request body returns 422 Unprocessable Entity with code idempotency_conflict.

Pagination

List endpoints use cursor-based pagination. Pass limit (default 50, max 100) and cursor (from previous response) as query parameters.

GET /v1/work-records?limit=25&cursor=eyJpZCI6ImNreDEyMyJ9

{
  "data": [...],
  "pagination": {
    "limit": 25,
    "nextCursor": "eyJpZCI6ImNreDQ1NiJ9"
  }
}

When nextCursor is null, you've reached the end of the result set.

Endpoints

Every canonical entity exposes the same REST surface. Methods not listed are not supported for that entity.

Work records

/v1/work-records

Jobs, appointments, cases, matters, deliveries — the unit of work your business performs. `kind` filter for the Zapier kind-specific triggers.

GETPOST

Work record search

/v1/work-records/search

Free-text + filter search. Powers the Zapier `find_work_record` search action.

GET

People

/v1/people/by-phone, /v1/people/upsert

Lookup by phone (Zapier search) + idempotent upsert by primary phone / email (Zapier create-or-update action).

GETPOST

Phone numbers

/v1/phone-numbers

Numbers owned by your org. Backs the Zapier `Send SMS` action's From dropdown.

GET

SMS

/v1/sms, /v1/messages

Polling endpoint for `sms_received` / `sms_sent` triggers and the headline `Send SMS` create action.

GETPOST

Voicemails

/v1/voicemails

Caller voicemails with transcripts.

GET

Drafts

/v1/drafts

Post-call drafts pending human approval. `?status=approved` drives the Zapier `draft_approved` trigger.

GET

Facts

/v1/fact-definitions, /v1/facts/{id}/confirm/promote/reject

List your org's fact definitions + confirm / promote / reject proposed facts captured during calls.

GETPOST

Signals

/v1/signals

High-confidence event signals — complaints, upsell opportunities, escalations.

GET

Webhooks

/v1/webhooks, /v1/webhooks/{id}, /v1/webhooks/{id}/deliveries/...

Subscription CRUD + delivery introspection + replay. Requires ADMIN scope.

GETPOSTPATCHDELETE

Call surface

/v1/calls/{id}/surface

Stable read model combining the CallSession, drafted WorkRecord, captured facts, transcript pointer, and surface events.

GET

Generic schema CRUD

/v1/{entity}, /v1/{entity}/{id}

Long-tail entities — parties, integration-connections, external-refs, field-values, field-history-entries, etc. Slugs from GET /v1/schema.

GETPOSTPATCHPUT

Response Format

All responses include a request ID for debugging and support:

// Success (200, 201)
{
  "requestId": "req_abc123",
  "data": { ... }
}

// Error (4xx, 5xx)
{
  "requestId": "req_abc123",
  "error": {
    "code": "not_found",
    "message": "Party not found."
  }
}

Rate limits

adaptlive throttles abusive callers. Specific limits aren't advertised today and may be tightened without notice; if you expect sustained high volume, email developers@adaptlive.app before launch so we can carve out headroom.

When throttled you'll get 429 Too Many Requests with error.code = "rate_limited" plus a Retry-After header. See Authentication → Rate limits for the response shape and X-RateLimit-* header details.

Interactive API Reference

Explore every endpoint, schema, and request/response shape in an interactive viewer generated directly from our OpenAPI 3.1 specification.

Entity Reference →Webhooks →

We use essential cookies to keep the app secure. Optional cookies help us improve reliability and measure campaigns. Cookie policy