Assistable Direct API

Everything a user can do in the dashboard, a customer can do with an API key.

https://directapi.assistable.ai/direct/v1

Generated from the route schemas in apps/api/src/routes/direct/v1. Machine-readable version: docs/openapi-v2.json.

Authentication

Every request needs an API key. Both headers are accepted:

Authorization: Bearer sk_...
X-API-Key: sk_...

A key acts as the member who minted it. Its effective capabilities are the mint-time snapshot intersected with that member's current capabilities, so demoting or suspending the minter immediately narrows every key they created. A key is pinned to one environment and an X-Environment header cannot move it.

Capabilities are the scope vocabulary — there is no second permission system. Each endpoint below states the capability it requires. A key without it gets 403 INSUFFICIENT_SCOPE.

Envelope

{ "data": { ... } }                                     // single resource
{ "data": [ ... ], "hasMore": true, "nextCursor": "…" }  // collection
{ "success": true }                                      // delete
{ "error": { "code": "INSUFFICIENT_SCOPE", "message": "…" } }

POST returns 201, everything else 200. PATCH is used for partial updates; there is no PUT.

Pagination

Collections are cursor-paginated.

  • limit — default 20, clamped to 100. A non-integer or non-positive limit is a 400 rather than a clamp, because it means the caller is confused rather than greedy.
  • cursor — the id of the last item on the previous page.
  • Order is always [createdAt desc, id desc]. The id tiebreaker is what makes the cursor stable.
  • nextCursor is omitted, not null, when there is no next page. Test hasMore.

Idempotency

Endpoints marked Idempotency-Key accept that header. Send an opaque client-generated value:

Idempotency-Key: 9f2c1e7a-4d3b-4a1e-9c88-2f0b6a5d7e10
  • A replay of the same key with the same body within 24 hours returns the original response, with Idempotent-Replay: true, instead of acting twice.
  • The same key with a different body is 409 IDEMPOTENCY_KEY_REUSED.
  • Only successful responses are stored. A failed request can be retried with the same key.
  • Keys are scoped to the account the API key belongs to.

Rate limits

Limits are per API key, in a fixed 60-second window. Every response — not only a 429 — carries:

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 597
X-RateLimit-Reset: 1767225600

A 429 also carries Retry-After. The limiter fails closed: if its backing store is unreachable the API answers 503 SERVICE_UNAVAILABLE and does not process the request, rather than silently serving unlimited traffic.

Errors

Every error body carries a machine-readable code. Match on the code, not the message.

{ "error": { "code": "VALIDATION_ERROR", "message": "Invalid request data", "details": { … } } }
StatusCodeMeaning
400VALIDATION_ERRORThe body or query failed schema validation.
401UNAUTHORIZEDMissing, malformed, revoked or expired API key.
403INSUFFICIENT_SCOPEThe key lacks the capability this operation needs.
404NOT_FOUNDNo such resource in this account and environment.
409IDEMPOTENCY_KEY_REUSEDIdempotency-Key reused with a different body, or a state conflict.
429RATE_LIMITEDPer-key rate limit exceeded. Retry-After is set.
503SERVICE_UNAVAILABLEThe rate limiter could not be reached, so the request was not processed.
409CONFLICTThe request conflicts with current state.
500INTERNAL_ERRORUnhandled server error. Safe to retry.

Endpoints

a2p

GET/a2p/assignments

a2p.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/assignments?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/a2p/assignments

a2p.submitIdempotency-Key201 {data}

Request body

FieldTypeNotes
campaignIdstring required
phoneNumberstring required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/a2p/assignments" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "campaignId": "string",
  "phoneNumber": "string"
}'
DELETE/a2p/assignments/{id}

a2p.submit200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/a2p/assignments/{id}" \
  -H "Authorization: Bearer sk_..."
GET/a2p/brand

a2p.view200 {data}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/brand" \
  -H "Authorization: Bearer sk_..."
POST/a2p/brand

a2p.submitIdempotency-Key201 {data}

Request body

FieldTypeNotes
entityType"PRIVATE_PROFIT" | "PUBLIC_PROFIT" | "NON_PROFIT" | "GOVERNMENT" | "SOLE_PROPRIETOR" required
displayNamestring required
companyNamestring optional
einstring optional
emailstring required
phonestring optional
streetstring optional
citystring optional
statestring optional
postalCodestring optional
countrystring optional default "US"
websitestring optional
verticalstring optional
stockSymbolstring optional
stockExchangestring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/a2p/brand" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "entityType": "PRIVATE_PROFIT",
  "displayName": "string",
  "email": "string"
}'
PATCH/a2p/brand

a2p.submit200 {data}

Request body

FieldTypeNotes
action"refresh" | "resubmit" optional default "refresh"

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/a2p/brand" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "action": "refresh"
}'
GET/a2p/campaigns

a2p.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/campaigns?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/a2p/campaigns

a2p.submitIdempotency-Key201 {data}

Request body

FieldTypeNotes
usecasestring required
subUsecasesstring[] optional
descriptionstring required
sampleMessagesstring[] required
messageFlowstring required
optinMessagestring optional
optoutMessagestring optional
helpMessagestring optional
optinKeywordsstring optional
optoutKeywordsstring optional
helpKeywordsstring optional
embeddedLinkboolean optional default false
embeddedPhoneboolean optional default false
ageGatedboolean optional default false
directLendingboolean optional default false
privacyPolicyLinkstring optional
termsAndConditionsLinkstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/a2p/campaigns" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "usecase": "string",
  "description": "string",
  "sampleMessages": [
    "string"
  ],
  "messageFlow": "string"
}'
GET/a2p/status

