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.
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.
a2p
a2p.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/assignments?limit=20" \
-H "Authorization: Bearer sk_..."
a2p.submitIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
campaignId | string |
required |
|
phoneNumber | string |
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
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/a2p/assignments/{id}" \
-H "Authorization: Bearer sk_..."
a2p.view200 {data}
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/brand" \
-H "Authorization: Bearer sk_..."
a2p.submitIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
entityType | "PRIVATE_PROFIT" | "PUBLIC_PROFIT" | "NON_PROFIT" | "GOVERNMENT" | "SOLE_PROPRIETOR" |
required |
|
displayName | string |
required |
|
companyName | string |
optional |
|
ein | string |
optional |
|
email | string |
required |
|
phone | string |
optional |
|
street | string |
optional |
|
city | string |
optional |
|
state | string |
optional |
|
postalCode | string |
optional |
|
country | string |
optional |
default "US" |
website | string |
optional |
|
vertical | string |
optional |
|
stockSymbol | string |
optional |
|
stockExchange | string |
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"
}'
a2p.submit200 {data}
Request body
| Field | Type | | Notes |
|---|
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"
}'
a2p.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/campaigns?limit=20" \
-H "Authorization: Bearer sk_..."
a2p.submitIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
usecase | string |
required |
|
subUsecases | string[] |
optional |
|
description | string |
required |
|
sampleMessages | string[] |
required |
|
messageFlow | string |
required |
|
optinMessage | string |
optional |
|
optoutMessage | string |
optional |
|
helpMessage | string |
optional |
|
optinKeywords | string |
optional |
|
optoutKeywords | string |
optional |
|
helpKeywords | string |
optional |
|
embeddedLink | boolean |
optional |
default false |
embeddedPhone | boolean |
optional |
default false |
ageGated | boolean |
optional |
default false |
directLending | boolean |
optional |
default false |
privacyPolicyLink | string |
optional |
|
termsAndConditionsLink | string |
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"
}'
a2p.view200 {data}
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/a2p/status" \
-H "Authorization: Bearer sk_..."
appointments
calendar.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
from | string |
optional |
|
to | string |
optional |
|
calendarId | string |
optional |
|
assistantId | string |
optional |
|
contactId | string |
optional |
|
status | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/appointments?limit=20" \
-H "Authorization: Bearer sk_..."
calendar.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
calendarId | string |
required |
|
contactId | string |
required |
|
assistantId | string |
optional |
|
title | string |
optional |
|
startTime | string |
required |
|
endTime | string |
optional |
|
timezone | string |
optional |
|
location | string |
optional |
|
notes | string |
optional |
|
bookedVia | string |
optional |
|
status | string |
optional |
|
metadata | object |
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"
}'
calendar.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/appointments/{id}" \
-H "Authorization: Bearer sk_..."
calendar.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
startTime | string |
optional |
|
endTime | string |
optional |
|
reason | string |
optional |
|
by | string |
optional |
|
title | string |
optional |
|
notes | string |
optional |
|
location | string |
optional |
|
status | string |
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
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
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/appointments/{id}/retry-backfill" \
-H "Authorization: Bearer sk_..." \
-H "Idempotency-Key: $(uuidgen)"
blacklist
contacts.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
targetType | "PHONE" | "EMAIL" | "SOCIAL" | "IP" | "COUNTRY" |
optional |
|
direction | "INBOUND" | "OUTBOUND" | "BOTH" |
optional |
|
search | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/blacklist?limit=20" \
-H "Authorization: Bearer sk_..."
contacts.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
targetType | "PHONE" | "EMAIL" | "SOCIAL" | "IP" | "COUNTRY" |
required |
|
matchType | "EXACT" | "PATTERN" |
optional |
default "EXACT" |
value | string |
required |
|
direction | "INBOUND" | "OUTBOUND" | "BOTH" |
optional |
default "BOTH" |
channel | "ALL" | "SMS" | "EMAIL" | "VOICE" | "WHATSAPP" | "FACEBOOK" | "INSTAGRAM" | "WEBCHAT" |
optional |
default "ALL" |
reason | string |
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"
}'
contacts.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
isActive | boolean |
optional |
|
reason | string |
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"
}'
contacts.write200 {success}
Path parameters
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/blacklist/{id}" \
-H "Authorization: Bearer sk_..."
contacts.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
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" |
reason | string |
optional |
|
values | string[] |
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
phone_systems.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/business-schedules?limit=20" \
-H "Authorization: Bearer sk_..."
phone_systems.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
timezone | string |
optional |
|
week | object |
optional |
|
holidays | object[] |
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
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
timezone | string |
optional |
|
week | object |
optional |
|
holidays | object[] |
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
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/business-schedules/{id}" \
-H "Authorization: Bearer sk_..."
calendars
calendar.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
q | string |
optional |
|
includeArchived | "true" | "false" |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/calendars?limit=20" \
-H "Authorization: Bearer sk_..."
calendar.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
description | string |
optional |
|
color | string |
optional |
|
timezone | string |
required |
|
workingHours | object |
required |
|
slotDurationMinutes | number |
optional |
|
slotIntervalMinutes | number |
optional |
|
bufferBeforeMinutes | number |
optional |
|
bufferAfterMinutes | number |
optional |
|
minLeadMinutes | number |
optional |
|
bookingHorizonDays | number |
optional |
|
maxPerSlot | number |
optional |
|
defaultLocation | string |
optional |
|
integrationProvider | "ghl" | "google" | "outlook" | "calcom" | "calendly" |
optional |
|
integrationId | string |
optional |
|
externalRefs | object |
optional |
|
isDefault | boolean |
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": {}
}'
calendar.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/calendars/{id}" \
-H "Authorization: Bearer sk_..."
calendar.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
description | string |
optional |
|
color | string |
optional |
|
timezone | string |
optional |
|
workingHours | object |
optional |
|
slotDurationMinutes | number |
optional |
|
slotIntervalMinutes | number |
optional |
|
bufferBeforeMinutes | number |
optional |
|
bufferAfterMinutes | number |
optional |
|
minLeadMinutes | number |
optional |
|
bookingHorizonDays | number |
optional |
|
maxPerSlot | number |
optional |
|
defaultLocation | string |
optional |
|
integrationProvider | "ghl" | "google" | "outlook" | "calcom" | "calendly" |
optional |
|
integrationId | string |
optional |
|
externalRefs | object |
optional |
|
isDefault | boolean |
optional |
|
isArchived | boolean |
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"
}'
calendar.write200 {success}
Path parameters
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
Query parameters
| Field | Type | | Notes |
|---|
from | string |
required |
|
to | string |
required |
|
slotDurationMinutes | number |
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
Query parameters
| Field | Type | | Notes |
|---|
from | string |
optional |
|
to | string |
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
Request body
| Field | Type | | Notes |
|---|
startTime | string |
required |
|
endTime | string |
required |
|
reason | string |
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
id | string | required | |
blackoutId | string | required | |
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/calendars/{id}/blackouts/{blackoutId}" \
-H "Authorization: Bearer sk_..."
campaigns
campaigns.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
q | string |
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_..."
campaigns.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
description | string |
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"
}'
campaigns.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/campaigns/{id}" \
-H "Authorization: Bearer sk_..."
campaigns.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
description | string |
optional |
|
numberMode | "assistant_numbers" | "number_pool" |
optional |
|
numberPoolId | string |
optional |
|
variables | object |
optional |
|
timezone | string |
optional |
|
callWindowStart | string |
optional |
|
callWindowEnd | string |
optional |
|
callWindowDays | number[] |
optional |
|
maxConcurrentCalls | number |
optional |
|
callsPerMinute | number |
optional |
|
maxAttempts | number |
optional |
|
retryDelayMinutes | number |
optional |
|
isArchived | boolean |
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"
}'
campaigns.control200 {success}
Path parameters
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
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
Request body
| Field | Type | | Notes |
|---|
splits | object[] |
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
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
search | string |
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
Request body
| Field | Type | | Notes |
|---|
contactIds | string[] |
optional |
|
filter | object |
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
Request body
| Field | Type | | Notes |
|---|
contactIds | string[] |
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
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
Request body
| Field | Type | | Notes |
|---|
scheduledStartAt | string |
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
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
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/start" \
-H "Authorization: Bearer sk_..." \
-H "Idempotency-Key: $(uuidgen)"
campaigns.control200 {data}
Path parameters
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/campaigns/{id}/stop" \
-H "Authorization: Bearer sk_..."
contacts
contacts.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
q | string |
optional |
|
status | "active" | "pending" | "archived" |
optional |
|
folderId | string |
optional |
|
tagId | string |
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_..."
contacts.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
firstName | string |
optional |
|
lastName | string |
optional |
|
email | string |
optional |
|
phone | string |
optional |
|
company | string |
optional |
|
jobTitle | string |
optional |
|
website | string |
optional |
|
addressStreet | string |
optional |
|
addressCity | string |
optional |
|
addressState | string |
optional |
|
addressPostal | string |
optional |
|
addressCountry | string |
optional |
|
timezone | string |
optional |
|
source | "manual" | "import" | "inbound_sms" | "inbound_voice" | "widget" | "api" |
optional |
|
assistantId | string |
optional |
|
customFields | object |
optional |
|
tags | string[] |
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"
}'
contacts.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}" \
-H "Authorization: Bearer sk_..."
contacts.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
firstName | string |
optional |
|
lastName | string |
optional |
|
email | string |
optional |
|
phone | string |
optional |
|
company | string |
optional |
|
jobTitle | string |
optional |
|
website | string |
optional |
|
addressStreet | string |
optional |
|
addressCity | string |
optional |
|
addressState | string |
optional |
|
addressPostal | string |
optional |
|
addressCountry | string |
optional |
|
timezone | string |
optional |
|
assistantId | string |
optional |
|
customFields | object |
optional |
|
status | "pending" | "active" | "archived" |
optional |
|
isArchived | boolean |
optional |
|
folderId | string |
optional |
|
dnd | boolean |
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"
}'
contacts.write200 {success}
Path parameters
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/contacts/{id}" \
-H "Authorization: Bearer sk_..."
contacts.viewpaginated200 {data,hasMore,nextCursor}
Path parameters
Query parameters
| Field | Type | | Notes |
|---|
limit | number |
optional |
default 20 |
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/notes?limit=20" \
-H "Authorization: Bearer sk_..."
contacts.writeIdempotency-Key201 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
body | string |
required |
|
mentions | string[] |
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
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
Request body
| Field | Type | | Notes |
|---|
toContactId | string |
required |
|
typeKey | string |
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
id | string | required | |
otherId | string | required | |
Query parameters
| Field | Type | | Notes |
|---|
typeKey | string |
optional |
|
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/contacts/{id}/relationships/{otherId}" \
-H "Authorization: Bearer sk_..."
contacts.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/tags" \
-H "Authorization: Bearer sk_..."
contacts.writeIdempotency-Key201 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
tagIds | string[] |
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
id | string | required | |
tagId | string | required | |
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
Query parameters
| Field | Type | | Notes |
|---|
limit | number |
optional |
default 100 |
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/{id}/timeline?limit=20" \
-H "Authorization: Bearer sk_..."
contacts.writeIdempotency-Key200 {data}
Request body
| Field | Type | | Notes |
|---|
contactIds | string[] |
required |
|
action | "tag" | "untag" | "set_status" | "set_dnd" | "move_folder" | "archive" | "unarchive" | "delete" |
required |
|
config | object |
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"
}'
contacts.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
importId | string |
optional |
|
fileBase64 | string |
required |
|
mapping | object |
required |
|
dedupeBy | "phone" | "email" | "none" |
optional |
default "phone" |
tagIds | string[] |
optional |
|
folderId | string |
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": {}
}'
contacts.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
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
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/contacts/imports/{id}" \
-H "Authorization: Bearer sk_..."
conversations
inbox.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
contactId | string |
optional |
|
channel | string |
optional |
|
status | string |
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
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
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
Request body
| Field | Type | | Notes |
|---|
text | string |
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
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/conversations/{id}/read" \
-H "Authorization: Bearer sk_..."
custom-fields
contacts.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/custom-fields?limit=20" \
-H "Authorization: Bearer sk_..."
contacts.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
fieldType | "text" | "dropdown" | "date" | "integer" | "decimal" |
required |
|
key | string |
optional |
|
options | string[] |
optional |
|
required | boolean |
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"
}'
contacts.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
fieldType | "text" | "dropdown" | "date" | "integer" | "decimal" |
optional |
|
key | string |
optional |
|
options | string[] |
optional |
|
required | boolean |
optional |
|
sortOrder | number |
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
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/custom-fields/{id}" \
-H "Authorization: Bearer sk_..."
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
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/integrations/{provider}" \
-H "Authorization: Bearer sk_..."
DELETE/integrations/{provider}
integrations.write200 {success}
Path parameters
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
Request body
| Field | Type | | Notes |
|---|
credentials | object |
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": {}
}'
knowledge-bases
knowledge.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
q | string |
optional |
|
status | string |
optional |
|
folderId | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/knowledge-bases?limit=20" \
-H "Authorization: Bearer sk_..."
knowledge.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
voiceOptimized | boolean |
optional |
default false |
embeddingModel | "text-embedding-3-small" |
optional |
default "text-embedding-3-small" |
chunkSize | number |
optional |
default 1000 |
chunkOverlap | number |
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"
}'
knowledge.view200 {data}
Path parameters
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
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
voiceOptimized | boolean |
optional |
|
chunkSize | number |
optional |
|
chunkOverlap | number |
optional |
|
embeddingModel | "text-embedding-3-small" |
optional |
|
status | string |
optional |
|
folderId | string |
optional |
|
isArchived | boolean |
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
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
Request body
| Field | Type | | Notes |
|---|
query | string |
required |
|
topK | number |
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
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
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
type | "text" | "file" | "url" |
required |
|
contentText | string |
optional |
|
sourceUrl | string |
optional |
|
fileMime | string |
optional |
|
fileBase64 | string |
optional |
|
crawlConfig | object |
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
id | string | required | |
sourceId | string | required | |
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
id | string | required | |
sourceId | string | required | |
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
members.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/members?limit=20" \
-H "Authorization: Bearer sk_..."
members.manageIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
email | string |
required |
|
name | string |
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"
}'
members.manage200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
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"
}'
members.manage200 {success}
Path parameters
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/members/{id}" \
-H "Authorization: Bearer sk_..."
number-pools
numbers.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
search | string |
optional |
|
status | "active" | "archived" |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/number-pools?limit=20" \
-H "Authorization: Bearer sk_..."
numbers.assignIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
strategy | "round_robin" | "sequential" | "random" |
optional |
|
assistantId | string |
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"
}'
numbers.assign200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
strategy | "round_robin" | "sequential" | "random" |
optional |
|
assistantId | string |
optional |
|
status | "active" | "archived" |
optional |
|
isArchived | boolean |
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"
}'
numbers.assign200 {success}
Path parameters
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/number-pools/{id}" \
-H "Authorization: Bearer sk_..."
phone-numbers
numbers.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
search | string |
optional |
|
status | "active" | "archived" |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/phone-numbers?limit=20" \
-H "Authorization: Bearer sk_..."
numbers.buy201 {data}
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/phone-numbers" \
-H "Authorization: Bearer sk_..."
numbers.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/phone-numbers/{id}" \
-H "Authorization: Bearer sk_..."
numbers.assign200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
friendlyName | string |
optional |
|
status | string |
optional |
|
isArchived | boolean |
optional |
|
capabilities | string[] |
optional |
|
reputation | string |
optional |
|
assistantId | string |
optional |
|
userId | string |
optional |
|
recordingEnabled | boolean |
optional |
|
inboundMode | string |
optional |
|
poolId | string |
optional |
|
a2pControls | object |
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
Query parameters
| Field | Type | | Notes |
|---|
release | "true" | "false" |
optional |
|
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/phone-numbers/{id}" \
-H "Authorization: Bearer sk_..."
numbers.buyIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
phoneNumber | string |
required |
|
friendlyName | string |
optional |
|
assistantId | string |
optional |
|
capabilities | string[] |
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
| Field | Type | | Notes |
|---|
phoneNumber | string |
required |
|
sipUri | string |
required |
|
friendlyName | string |
optional |
|
assistantId | string |
optional |
|
uniqueId | string |
optional |
|
needsSrtp | boolean |
optional |
|
capabilities | string[] |
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"
}'
ring-groups
phone_systems.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/ring-groups?limit=20" \
-H "Authorization: Bearer sk_..."
phone_systems.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
strategy | "ring_all" | "round_robin" | "sequential" |
optional |
|
members | object | object[] |
optional |
|
ringSeconds | number |
optional |
|
noAnswerAction | object | 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"
}'
phone_systems.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
strategy | "ring_all" | "round_robin" | "sequential" |
optional |
|
members | object | object[] |
optional |
|
ringSeconds | number |
optional |
|
noAnswerAction | object | 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"
}
]
}'
phone_systems.write200 {success}
Path parameters
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/ring-groups/{id}" \
-H "Authorization: Bearer sk_..."
routing-rules
phone_systems.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
phoneNumberId | string |
required |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/routing-rules?phoneNumberId=string" \
-H "Authorization: Bearer sk_..."
phone_systems.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
phoneNumberId | string |
required |
|
name | string |
optional |
|
condition | object | object | object | object | object | object | object |
optional |
|
action | object | object | object | object | object | object | object | object |
required |
|
enabled | boolean |
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"
}
}'
phone_systems.writepaginated200 {data,hasMore,nextCursor}
Request body
| Field | Type | | Notes |
|---|
phoneNumberId | string |
required |
|
orderedIds | string[] |
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"
]
}'
phone_systems.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
condition | object | object | object | object | object | object | object |
optional |
|
action | object | object | object | object | object | object | object | object |
optional |
|
enabled | boolean |
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
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/routing-rules/{id}" \
-H "Authorization: Bearer sk_..."
secrets
secrets.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/secrets?limit=20" \
-H "Authorization: Bearer sk_..."
secrets.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
value | string |
required |
|
description | string |
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"
}'
secrets.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
value | string |
optional |
|
description | string |
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"
}'
secrets.write200 {success}
Path parameters
Example
curl -X DELETE "https://directapi.assistable.ai/direct/v1/secrets/{id}" \
-H "Authorization: Bearer sk_..."
webhooks
integrations.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/webhooks?limit=20" \
-H "Authorization: Bearer sk_..."
integrations.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
url | string |
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 |
|
enabled | boolean |
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"
]
}'
integrations.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}" \
-H "Authorization: Bearer sk_..."
PATCH/webhooks/{webhookId}
integrations.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
url | string |
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 |
|
enabled | boolean |
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
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
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
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
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
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/webhooks/{webhookId}/rotate-secret" \
-H "Authorization: Bearer sk_..." \
-H "Idempotency-Key: $(uuidgen)"
workflow-runs
GET/workflow-runs/{runId}
flows.view200 {data}
Path parameters
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
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
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
Request body
| Field | Type | | Notes |
|---|
nodeId | string |
optional |
|
stepId | string |
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
flows.viewpaginated200 {data,hasMore,nextCursor}
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
search | string |
optional |
|
status | "draft" | "active" | "archived" | "all" |
optional |
|
folderId | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/workflows?limit=20" \
-H "Authorization: Bearer sk_..."
flows.writeIdempotency-Key201 {data}
Request body
| Field | Type | | Notes |
|---|
name | string |
required |
|
description | string |
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"
}'
flows.view200 {data}
Path parameters
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/workflows/{id}" \
-H "Authorization: Bearer sk_..."
flows.write200 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
name | string |
optional |
|
description | string |
optional |
|
trigger | "manual" | "scheduled" | "event-based" |
optional |
|
status | "draft" | "active" | "archived" |
optional |
|
folderId | string |
optional |
|
isArchived | boolean |
optional |
|
definition | object |
optional |
|
settings | object |
optional |
|
contactAware | boolean |
optional |
|
allowReenrollment | boolean |
optional |
|
allowConcurrentEnrollment | boolean |
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"
}'
flows.write200 {success}
Path parameters
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
Request body
| Field | Type | | Notes |
|---|
isActive | boolean |
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
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
Request body
| Field | Type | | Notes |
|---|
contactIds | string[] |
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
Example
curl -X POST "https://directapi.assistable.ai/direct/v1/workflows/{id}/publish" \
-H "Authorization: Bearer sk_..." \
-H "Idempotency-Key: $(uuidgen)"
flows.viewpaginated200 {data,hasMore,nextCursor}
Path parameters
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
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_..."
flows.publishIdempotency-Key201 {data}
Path parameters
Request body
| Field | Type | | Notes |
|---|
input | object |
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
Query parameters
| Field | Type | | Notes |
|---|
limit | string |
optional |
|
cursor | string |
optional |
|
Example
curl -X GET "https://directapi.assistable.ai/direct/v1/workflows/{id}/versions?limit=20" \
-H "Authorization: Bearer sk_..."