adaptlive
← API reference

Entity reference

The headline entities exposed by /api/v1. The full machine-readable shape — including every additional canonical model reachable via the dynamic /{entity} route — lives at /openapi.json. Hit GET /v1/schema at runtime for the live registry that your workspace has access to.

WorkRecord

/v1/work-records

A unit of work your business performs — job, appointment, case, matter, delivery, ticket. Polymorphic via the canonical kind enum; the per-org WorkTypeDefinition controls which kinds you can write.

FieldTypeDescription
iduuidStable identifier.
organizationIduuidOwning org.
canonicalKindenum`job` | `work_order` | `matter` | `case` | `appointment_encounter` | `permit_record` | `repair_order` | `move` | `claim` | `engagement` | `arrangement` | `ticket_generic` | `service_request`
titlestringHuman-readable title.
descriptionstring?Free-form details.
recordStateenum`draft` | `active` | `blocked` | `completed` | `canceled`
statusstringWorkflow status (free-text, per org).
stagestringStage in the work lifecycle (free-text, per org).
priorityenum`low` | `normal` | `high` | `urgent`
sourceenum`call` | `sms` | `voicemail` | `manual` | `api` | `import`
customerIduuidLinked customer.
primaryPersonIduuid?Primary contact.
primaryLocationIduuid?Service location.
sourceCallSessionIduuid?Call that produced this record, if any.
structuredFieldsJsonobjectOrg-configured fields for this kind.
scheduledStartdatetime?
scheduledEnddatetime?
completedAtdatetime?
createdAtdatetime
updatedAtdatetime

Example response

{
  "id": "5d8f8e92-3c41-4d2f-9c1f-1c4ab9b5f0a1",
  "organizationId": "0c4ab9b5-…",
  "canonicalKind": "job",
  "title": "AC unit not cooling",
  "recordState": "active",
  "status": "scheduled",
  "stage": "dispatch",
  "priority": "high",
  "source": "call",
  "customerId": "6f3c…",
  "primaryPersonId": "8a91…",
  "structuredFieldsJson": { "equipment": "Carrier 24ACC6", "issue_type": "not_cooling" },
  "scheduledStart": "2026-05-22T14:00:00Z",
  "scheduledEnd": "2026-05-22T16:00:00Z",
  "completedAt": null,
  "createdAt": "2026-05-21T10:30:00Z",
  "updatedAt": "2026-05-21T10:35:00Z"
}

Person

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

A person directory record. The upsert endpoint deduplicates on phone or email — re-call with the same `primaryPhone` to update rather than create a duplicate.

FieldTypeDescription
iduuid
organizationIduuid
displayNamestringWhat you'd show in UI.
legalNamestring?Full legal name when known.
primaryEmailstring?
primaryPhonestring?E.164 (`+15551234567`).
createdAtdatetime
updatedAtdatetime

Example response

{
  "id": "8a91…",
  "organizationId": "0c4ab9b5-…",
  "displayName": "Jane Smith",
  "legalName": "Jane M. Smith",
  "primaryEmail": "jane@example.com",
  "primaryPhone": "+15125551234",
  "createdAt": "2026-04-01T09:00:00Z",
  "updatedAt": "2026-05-15T12:30:00Z"
}

Sms

/v1/sms

Inbound and outbound text messages. GET lists with cursor pagination; POST sends new outbound. Used by the Zapier `sms_received` / `sms_sent` / `send_sms` triggers + action.

FieldTypeDescription
iduuid
organizationIduuid
directionenum`inbound` | `outbound`
fromstringE.164.
tostringE.164.
bodystring
threadIduuid?Conversation thread, if any.
sentAtdatetime
deliveredAtdatetime?Carrier delivery receipt.

Example response

{
  "id": "3a4f…",
  "organizationId": "0c4ab9b5-…",
  "direction": "inbound",
  "from": "+15125551234",
  "to": "+15125550100",
  "body": "Sounds good, see you at 2pm",
  "threadId": "c01f…",
  "sentAt": "2026-05-21T15:45:00Z",
  "deliveredAt": "2026-05-21T15:45:01Z"
}

Voicemail

/v1/voicemails

Caller voicemails with transcripts. Polled by the Zapier `voicemail_received` trigger; also fires the `voicemail.received` webhook event.

FieldTypeDescription
iduuid
organizationIduuid
callSessionIduuid?Originating call, if any.
callerNumberstringE.164.
transcriptstring?Best-effort transcription.
recordingUrlstring?Signed URL (TTL ~5min).
createdAtdatetime

Example response

{
  "id": "vm_2c4e…",
  "organizationId": "0c4ab9b5-…",
  "callSessionId": "cs_99fa…",
  "callerNumber": "+15125559876",
  "transcript": "Hi this is Bob, please call me back about the quote.",
  "recordingUrl": "https://media.adaptlive.app/…?sig=…",
  "createdAt": "2026-05-21T11:20:00Z"
}

Draft

/v1/drafts

Post-call draft of a WorkRecord pending human approval. Filter `?status=approved` for the Zapier `draft_approved` polling trigger.

FieldTypeDescription
iduuid
organizationIduuid
callSessionIduuidCall that produced this draft.
statusenum`draft` | `pending_review` | `approved` | `rejected` | `synced`
workRecordIduuid?Created on approval.
payloadobjectProposed WorkRecord fields.
approvedByuuid?User who approved.
approvedAtdatetime?
createdAtdatetime
updatedAtdatetime

Example response

{
  "id": "dft_8e2a…",
  "organizationId": "0c4ab9b5-…",
  "callSessionId": "cs_99fa…",
  "status": "approved",
  "workRecordId": "5d8f8e92-…",
  "payload": { "title": "AC repair", "canonicalKind": "job", "priority": "high" },
  "approvedBy": "usr_4b8c…",
  "approvedAt": "2026-05-21T10:45:00Z",
  "createdAt": "2026-05-21T10:30:00Z",
  "updatedAt": "2026-05-21T10:45:00Z"
}

Fact

/v1/facts/{id}/confirm, /promote, /reject

A conversational fact captured during a call, attached to a Person, Company, Customer, or WorkRecord. Lifecycle: `proposed` → `confirmed` → (optionally) `promoted` to a broader subject. Definitions live at `/v1/fact-definitions`.

FieldTypeDescription
iduuid
organizationIduuid
subjectTypeenum`person` | `company` | `customer` | `work_record`
subjectIduuid
keystringFact definition key, e.g. `gate_code`, `preferred_language`.
valueanyType per the FactDefinition.
statusenum`proposed` | `confirmed` | `rejected` | `promoted` | `superseded`
confidencenumber?0–1, when AI-extracted.
sourceCallSessionIduuid?
createdAtdatetime

Example response

{
  "id": "f_a13c…",
  "organizationId": "0c4ab9b5-…",
  "subjectType": "person",
  "subjectId": "8a91…",
  "key": "gate_code",
  "value": "#4421",
  "status": "confirmed",
  "confidence": 0.92,
  "sourceCallSessionId": "cs_99fa…",
  "createdAt": "2026-05-21T10:32:00Z"
}

More entities

Additional canonical models — phone numbers, signals, webhook subscriptions, fact definitions, integration connections, external refs, field-history-entries — are reachable via the dynamic /v1/{entity} route. Slugs come from GET /v1/schema; the response envelope is the same as for the headline entities above.

Webhooks →Error handling →

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