a2p.view200 {data}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/status" \
  -H "Authorization: Bearer sk_..."

analytics

GET/analytics/assistants

analytics.view200 {data}

Query parameters

FieldTypeNotes
dateFromstring optional
dateTostring optional
assistantIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/analytics/assistants" \
  -H "Authorization: Bearer sk_..."
GET/analytics/calls

analytics.view200 {data}

Query parameters

FieldTypeNotes
dateFromstring optional
dateTostring optional
assistantIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/analytics/calls" \
  -H "Authorization: Bearer sk_..."
GET/analytics/chats

analytics.view200 {data}

Query parameters

FieldTypeNotes
dateFromstring optional
dateTostring optional
assistantIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/analytics/chats" \
  -H "Authorization: Bearer sk_..."
GET/analytics/costs

analytics.view200 {data}

Query parameters

FieldTypeNotes
dateFromstring optional
dateTostring optional
assistantIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/analytics/costs" \
  -H "Authorization: Bearer sk_..."
GET/analytics/overview

analytics.view200 {data}

Query parameters

FieldTypeNotes
dateFromstring optional
dateTostring optional
assistantIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/analytics/overview" \
  -H "Authorization: Bearer sk_..."

api-keys

GET/api-keys

api_keys.managepaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/api-keys?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/api-keys

api_keys.manageIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
scope"read_only" | "read_write" | "admin" optional default "read_write"

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/api-keys" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
DELETE/api-keys/{id}

api_keys.manage200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/api-keys/{id}" \
  -H "Authorization: Bearer sk_..."

appointments

GET/appointments

calendar.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
fromstring optional
tostring optional
calendarIdstring optional
assistantIdstring optional
contactIdstring optional
statusstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/appointments?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/appointments

calendar.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
calendarIdstring required
contactIdstring required
assistantIdstring optional
titlestring optional
startTimestring required
endTimestring optional
timezonestring optional
locationstring optional
notesstring optional
bookedViastring optional
statusstring optional
metadataobject optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/appointments" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "calendarId": "string",
  "contactId": "string",
  "startTime": "string"
}'
GET/appointments/{id}

calendar.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/appointments/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/appointments/{id}

calendar.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
startTimestring optional
endTimestring optional
reasonstring optional
bystring optional
titlestring optional
notesstring optional
locationstring optional
statusstring optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/appointments/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "startTime": "string",
  "endTime": "string",
  "reason": "string"
}'
POST/appointments/{id}/cancel

calendar.writeIdempotency-Key200 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/appointments/{id}/cancel" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"
POST/appointments/{id}/retry-backfill

calendar.writeIdempotency-Key200 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/appointments/{id}/retry-backfill" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"

assistants

GET/assistants

flows.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
statusstring optional
folderIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/assistants?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/assistants

flows.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
modelstring optional
folderIdstring optional
statusstring optional
systemPromptstring optional
archetype"receptionist" | "customer_support" | "sales" optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/assistants" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'

audit-log

GET/audit-log

workspace.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
actionstring optional
source"dashboard" | "copilot" | "api" | "system" optional
fromstring optional
tostring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/audit-log?limit=20" \
  -H "Authorization: Bearer sk_..."

billing

GET/billing/balance

billing.view200 {data}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/billing/balance" \
  -H "Authorization: Bearer sk_..."
GET/billing/rates

billing.view200 {data}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/billing/rates" \
  -H "Authorization: Bearer sk_..."
GET/billing/transactions

billing.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
typestring optional
direction"credit" | "debit" optional
minnumber optional
maxnumber optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/billing/transactions?limit=20" \
  -H "Authorization: Bearer sk_..."

blacklist

GET/blacklist

contacts.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
targetType"PHONE" | "EMAIL" | "SOCIAL" | "IP" | "COUNTRY" optional
direction"INBOUND" | "OUTBOUND" | "BOTH" optional
searchstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/blacklist?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/blacklist

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
targetType"PHONE" | "EMAIL" | "SOCIAL" | "IP" | "COUNTRY" required
matchType"EXACT" | "PATTERN" optional default "EXACT"
valuestring required
direction"INBOUND" | "OUTBOUND" | "BOTH" optional default "BOTH"
channel"ALL" | "SMS" | "EMAIL" | "VOICE" | "WHATSAPP" | "FACEBOOK" | "INSTAGRAM" | "WEBCHAT" optional default "ALL"
reasonstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/blacklist" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "targetType": "PHONE",
  "value": "string"
}'
PATCH/blacklist/{id}

contacts.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
isActiveboolean optional
reasonstring optional
direction"INBOUND" | "OUTBOUND" | "BOTH" optional
channel"ALL" | "SMS" | "EMAIL" | "VOICE" | "WHATSAPP" | "FACEBOOK" | "INSTAGRAM" | "WEBCHAT" optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/blacklist/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "isActive": true,
  "reason": "string",
  "direction": "INBOUND"
}'
DELETE/blacklist/{id}

contacts.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/blacklist/{id}" \
  -H "Authorization: Bearer sk_..."
POST/blacklist/bulk

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
targetType"PHONE" | "EMAIL" | "SOCIAL" | "IP" | "COUNTRY" required
matchType"EXACT" | "PATTERN" optional default "EXACT"
direction"INBOUND" | "OUTBOUND" | "BOTH" optional default "BOTH"
channel"ALL" | "SMS" | "EMAIL" | "VOICE" | "WHATSAPP" | "FACEBOOK" | "INSTAGRAM" | "WEBCHAT" optional default "ALL"
reasonstring optional
valuesstring[] required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/blacklist/bulk" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "targetType": "PHONE",
  "values": [
    "string"
  ]
}'

business-schedules

GET/business-schedules

phone_systems.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/business-schedules?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/business-schedules

phone_systems.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
timezonestring optional
weekobject optional
holidaysobject[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/business-schedules" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
PATCH/business-schedules/{id}

phone_systems.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
timezonestring optional
weekobject optional
holidaysobject[] optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/business-schedules/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "timezone": "string",
  "week": {
    "sun": [
      {
        "start": "string",
        "end": "string"
      }
    ],
    "mon": [
      {
        "start": "string",
        "end": "string"
      }
    ],
    "tue": [
      {
        "start": "string",
        "end": "string"
      }
    ]
  }
}'
DELETE/business-schedules/{id}

phone_systems.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/business-schedules/{id}" \
  -H "Authorization: Bearer sk_..."

calendars

GET/calendars

calendar.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
includeArchived"true" | "false" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/calendars?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/calendars

calendar.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
descriptionstring optional
colorstring optional
timezonestring required
workingHoursobject required
slotDurationMinutesnumber optional
slotIntervalMinutesnumber optional
bufferBeforeMinutesnumber optional
bufferAfterMinutesnumber optional
minLeadMinutesnumber optional
bookingHorizonDaysnumber optional
maxPerSlotnumber optional
defaultLocationstring optional
integrationProvider"ghl" | "google" | "outlook" | "calcom" | "calendly" optional
integrationIdstring optional
externalRefsobject optional
isDefaultboolean optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/calendars" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "timezone": "string",
  "workingHours": {}
}'
GET/calendars/{id}

calendar.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/calendars/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/calendars/{id}

calendar.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
descriptionstring optional
colorstring optional
timezonestring optional
workingHoursobject optional
slotDurationMinutesnumber optional
slotIntervalMinutesnumber optional
bufferBeforeMinutesnumber optional
bufferAfterMinutesnumber optional
minLeadMinutesnumber optional
bookingHorizonDaysnumber optional
maxPerSlotnumber optional
defaultLocationstring optional
integrationProvider"ghl" | "google" | "outlook" | "calcom" | "calendly" optional
integrationIdstring optional
externalRefsobject optional
isDefaultboolean optional
isArchivedboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/calendars/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "description": "string",
  "color": "string"
}'
DELETE/calendars/{id}

calendar.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/calendars/{id}" \
  -H "Authorization: Bearer sk_..."
GET/calendars/{id}/availability

calendar.view200 {data}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
fromstring required
tostring required
slotDurationMinutesnumber optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/calendars/{id}/availability?from=string&to=string" \
  -H "Authorization: Bearer sk_..."
GET/calendars/{id}/blackouts

calendar.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
fromstring optional
tostring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/calendars/{id}/blackouts" \
  -H "Authorization: Bearer sk_..."
POST/calendars/{id}/blackouts

calendar.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
startTimestring required
endTimestring required
reasonstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/calendars/{id}/blackouts" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "startTime": "string",
  "endTime": "string"
}'
DELETE/calendars/{id}/blackouts/{blackoutId}

calendar.write200 {success}

Path parameters

idstringrequired
blackoutIdstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/calendars/{id}/blackouts/{blackoutId}" \
  -H "Authorization: Bearer sk_..."

calls

GET/calls

inbox.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
statusstring optional
directionstring optional
sentimentstring optional
dateFromstring optional
dateTostring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/calls?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/calls

calling.useIdempotency-Key200 {data}

Request body

FieldTypeNotes
assistantIdstring required
tostring optional
fromstring optional
contactIdstring optional
variablesobject optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/calls" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "assistantId": "string"
}'
GET/calls/{id}

inbox.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/calls/{id}" \
  -H "Authorization: Bearer sk_..."

campaigns

GET/campaigns

campaigns.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
status"draft" | "scheduled" | "running" | "paused" | "completed" | "stopped" optional
includeArchived"true" | "false" | "1" | "0" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/campaigns?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/campaigns

campaigns.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
descriptionstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
GET/campaigns/{id}

campaigns.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/campaigns/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/campaigns/{id}

campaigns.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
descriptionstring optional
numberMode"assistant_numbers" | "number_pool" optional
numberPoolIdstring optional
variablesobject optional
timezonestring optional
callWindowStartstring optional
callWindowEndstring optional
callWindowDaysnumber[] optional
maxConcurrentCallsnumber optional
callsPerMinutenumber optional
maxAttemptsnumber optional
retryDelayMinutesnumber optional
isArchivedboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/campaigns/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "description": "string",
  "numberMode": "assistant_numbers"
}'
DELETE/campaigns/{id}

campaigns.control200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/campaigns/{id}" \
  -H "Authorization: Bearer sk_..."
GET/campaigns/{id}/analytics

campaigns.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/campaigns/{id}/analytics" \
  -H "Authorization: Bearer sk_..."
PUT/campaigns/{id}/assistants

campaigns.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
splitsobject[] required

Example

curl -X PUT "https://directapi.assistable.ai/direct/v1/campaigns/{id}/assistants" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "splits": [
    {
      "assistantId": "string",
      "trafficPercent": 0
    }
  ]
}'
GET/campaigns/{id}/contacts

campaigns.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
searchstring optional
status"pending" | "queued" | "dialing" | "completed" | "no_answer" | "busy" | "failed" | "voicemail" | "canceled" | "skipped" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/campaigns/{id}/contacts?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/campaigns/{id}/contacts

campaigns.writeIdempotency-Key200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
contactIdsstring[] optional
filterobject optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/contacts" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "string"
  ],
  "filter": {
    "search": "string",
    "status": "active",
    "tagIds": [
      "string"
    ]
  }
}'
DELETE/campaigns/{id}/contacts

campaigns.write200 {success}

Path parameters

idstringrequired

Request body

FieldTypeNotes
contactIdsstring[] required

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/campaigns/{id}/contacts" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "string"
  ]
}'
POST/campaigns/{id}/pause

campaigns.control200 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/pause" \
  -H "Authorization: Bearer sk_..."
POST/campaigns/{id}/schedule

campaigns.controlIdempotency-Key200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
scheduledStartAtstring required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/schedule" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "scheduledStartAt": "string"
}'
DELETE/campaigns/{id}/schedule

campaigns.control200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/campaigns/{id}/schedule" \
  -H "Authorization: Bearer sk_..."
POST/campaigns/{id}/start

campaigns.controlIdempotency-Key200 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/start" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"
POST/campaigns/{id}/stop

campaigns.control200 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/stop" \
  -H "Authorization: Bearer sk_..."

channels

GET/channels

inbox.respondpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
contactIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/channels" \
  -H "Authorization: Bearer sk_..."

contact-folders

GET/contact-folders

contacts.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contact-folders?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/contact-folders

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
colorstring optional
smartboolean optional
filtersany optional
columnsstring[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contact-folders" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
PATCH/contact-folders/{id}

contacts.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
colorstring optional
sortOrdernumber optional
smartboolean optional
filtersany optional
columnsstring[] optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/contact-folders/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "color": "string",
  "sortOrder": 0
}'
DELETE/contact-folders/{id}

contacts.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/contact-folders/{id}" \
  -H "Authorization: Bearer sk_..."

contacts

GET/contacts

contacts.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
status"active" | "pending" | "archived" optional
folderIdstring optional
tagIdstring optional
source"manual" | "import" | "inbound_sms" | "inbound_voice" | "widget" | "api" optional
dnd"true" | "false" | "1" | "0" optional
hasPhone"true" | "false" | "1" | "0" optional
hasEmail"true" | "false" | "1" | "0" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/contacts

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
firstNamestring optional
lastNamestring optional
emailstring optional
phonestring optional
companystring optional
jobTitlestring optional
websitestring optional
addressStreetstring optional
addressCitystring optional
addressStatestring optional
addressPostalstring optional
addressCountrystring optional
timezonestring optional
source"manual" | "import" | "inbound_sms" | "inbound_voice" | "widget" | "api" optional
assistantIdstring optional
customFieldsobject optional
tagsstring[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contacts" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "firstName": "string",
  "lastName": "string",
  "email": "string"
}'
GET/contacts/{id}

contacts.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/contacts/{id}

contacts.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
firstNamestring optional
lastNamestring optional
emailstring optional
phonestring optional
companystring optional
jobTitlestring optional
websitestring optional
addressStreetstring optional
addressCitystring optional
addressStatestring optional
addressPostalstring optional
addressCountrystring optional
timezonestring optional
assistantIdstring optional
customFieldsobject optional
status"pending" | "active" | "archived" optional
isArchivedboolean optional
folderIdstring optional
dndboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/contacts/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "firstName": "string",
  "lastName": "string",
  "email": "string"
}'
DELETE/contacts/{id}

contacts.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/contacts/{id}" \
  -H "Authorization: Bearer sk_..."
GET/contacts/{id}/notes

contacts.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
limitnumber optional default 20
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/notes?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/contacts/{id}/notes

contacts.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
bodystring required
mentionsstring[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contacts/{id}/notes" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "body": "string"
}'
GET/contacts/{id}/relations

contacts.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/relations" \
  -H "Authorization: Bearer sk_..."
POST/contacts/{id}/relationships

contacts.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
toContactIdstring required
typeKeystring required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contacts/{id}/relationships" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "toContactId": "string",
  "typeKey": "string"
}'
DELETE/contacts/{id}/relationships/{otherId}

contacts.write200 {success}

Path parameters

idstringrequired
otherIdstringrequired

Query parameters

FieldTypeNotes
typeKeystring optional

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/contacts/{id}/relationships/{otherId}" \
  -H "Authorization: Bearer sk_..."
GET/contacts/{id}/tags

contacts.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/tags" \
  -H "Authorization: Bearer sk_..."
POST/contacts/{id}/tags

contacts.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
tagIdsstring[] required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contacts/{id}/tags" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "tagIds": [
    "string"
  ]
}'
DELETE/contacts/{id}/tags/{tagId}

contacts.write200 {success}

Path parameters

idstringrequired
tagIdstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/contacts/{id}/tags/{tagId}" \
  -H "Authorization: Bearer sk_..."
GET/contacts/{id}/timeline

contacts.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
limitnumber optional default 100

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/timeline?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/contacts/bulk

contacts.writeIdempotency-Key200 {data}

Request body

FieldTypeNotes
contactIdsstring[] required
action"tag" | "untag" | "set_status" | "set_dnd" | "move_folder" | "archive" | "unarchive" | "delete" required
configobject optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contacts/bulk" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "string"
  ],
  "action": "tag"
}'
POST/contacts/import

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
importIdstring optional
fileBase64string required
mappingobject required
dedupeBy"phone" | "email" | "none" optional default "phone"
tagIdsstring[] optional
folderIdstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/contacts/import" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "fileBase64": "string",
  "mapping": {}
}'
GET/contacts/imports

contacts.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/imports?limit=20" \
  -H "Authorization: Bearer sk_..."
GET/contacts/imports/{id}

contacts.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/imports/{id}" \
  -H "Authorization: Bearer sk_..."

conversations

GET/conversations

inbox.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
contactIdstring optional
channelstring optional
statusstring optional
archived"true" | "false" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/conversations?limit=20" \
  -H "Authorization: Bearer sk_..."
GET/conversations/{id}/messages

inbox.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/conversations/{id}/messages?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/conversations/{id}/messages

inbox.respondIdempotency-Key200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
textstring required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/conversations/{id}/messages" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "string"
}'
POST/conversations/{id}/read

inbox.view200 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/conversations/{id}/read" \
  -H "Authorization: Bearer sk_..."

custom-fields

GET/custom-fields

contacts.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/custom-fields?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/custom-fields

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
fieldType"text" | "dropdown" | "date" | "integer" | "decimal" required
keystring optional
optionsstring[] optional
requiredboolean optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/custom-fields" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "fieldType": "text"
}'
PATCH/custom-fields/{id}

contacts.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
fieldType"text" | "dropdown" | "date" | "integer" | "decimal" optional
keystring optional
optionsstring[] optional
requiredboolean optional
sortOrdernumber optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/custom-fields/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "fieldType": "text",
  "key": "string"
}'
DELETE/custom-fields/{id}

contacts.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/custom-fields/{id}" \
  -H "Authorization: Bearer sk_..."

integrations

GET/integrations

integrations.viewpaginated200 {data,hasMore,nextCursor}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/integrations" \
  -H "Authorization: Bearer sk_..."
GET/integrations/{provider}

integrations.view200 {data}

Path parameters

providerstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/integrations/{provider}" \
  -H "Authorization: Bearer sk_..."
DELETE/integrations/{provider}

integrations.write200 {success}

Path parameters

providerstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/integrations/{provider}" \
  -H "Authorization: Bearer sk_..."
POST/integrations/{provider}/credentials

integrations.writeIdempotency-Key201 {data}

Path parameters

providerstringrequired

Request body

FieldTypeNotes
credentialsobject optional default {}

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/integrations/{provider}/credentials" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "credentials": {}
}'

ivr-menus

GET/ivr-menus

phone_systems.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/ivr-menus?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/ivr-menus

phone_systems.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
greetingstring optional
greetingAudioUrlstring optional
voicestring optional
timeoutSecsnumber optional
maxRetriesnumber optional
invalidPromptstring optional
noInputPromptstring optional
exhaustedActionobject | object | object | object | object | object | object | object optional
optionsobject[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/ivr-menus" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
PATCH/ivr-menus/{id}

phone_systems.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
greetingstring optional
greetingAudioUrlstring optional
voicestring optional
timeoutSecsnumber optional
maxRetriesnumber optional
invalidPromptstring optional
noInputPromptstring optional
exhaustedActionobject | object | object | object | object | object | object | object optional
optionsobject[] optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/ivr-menus/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "greeting": "string",
  "greetingAudioUrl": "string"
}'
DELETE/ivr-menus/{id}

phone_systems.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/ivr-menus/{id}" \
  -H "Authorization: Bearer sk_..."

knowledge-bases

GET/knowledge-bases

knowledge.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional
statusstring optional
folderIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/knowledge-bases?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/knowledge-bases

knowledge.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
voiceOptimizedboolean optional default false
embeddingModel"text-embedding-3-small" optional default "text-embedding-3-small"
chunkSizenumber optional default 1000
chunkOverlapnumber optional default 100

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/knowledge-bases" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
GET/knowledge-bases/{id}

knowledge.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/knowledge-bases/{id}

knowledge.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
voiceOptimizedboolean optional
chunkSizenumber optional
chunkOverlapnumber optional
embeddingModel"text-embedding-3-small" optional
statusstring optional
folderIdstring optional
isArchivedboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "voiceOptimized": true,
  "chunkSize": 0
}'
DELETE/knowledge-bases/{id}

knowledge.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}" \
  -H "Authorization: Bearer sk_..."
POST/knowledge-bases/{id}/search

knowledge.writeIdempotency-Key200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
querystring required
topKnumber optional default 5

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}/search" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "string"
}'
GET/knowledge-bases/{id}/sources

knowledge.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}/sources" \
  -H "Authorization: Bearer sk_..."
POST/knowledge-bases/{id}/sources

knowledge.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring required
type"text" | "file" | "url" required
contentTextstring optional
sourceUrlstring optional
fileMimestring optional
fileBase64string optional
crawlConfigobject optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}/sources" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "type": "text"
}'
DELETE/knowledge-bases/{id}/sources/{sourceId}

knowledge.write200 {success}

Path parameters

idstringrequired
sourceIdstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}/sources/{sourceId}" \
  -H "Authorization: Bearer sk_..."
POST/knowledge-bases/{id}/sources/{sourceId}/reprocess

knowledge.writeIdempotency-Key200 {data}

Path parameters

idstringrequired
sourceIdstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/knowledge-bases/{id}/sources/{sourceId}/reprocess" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"

members

GET/members

members.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/members?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/members

members.manageIdempotency-Key201 {data}

Request body

FieldTypeNotes
emailstring required
namestring optional
role"owner" | "admin" | "member" | "analyst" | "agent" optional default "member"

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/members" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "string"
}'
PATCH/members/{id}

members.manage200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
status"active" | "suspended" required

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/members/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "status": "active"
}'
DELETE/members/{id}

members.manage200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/members/{id}" \
  -H "Authorization: Bearer sk_..."

messages

POST/messages

inbox.respondIdempotency-Key200 {data}

Request body

FieldTypeNotes
textstring required
channelstring optional default "sms"
conversationIdstring optional
contactIdstring optional
toPhonestring optional
toEmailstring optional
fromNumberIdstring optional
subjectstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/messages" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "string"
}'

number-pools

GET/number-pools

numbers.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
searchstring optional
status"active" | "archived" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/number-pools?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/number-pools

numbers.assignIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
strategy"round_robin" | "sequential" | "random" optional
assistantIdstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/number-pools" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
PATCH/number-pools/{id}

numbers.assign200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
strategy"round_robin" | "sequential" | "random" optional
assistantIdstring optional
status"active" | "archived" optional
isArchivedboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/number-pools/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "strategy": "round_robin",
  "assistantId": "string"
}'
DELETE/number-pools/{id}

numbers.assign200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/number-pools/{id}" \
  -H "Authorization: Bearer sk_..."

phone-numbers

GET/phone-numbers

numbers.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
searchstring optional
status"active" | "archived" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/phone-numbers?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/phone-numbers

numbers.buy201 {data}

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/phone-numbers" \
  -H "Authorization: Bearer sk_..."
GET/phone-numbers/{id}

numbers.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/phone-numbers/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/phone-numbers/{id}

numbers.assign200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
friendlyNamestring optional
statusstring optional
isArchivedboolean optional
capabilitiesstring[] optional
reputationstring optional
assistantIdstring optional
userIdstring optional
recordingEnabledboolean optional
inboundModestring optional
poolIdstring optional
a2pControlsobject optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/phone-numbers/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "friendlyName": "string",
  "status": "string",
  "isArchived": true
}'
DELETE/phone-numbers/{id}

numbers.buy200 {success}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
release"true" | "false" optional

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/phone-numbers/{id}" \
  -H "Authorization: Bearer sk_..."
POST/phone-numbers/buy

numbers.buyIdempotency-Key201 {data}

Request body

FieldTypeNotes
phoneNumberstring required
friendlyNamestring optional
assistantIdstring optional
capabilitiesstring[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/phone-numbers/buy" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "phoneNumber": "string"
}'
POST/phone-numbers/import

numbers.buyIdempotency-Key201 {data}

Request body

FieldTypeNotes
phoneNumberstring required
sipUristring required
friendlyNamestring optional
assistantIdstring optional
uniqueIdstring optional
needsSrtpboolean optional
capabilitiesstring[] optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/phone-numbers/import" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "phoneNumber": "string",
  "sipUri": "string"
}'
POST/phone-numbers/search

numbers.view200 {data}

Request body

FieldTypeNotes
areaCodestring optional
localitystring optional
administrativeAreastring optional
countryCodestring optional default "US"
features"voice" | "sms" | "mms" | "fax" | "emergency"[] optional
numberType"local" | "toll_free" | "national" | "mobile" optional
limitnumber optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/phone-numbers/search" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "areaCode": "string",
  "locality": "string",
  "administrativeArea": "string"
}'

ring-groups

GET/ring-groups

phone_systems.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/ring-groups?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/ring-groups

phone_systems.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
strategy"ring_all" | "round_robin" | "sequential" optional
membersobject | object[] optional
ringSecondsnumber optional
noAnswerActionobject | object | object | object | object | object | object | object optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/ring-groups" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
PATCH/ring-groups/{id}

phone_systems.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
strategy"ring_all" | "round_robin" | "sequential" optional
membersobject | object[] optional
ringSecondsnumber optional
noAnswerActionobject | object | object | object | object | object | object | object optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/ring-groups/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "strategy": "ring_all",
  "members": [
    {
      "kind": "user",
      "value": "string"
    }
  ]
}'
DELETE/ring-groups/{id}

phone_systems.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/ring-groups/{id}" \
  -H "Authorization: Bearer sk_..."

routing-rules

GET/routing-rules

phone_systems.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
phoneNumberIdstring required

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/routing-rules?phoneNumberId=string" \
  -H "Authorization: Bearer sk_..."
POST/routing-rules

phone_systems.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
phoneNumberIdstring required
namestring optional
conditionobject | object | object | object | object | object | object optional
actionobject | object | object | object | object | object | object | object required
enabledboolean optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/routing-rules" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "phoneNumberId": "string",
  "action": {
    "type": "assistant",
    "assistantId": "string"
  }
}'
PUT/routing-rules

phone_systems.writepaginated200 {data,hasMore,nextCursor}

Request body

FieldTypeNotes
phoneNumberIdstring required
orderedIdsstring[] required

Example

curl -X PUT "https://directapi.assistable.ai/direct/v1/routing-rules" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "phoneNumberId": "string",
  "orderedIds": [
    "string"
  ]
}'
PATCH/routing-rules/{id}

phone_systems.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
conditionobject | object | object | object | object | object | object optional
actionobject | object | object | object | object | object | object | object optional
enabledboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/routing-rules/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "condition": {
    "type": "always"
  },
  "action": {
    "type": "assistant",
    "assistantId": "string"
  }
}'
DELETE/routing-rules/{id}

phone_systems.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/routing-rules/{id}" \
  -H "Authorization: Bearer sk_..."

secrets

GET/secrets

secrets.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/secrets?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/secrets

secrets.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
valuestring required
descriptionstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/secrets" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "value": "string"
}'
PATCH/secrets/{id}

secrets.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
valuestring optional
descriptionstring optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/secrets/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "value": "string",
  "description": "string"
}'
DELETE/secrets/{id}

secrets.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/secrets/{id}" \
  -H "Authorization: Bearer sk_..."

tags

GET/tags

contacts.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
qstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/tags?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/tags

contacts.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
colorstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/tags" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
PATCH/tags/{id}

contacts.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
colorstring optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/tags/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "color": "string"
}'
DELETE/tags/{id}

contacts.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/tags/{id}" \
  -H "Authorization: Bearer sk_..."

tools

GET/tools

tools.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/tools?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/tools

tools.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
descriptionstring optional default ""
httpMethod"GET" | "POST" | "PUT" | "PATCH" | "DELETE" optional default "POST"
urlstring required
headersobject[] optional default []
paramsobject[] optional default []
responseMapobject[] optional default []
status"draft" | "published" optional default "published"
bodyMode"raw" | "envelope" optional default "raw"

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/tools" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "url": "string"
}'
GET/tools/{id}

tools.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/tools/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/tools/{id}

tools.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring required
descriptionstring optional default ""
httpMethod"GET" | "POST" | "PUT" | "PATCH" | "DELETE" optional default "POST"
urlstring required
headersobject[] optional default []
paramsobject[] optional default []
responseMapobject[] optional default []
status"draft" | "published" optional default "published"
bodyMode"raw" | "envelope" optional default "raw"

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/tools/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "url": "string"
}'
DELETE/tools/{id}

tools.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/tools/{id}" \
  -H "Authorization: Bearer sk_..."
POST/tools/{id}/test

tools.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
argsobject optional default {}
contactIdstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/tools/{id}/test" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "args": {},
  "contactId": "string"
}'
GET/tools/catalog

tools.view200 {data}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/tools/catalog" \
  -H "Authorization: Bearer sk_..."

voicemails

GET/voicemails

inbox.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
boxUserIdstring optional
unread"true" | "false" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/voicemails?limit=20" \
  -H "Authorization: Bearer sk_..."
PATCH/voicemails/{id}

inbox.respond200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
isReadboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/voicemails/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "isRead": true
}'
DELETE/voicemails/{id}

inbox.respond200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/voicemails/{id}" \
  -H "Authorization: Bearer sk_..."

webhook-events

GET/webhook-events

integrations.viewpaginated200 {data,hasMore,nextCursor}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/webhook-events" \
  -H "Authorization: Bearer sk_..."

webhooks

GET/webhooks

integrations.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/webhooks?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/webhooks

integrations.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
urlstring required
events"call.started" | "call.ended" | "call.failed" | "message.received" | "message.sent" | "handoff.requested" | "payment.succeeded" | "payment.failed" | "contact.created" | "contact.updated" | "appointment.booked" | "oauth.connected" | "oauth.disconnected" | "widget.conversation.created" | "widget.conversation.ended" | "widget.contact.identified" | "widget.handoff.started" | "widget.message.received" | "widget.message.sent"[] required
enabledboolean optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/webhooks" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "string",
  "events": [
    "call.started"
  ]
}'
GET/webhooks/{webhookId}

integrations.view200 {data}

Path parameters

webhookIdstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}" \
  -H "Authorization: Bearer sk_..."
PATCH/webhooks/{webhookId}

integrations.write200 {data}

Path parameters

webhookIdstringrequired

Request body

FieldTypeNotes
urlstring optional
events"call.started" | "call.ended" | "call.failed" | "message.received" | "message.sent" | "handoff.requested" | "payment.succeeded" | "payment.failed" | "contact.created" | "contact.updated" | "appointment.booked" | "oauth.connected" | "oauth.disconnected" | "widget.conversation.created" | "widget.conversation.ended" | "widget.contact.identified" | "widget.handoff.started" | "widget.message.received" | "widget.message.sent"[] optional
enabledboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "url": "string",
  "events": [
    "call.started"
  ],
  "enabled": true
}'
DELETE/webhooks/{webhookId}

integrations.write200 {success}

Path parameters

webhookIdstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}" \
  -H "Authorization: Bearer sk_..."
GET/webhooks/{webhookId}/deliveries

integrations.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

webhookIdstringrequired

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}/deliveries?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/webhooks/{webhookId}/resume

integrations.write200 {data}

Path parameters

webhookIdstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}/resume" \
  -H "Authorization: Bearer sk_..."
POST/webhooks/{webhookId}/rotate-secret

integrations.writeIdempotency-Key200 {data}

Path parameters

webhookIdstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}/rotate-secret" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"

widgets

GET/widgets

widgets.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/widgets?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/widgets

widgets.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
type"chat_widget" optional default "chat_widget"
assistantIdstring optional
status"active" | "archived" optional default "active"

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/widgets" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
GET/widgets/{id}

widgets.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/widgets/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/widgets/{id}

widgets.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
type"chat_widget" optional
assistantIdstring optional
status"active" | "archived" optional
appearanceobject optional
behaviorobject optional
voiceSettingsobject optional
allowedDomainsstring[] optional
folderIdstring optional
isArchivedboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/widgets/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "type": "chat_widget",
  "assistantId": "string"
}'
DELETE/widgets/{id}

widgets.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/widgets/{id}" \
  -H "Authorization: Bearer sk_..."
POST/widgets/{id}/duplicate

widgets.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/widgets/{id}/duplicate" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"

workflow-enrollments

DELETE/workflow-enrollments/{id}

flows.publish200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/workflow-enrollments/{id}" \
  -H "Authorization: Bearer sk_..."

workflow-runs

GET/workflow-runs/{runId}

flows.view200 {data}

Path parameters

runIdstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/workflow-runs/{runId}" \
  -H "Authorization: Bearer sk_..."
POST/workflow-runs/{runId}/cancel

flows.publish200 {data}

Path parameters

runIdstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflow-runs/{runId}/cancel" \
  -H "Authorization: Bearer sk_..."
POST/workflow-runs/{runId}/re-run

flows.publishIdempotency-Key201 {data}

Path parameters

runIdstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflow-runs/{runId}/re-run" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"
POST/workflow-runs/{runId}/replay

flows.publishIdempotency-Key201 {data}

Path parameters

runIdstringrequired

Request body

FieldTypeNotes
nodeIdstring optional
stepIdstring optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflow-runs/{runId}/replay" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "nodeId": "string",
  "stepId": "string"
}'

workflows

GET/workflows

flows.viewpaginated200 {data,hasMore,nextCursor}

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
searchstring optional
status"draft" | "active" | "archived" | "all" optional
folderIdstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/workflows?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/workflows

flows.writeIdempotency-Key201 {data}

Request body

FieldTypeNotes
namestring required
descriptionstring optional
trigger"manual" | "scheduled" | "event-based" optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflows" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
GET/workflows/{id}

flows.view200 {data}

Path parameters

idstringrequired

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/workflows/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/workflows/{id}

flows.write200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
namestring optional
descriptionstring optional
trigger"manual" | "scheduled" | "event-based" optional
status"draft" | "active" | "archived" optional
folderIdstring optional
isArchivedboolean optional
definitionobject optional
settingsobject optional
contactAwareboolean optional
allowReenrollmentboolean optional
allowConcurrentEnrollmentboolean optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/workflows/{id}" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "description": "string",
  "trigger": "manual"
}'
DELETE/workflows/{id}

flows.write200 {success}

Path parameters

idstringrequired

Example

curl -X DELETE "https://directapi.assistable.ai/direct/v1/workflows/{id}" \
  -H "Authorization: Bearer sk_..."
PATCH/workflows/{id}/activation

flows.publish200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
isActiveboolean required

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/workflows/{id}/activation" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "isActive": true
}'
POST/workflows/{id}/duplicate

flows.writeIdempotency-Key201 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflows/{id}/duplicate" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"
POST/workflows/{id}/enrollments

flows.publishIdempotency-Key200 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
contactIdsstring[] required

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflows/{id}/enrollments" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "string"
  ]
}'
POST/workflows/{id}/publish

flows.publishIdempotency-Key201 {data}

Path parameters

idstringrequired

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflows/{id}/publish" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)"
GET/workflows/{id}/runs

flows.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional
status"QUEUED" | "RUNNING" | "PAUSED" | "SUCCEEDED" | "FAILED" | "CANCELLED" optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/workflows/{id}/runs?limit=20" \
  -H "Authorization: Bearer sk_..."
POST/workflows/{id}/runs

flows.publishIdempotency-Key201 {data}

Path parameters

idstringrequired

Request body

FieldTypeNotes
inputobject optional

Example

curl -X POST "https://directapi.assistable.ai/direct/v1/workflows/{id}/runs" \
  -H "Authorization: Bearer sk_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "input": {}
}'
GET/workflows/{id}/versions

flows.viewpaginated200 {data,hasMore,nextCursor}

Path parameters

idstringrequired

Query parameters

FieldTypeNotes
limitstring optional
cursorstring optional

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/workflows/{id}/versions?limit=20" \
  -H "Authorization: Bearer sk_..."

workspace

GET/workspace

workspace.view200 {data}

Example

curl -X GET "https://directapi.assistable.ai/direct/v1/workspace" \
  -H "Authorization: Bearer sk_..."
PATCH/workspace

workspace.settings200 {data}

Request body

FieldTypeNotes
namestring optional
timezonestring optional
logoUrlstring optional
sleepModeobject optional
notificationPrefsobject optional
customLinksobject[] optional

Example

curl -X PATCH "https://directapi.assistable.ai/direct/v1/workspace" \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "timezone": "string",
  "logoUrl": "string"
}'