Skip to content

Schemas ​

The 63 objects the API accepts and returns. *Resource shapes are what you receive; Store*/Update* shapes are what you send. An Update* schema has the same fields as its Store* counterpart with nothing required — a PATCH changes only what it names.

ApiKeyResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
typestringyes
displaystringyes
public_keystring | nullyes
scopesobjectyes
allowed_originsobjectyes
allowed_assistant_idsobjectyes
allowed_ipsobjectyes
expires_atstring | nullyes
last_used_atstring | nullyes
last_used_ipstring | nullyes
revoked_atstring | nullyes
rotated_from_idstring | nullyes
usablebooleanyes
created_atstring | nullyes

AssistantFirstMessageMode ​

String enum. Accepted values:

assistant_speaks_first · assistant_speaks_first_with_model_generated_message · assistant_waits_for_user

AssistantMode ​

§29. A realtime (speech-to-speech) assistant has no separate transcriber or voice stage, so the builder hides those tabs and the resolver omits them.

String enum. Accepted values:

pipeline · realtime

AssistantResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
descriptionstring | nullyes
statusstringyes
is_publishedbooleanyes
versionintegeryes
current_version_idstring | nullyes
published_version_idstring | nullyes
has_unpublished_changesbooleanyes
modestringyes
languagestring | nullyes
additional_languagesobjectyes
first_messagestring | nullyes
first_message_modestring | nullyes
system_promptstring | nullyes
silence_timeout_secondsintegeryes
max_duration_secondsintegeryes
template_strictnessstring | nullyes
transcriberobject | nullyes
modelobject | nullyes
voiceobject | nullyes
speech_to_speech_modelobject | nullyes
start_speaking_planobject | nullyes
stop_speaking_planobject | nullyes
artifact_planobject | nullyes
analysis_planobject | nullyes
observability_planobject | nullyes
message_planobject | nullyes
keypad_input_planobject | nullyes
recording_consent_planobject | nullyes
voicemail_detection_planobject | nullyes
transfer_planobject | nullyes
compliance_planobject | nullyes
background_soundobject | nullyes
background_speech_denoisingobject | nullyes
end_call_phrasesobjectyes
idle_messagesobjectyes
background_messagesobjectyes
pronunciationsobjectyes
custom_keywordsobjectyes
voice_formattingobject | nullyes
serverobject | nullyes
hooksobject | nullyes
fallbacksobject | nullyes
variablesobjectyes
variable_valuesobjectyes
knowledge_onlybooleanyes
knowledge_only_planobject | nullyes
metadataobjectyes
toolsToolAttachmentResource[]—
knowledge_basesKnowledgeBaseResource[]—
created_atstring | nullyes
updated_atstring | nullyes
last_published_atstring | nullyes

AssistantTemplateStrictness ​

§128. An undefined variable silently rendering as an empty string is how a prompt becomes "Hello , your appointment on is confirmed" in production. The tenant chooses which failure they prefer. | | |---| | lenient <br/> Render an empty string. Fast, and wrong quietly. | | warn <br/> Render the placeholder untouched and log a warning — the default. | | strict <br/> Throw. The call setup fails loudly instead of shipping a broken prompt. |

String enum. Accepted values:

lenient · warn · strict

AssistantVersionResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
assistant_idstringyes
versionintegeryes
labelanyyes
change_summarystring | nullyes
config_hashstringyes
configobject—The full snapshot is large; it is returned only when the caller asked for this specific version, not in a listing.
tool_refsobjectyes
knowledge_base_refsobjectyes
published_atstring | nullyes

CustomerResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
display_namestring | nullyes
namestring | nullyes
first_namestring | nullyes
last_namestring | nullyes
companystring | nullyes
localestring | nullyes
timezonestring | nullyes
sourcestringyes§126: which system owns this record.
external_idstring | nullyes
externally_ownedbooleanyes
do_not_contactbooleanyes
conversation_countintegeryes
first_seen_atstring | nullyes
last_seen_atstring | nullyes
merged_into_customer_idstring | nullyes
metadataobject | nullyes
notesstring | nullyes
created_atstring | nullyes
identifiersobject[]—
attributesstring | integer | number | boolean | object[]—
conversationsobject[]—

InboundRoute ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
namestringyes
descriptionstring | nullyes
enabledbooleanyes
priorityintegeryes
phone_number_idstring | nullyes
sip_trunk_idstring | nullyes
did_patternstring | nullyes
did_match_typestringyes
caller_patternstring | nullyes
caller_match_typestringyes
source_ip_aclobject | nullyes
time_condition_idstring | nullyes
destination_typeassistant · squad · queue · ivr · ring_group · extension …yesWhere an inbound call goes once the tenant has been resolved (§10, §66). Deliberately a string enum plus a nullable ULID rather than a real polymorphic relation: the target tables (assistants, queues, ivrs, ring_groups, extensions) are owned by four different agents and land in four different migration ranges, so a hard foreign key here would force a build order that does not exist.
destination_idstring | nullyes
destination_valuestring | nullyes
fallback_destination_typeassistant · squad · queue · ivr · ring_group · extension … | nullyes
fallback_destination_idstring | nullyes
fallback_destination_valuestring | nullyes
recording_modedisabled · mono · dual_channel · inherityes§51. dual_channel is what makes speaker-attributed transcripts and accurate talk-over metrics possible, so it is preferred wherever the carrier offers it.
ring_timeout_secondsintegeryes
screen_callerbooleanyes
set_variablesobject | nullyes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time
deleted_atstring | nullyesdate-time

IntegrationConnectionResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
integrationstringyes
namestringyes
statusstringyes
activebooleanyes
configobject | nullyesConfig is non-secret by construction; secrets live in the credential row.
granted_capabilitiesobjectyes
authoauth2 · api_key · noneyes
connected_atstring | nullyes
last_tested_atstring | nullyes
last_test_statusstring | nullyes
last_synced_atstring | nullyes
last_errorstring | nullyes
created_atstring | nullyes

KnowledgeBaseResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
descriptionstring | nullyes
providerstring | nullyes
namespacestring | nullyes
embeddingobjectyes
embedding.providerstringyes
embedding.modelstringyes
embedding.dimensionsintegeryes
chunk_sizeintegeryes
chunk_overlapintegeryes
retrievalobjectyes
custom_providerobject | nullyes
knowledge_onlybooleanyes
knowledge_only_planobject | nullyes
statusstringyes
document_countintegeryes
chunk_countintegeryes
total_bytesintegeryes
metadataobjectyes
documentsKnowledgeDocumentResource[]—
created_atstring | nullyes
updated_atstring | nullyes

KnowledgeDocumentResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
knowledge_base_idstringyes
titlestringyes
source_typestring | nullyes
source_urlstring | nullyes
mime_typestring | nullyes
extensionstring | nullyes
size_bytesintegeryes
statusstring | nullyes
progressintegeryes
failure_codestring | nullyes
failure_reasonstring | nullyes
extracted_charsintegeryes
chunk_countintegeryes
token_countintegeryes
languagestring | nullyes
metadataobjectyes
ingested_atstring | nullyes
created_atstring | nullyes

KnowledgeProvider ​

§41. pgvector is the only one implemented; the rest exist so the retriever interface is shaped for them and the UI can say "coming soon" honestly instead of silently doing nothing (§188).

String enum. Accepted values:

pgvector · custom · qdrant · pinecone · weaviate

KnowledgeQueryRequest ​

FieldTypeRequiredNotes
querystringyesmax 4000 chars. min 1 chars
top_kinteger | null—min 1. max 50
thresholdnumber | null—min 0. max 1
namespacestring | null—max 255 chars
metadata_filtersstring[] | null—

McpCachedToolResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
mcp_server_idstringyes
namestringyes
titlestring | nullyes
descriptionstring | nullyes
input_schemaobject | nullyes
output_schemaobject | nullyes
annotationsobjectyes
risk_levelstring | nullyes
requires_confirmationbooleanyes
enabledbooleanyes
disabled_reasonstring | nullyes
discovered_atstring | nullyes
expires_atstring | nullyes

McpConfirmationPolicy ​

§37. Optional confirmation before a tool call actually executes.

String enum. Accepted values:

never · destructive · always

McpRiskLevel ​

§37. Ordered by blast radius — atLeast() is what the confirmation policy and the per-organization block list are expressed in.

String enum. Accepted values:

read · write · destructive · financial · privileged

McpServerResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
descriptionstring | nullyes
urlstring | nullyes
transportstring | nullyes
auth_typestringyes
headersobjectyes
secret_keysobjectyes
provider_credential_idstring | nullyes
oauth_connection_idstring | nullyes
tool_policystring | nullyes
allowed_toolsobjectyes
denied_toolsobjectyes
tool_risk_overridesobjectyes
blocked_risk_levelsobjectyes
default_risk_levelstring | nullyes
confirmation_policystring | nullyes
timeout_secondsintegeryes
cache_ttl_secondsintegeryes
activebooleanyes
statusstring | nullyes
status_messagestring | nullyes
protocol_versionstring | nullyes
server_infoobject | nullyes
capabilitiesobject | nullyes
tool_countintegeryes
last_discovery_atstring | nullyes
last_health_check_atstring | nullyes
toolsMcpCachedToolResource[]—
created_atstring | nullyes

McpToolPolicy ​

§37.

String enum. Accepted values:

allow_all · allow_selected · deny_selected

McpTransport ​

String enum. Accepted values:

streamable_http · sse · stdio

OutboundRoute ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
namestringyes
descriptionstring | nullyes
enabledbooleanyes
priorityintegeryes
destination_patternstring | nullyes
match_typestringyes
countriesobject | nullyes
min_digitsinteger | nullyes
max_digitsinteger | nullyes
emergencybooleanyes
sip_trunk_idstring | nullyes
phone_number_idstring | nullyes
failover_sip_trunk_idstring | nullyes
strip_digitsintegeryes
prepend_digitsstring | nullyes
caller_id_numberstring | nullyes
caller_id_namestring | nullyes
blockedbooleanyes
block_reasonstring | nullyes
max_call_secondsinteger | nullyes
rate_per_minutestring | nullyes
high_costbooleanyes
set_variablesobject | nullyes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time
deleted_atstring | nullyesdate-time

PhoneNumber ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
numberstringyes
friendly_namestring | nullyes
providertwilio · telnyx · didww · plivo · zadarma · didlogic …yes§8.1. The telephony providers CallAgent can terminate or originate through. The value is what is stored in phone_numbers.provider, sip_trunks.provider and provider_credentials.provider — keep them stable, they are persisted.
telephony_account_idstring | nullyes
provider_credential_idstring | nullyes
provider_number_sidstring | nullyes
provider_account_sidstring | nullyes
provider_metadataobject | nullyes
capabilitiesobject | nullyes
countrystring | nullyes
regionstring | nullyes
localitystring | nullyes
number_typestring | nullyes
address_requirementstring | nullyes
destination_typeassistant · squad · queue · ivr · ring_group · extension … | nullyes
destination_idstring | nullyes
destination_valuestring | nullyes
fallback_destination_idstring | nullyes
fallback_destination_typeassistant · squad · queue · ivr · ring_group · extension … | nullyes
assistant_idstring | nullyes
squad_idstring | nullyes
hook_enabledbooleanyes
hook_urlstring | nullyes
hook_timeout_msintegeryes
hook_headersobject | nullyes
hook_fallbackstringyes
hook_last_success_atstring | nullyesdate-time
hook_last_failure_atstring | nullyesdate-time
hook_last_errorstring | nullyes
outbound_enabledbooleanyes
outbound_caller_id_numberstring | nullyes
outbound_caller_id_namestring | nullyes
sip_trunk_idstring | nullyes
caller_id_policy_idstring | nullyes
sms_enabledbooleanyes
sms_assistant_idstring | nullyes
sms_webhook_urlstring | nullyes
messaging_service_sidstring | nullyes
recording_modedisabled · mono · dual_channel · inherityes§51. dual_channel is what makes speaker-attributed transcripts and accurate talk-over metrics possible, so it is preferred wherever the carrier offers it.
recording_consent_requiredbooleanyes
voice_webhook_urlstring | nullyes
status_webhook_urlstring | nullyes
webhooks_configured_atstring | nullyesdate-time
webhooks_in_syncbooleanyes
max_concurrent_callsinteger | nullyes
statuspending · active · suspended · released · erroryes
inbound_enabledbooleanyes
imported_atstring | nullyesdate-time
purchased_atstring | nullyesdate-time
released_atstring | nullyesdate-time
last_inbound_atstring | nullyesdate-time
last_outbound_atstring | nullyesdate-time
monthly_coststring | nullyes
setup_coststring | nullyes
currencystringyes
notesstring | nullyes
settingsobject | nullyes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time
deleted_atstring | nullyesdate-time
phone_number_hook_idstring | nullyes

PhoneNumberStatus ​

String enum. Accepted values:

pending · active · suspended · released · error

ProviderCredentialResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
classstringyes
providerstringyes
namestringyes
descriptionstring | nullyes
configobject | nullyes
secret_keysobjectyes
is_defaultbooleanyes
activebooleanyes
validation_statusstringyes
validated_atstring | nullyes
validation_errorstring | nullyes
capabilitiesobject | nullyes
expires_atstring | nullyes
rotated_atstring | nullyes
created_atstring | nullyes

SipAuthMode ​

String enum. Accepted values:

credentials · ip · both

SipDiagnostic ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
sip_trunk_idstring | nullyes
sip_trunk_gateway_idstring | nullyes
kindstringyes
outcomestringyes
response_codeinteger | nullyes
response_reasonstring | nullyes
latency_msinteger | nullyes
targetstring | nullyes
request_tracestring | nullyes
response_tracestring | nullyes
messagestring | nullyes
contextobject | nullyes
triggered_by_user_idstring | nullyes
created_atstringyesdate-time

SipDid ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
sip_trunk_idstringyes
numberstring | nullyes
patternstring | nullyes
match_typestringyes
priorityintegeryes
labelstring | nullyes
countrystring | nullyes
phone_number_idstring | nullyes
destination_typeassistant · squad · queue · ivr · ring_group · extension … | nullyes
destination_idstring | nullyes
destination_valuestring | nullyes
enabledbooleanyes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time

SipDtmfMode ​

§49. rfc2833 (a.k.a. RFC 4733) is the default because it survives transcoding; inband breaks under any lossy codec; info is a signalling-path fallback for carriers that strip telephone-event.

String enum. Accepted values:

rfc2833 · inband · info

SipLeadingPlus ​

§8.4 "leading plus behavior". Carriers disagree violently about whether an outbound Request-URI user should be +4917612345678, 4917612345678 or 004917612345678, and getting it wrong is the single most common reason a new trunk returns 404 on every call.

String enum. Accepted values:

keep · strip · add · international_prefix

SipSrtpPolicy ​

String enum. Accepted values:

disabled · optional · required

SipTransport ​

String enum. Accepted values:

udp · tcp · tls

SipTrunk ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
namestringyes
slugstringyes
descriptionstring | nullyes
providertwilio · telnyx · didww · plivo · zadarma · didlogic …yes§8.1. The telephony providers CallAgent can terminate or originate through. The value is what is stored in phone_numbers.provider, sip_trunks.provider and provider_credentials.provider — keep them stable, they are persisted.
telephony_account_idstring | nullyes
provider_credential_idstring | nullyes
directioninbound · outbound · bothyes
enabledbooleanyes
auth_modecredentials · ip · bothyes
usernamestring | nullyes
auth_usernamestring | nullyes
realmstring | nullyes
from_userstring | nullyes
from_domainstring | nullyes
proxystring | nullyes
outbound_proxystring | nullyes
contact_hoststring | nullyes
registerbooleanyes
register_expiry_secondsintegeryes
register_transportudp · tcp · tls | nullyes
register_proxystring | nullyes
register_on_startupbooleanyes
retry_secondsintegeryes
registered_atstring | nullyesdate-time
registration_expires_atstring | nullyesdate-time
transportudp · tcp · tlsyes
srtp_policydisabled · optional · requiredyes
verify_tls_peerbooleanyes
tls_snistring | nullyes
tls_versionstring | nullyes
codecsobject | nullyes
dtmf_moderfc2833 · inband · infoyes§49. rfc2833 (a.k.a. RFC 4733) is the default because it survives transcoding; inband breaks under any lossy codec; info is a signalling-path fallback for carriers that strip telephone-event.
dtmf_duration_msintegeryes
inter_digit_delay_msintegeryes
ptime_msinteger | nullyes
bypass_mediabooleanyes
late_negotiationbooleanyes
comfort_noisebooleanyes
options_ping_enabledbooleanyes
options_ping_secondsintegeryes
keepalive_secondsintegeryes
nat_keepalivebooleanyes
statusunknown · up · down · registering · failed · disabledyes
status_checked_atstring | nullyesdate-time
last_response_codeinteger | nullyes
last_latency_msinteger | nullyes
last_errorstring | nullyes
consecutive_failuresintegeryes
inbound_source_aclobject | nullyes
inbound_require_aclbooleanyes
inbound_did_sourcestringyes
inbound_did_headerstring | nullyes
inbound_caller_id_sourcestringyes
inbound_strip_plusbooleanyes
inbound_number_prefixstring | nullyes
inbound_strip_digitsintegeryes
inbound_destination_typeassistant · squad · queue · ivr · ring_group · extension … | nullyes
inbound_destination_idstring | nullyes
inbound_destination_valuestring | nullyes
outbound_caller_id_numberstring | nullyes
outbound_caller_id_namestring | nullyes
outbound_caller_id_privacybooleanyes
leading_pluskeep · strip · add · international_prefixyes§8.4 "leading plus behavior". Carriers disagree violently about whether an outbound Request-URI user should be +4917612345678, 4917612345678 or 004917612345678, and getting it wrong is the single most common reason a new trunk returns 404 on every call.
international_prefixstringyes
outbound_prefixstring | nullyes
outbound_strip_digitsintegeryes
sip_uri_templatestring | nullyes
allow_sip_uri_dialingbooleanyes
custom_sip_headersobject | nullyes
outbound_channel_variablesobject | nullyes
supports_referbooleanyes
supports_sip_infobooleanyes
supports_sip_messagebooleanyes
supports_sip_notifybooleanyes
follow_302_redirectsbooleanyes
send_paibooleanyes
send_rpidbooleanyes
send_diversion_on_transferbooleanyes
max_concurrent_callsinteger | nullyes
max_calls_per_secondinteger | nullyes
sofia_profilestringyes
gateway_namestring | nullyes
generated_configstring | nullyes
generated_config_hashstring | nullyes
config_applied_atstring | nullyesdate-time
settingsobject | nullyes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time
deleted_atstring | nullyesdate-time

SipTrunkDirection ​

String enum. Accepted values:

inbound · outbound · both

SipTrunkGateway ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
sip_trunk_idstringyes
namestringyes
hoststringyes
portintegeryes
transportudp · tcp · tls | nullyes
priorityintegeryes
weightintegeryes
enabledbooleanyes
failover_onlybooleanyes
max_concurrent_callsinteger | nullyes
usernamestring | nullyes
realmstring | nullyes
outbound_proxystring | nullyes
registerbooleanyes
statusunknown · up · down · registering · failed · disabledyes
status_checked_atstring | nullyesdate-time
last_response_codeinteger | nullyes
last_latency_msinteger | nullyes
last_errorstring | nullyes
consecutive_failuresintegeryes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time

SipTrunkStatus ​

String enum. Accepted values:

unknown · up · down · registering · failed · disabled

SquadDestinationType ​

§45.

String enum. Accepted values:

assistant · squad · human_queue · dynamic · end

SquadHandoffContextMode ​

§46. How much of the conversation the receiving assistant inherits.

String enum. Accepted values:

all_messages · last_n · user_only · user_assistant · summary · none

SquadResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
descriptionstring | nullyes
statusstring | nullyes
is_publishedbooleanyes
versionintegeryes
current_version_idstring | nullyes
entry_assistant_idstring | nullyes
handoff_context_modestring | nullyes
handoff_context_sizeintegeryes
handoff_extract_variablesobjectyes
silent_handoffbooleanyes
handoff_messagestring | nullyes
metadataobjectyes
membersobject[]—
routesobject[]—
created_atstring | nullyes
updated_atstring | nullyes

SquadRouteTrigger ​

§45.

String enum. Accepted values:

tool · intent · variable · condition · always

StoreAssistantRequest ​

FieldTypeRequiredNotes
namestringyesmax 255 chars
descriptionstring | null—max 255 chars
modepipeline · realtime | null—
languagestring | null—max 16 chars
additional_languagesstring[] | null—
first_messagestring | null—max 5000 chars
first_message_modeassistant_speaks_first · assistant_speaks_first_with_model_generated_message · assistant_waits_for_user | null—
system_promptstring | null—max 100000 chars
template_strictnesslenient · warn · strict | null—
silence_timeout_secondsinteger | null—min 1. max 600
max_duration_secondsinteger | null—min 10. max 3600
transcriberobject—
transcriber.providerstring | null—max 48 chars
modelobject—
model.providerstring | null—max 48 chars
model.modelstring | null—max 96 chars
voiceobject—
voice.providerstring | null—max 48 chars
speech_to_speech_modelstring[] | null—
start_speaking_planstring[] | null—
stop_speaking_planstring[] | null—
artifact_planstring[] | null—
analysis_planstring[] | null—
observability_planstring[] | null—
message_planstring[] | null—
keypad_input_planstring[] | null—
recording_consent_planstring[] | null—
voicemail_detection_planstring[] | null—
transfer_planstring[] | null—
compliance_planstring[] | null—
background_soundstring[] | null—
background_speech_denoisingstring[] | null—
serverobject—
server.urlstring | null—uri. max 2048 chars
hooksstring[] | null—
fallbacksstring[] | null—
end_call_phrasesstring[] | null—
idle_messagesstring[] | null—
background_messagesstring[] | null—
pronunciationsstring[] | null—
custom_keywordsstring[] | null—
voice_formattingstring[] | null—
variablesobject[] | null—
variable_valuesstring[] | null—
knowledge_onlyboolean | null—
knowledge_only_planstring[] | null—
metadatastring[] | null—
toolsobject[] | null—Tenancy: exists is scoped by hand because the global Eloquent scope does not apply to the validator's own query.
tool_idsstring[] | null—
knowledge_base_idsstring[] | null—
structured_output_idsstring[] | null—

StoreKnowledgeBaseRequest ​

FieldTypeRequiredNotes
namestringyesmax 255 chars
descriptionstring | null—max 255 chars
providerpgvector · custom · qdrant · pinecone · weaviate | null—
namespacestring | null—max 255 chars
embedding_providerstring | null—max 48 chars
embedding_modelstring | null—max 96 chars
chunk_sizeinteger | null—min 64. max 4000
chunk_overlapinteger | null—min 0. max 2000
retrievalobject—
retrieval.top_kinteger | null—min 1. max 50
retrieval.thresholdnumber | null—min 0. max 1
retrieval.vector_weightnumber | null—min 0. max 1
retrieval.lexical_weightnumber | null—min 0. max 1
retrieval.max_context_charsinteger | null—min 200. max 100000
retrieval.citationsinline · footnote · none · null | null—
retrieval.metadata_filtersstring[] | null—
custom_providerobject—
custom_provider.urlstring | null—uri. max 2048 chars
custom_provider.headersstring[] | null—
custom_provider.timeout_secondsinteger | null—min 1. max 60
knowledge_onlyboolean | null—
knowledge_only_planstring[] | null—
metadatastring[] | null—

StoreKnowledgeDocumentRequest ​

FieldTypeRequiredNotes
source_typefile · url · textyes
titlestring | null—max 255 chars
filestring—The extension list is the one the extractor genuinely handles — accepting a PDF we cannot parse would be a silent ingestion of nothing (§188).. binary
urlstring | null—uri. max 2048 chars
textstring | null—max 2000000 chars
metadatastring[] | null—

StoreMcpServerRequest ​

FieldTypeRequiredNotes
namestringyesmax 255 chars
descriptionstring | null—max 255 chars
transportstreamable_http · sse · stdioyes
urlstring | null—uri. max 2048 chars
stdio_configstring[] | null—
auth_typenone · static_headers · bearer · oauth · credential · null | null—
headersstring[] | null—
bearer_tokenstring | null—Secrets arrive as their own field and are encrypted before storage; they are never echoed back by the resource.. max 4096 chars
provider_credential_idstring | null—
oauth_connection_idstring | null—
tool_policyallow_all · allow_selected · deny_selected | null—
allowed_toolsstring[] | null—
denied_toolsstring[] | null—
tool_risk_overridesstring[] | null—
blocked_risk_levelsread · write · destructive · financial · privileged[] | null—
default_risk_levelread · write · destructive · financial · privileged | null—
confirmation_policynever · destructive · always | null—
timeout_secondsinteger | null—min 1. max 120
cache_ttl_secondsinteger | null—min 60. max 86400
activeboolean | null—
metadatastring[] | null—

StoreSquadRequest ​

FieldTypeRequiredNotes
namestringyesmax 255 chars
descriptionstring | null—max 255 chars
entry_assistant_idstring | null—
handoff_context_modeall_messages · last_n · user_only · user_assistant · summary · none | null—
handoff_context_sizeinteger | null—min 1. max 200
handoff_extract_variablesstring[] | null—
silent_handoffboolean | null—
handoff_messagestring | null—max 2000 chars
metadatastring[] | null—
membersobject[] | null—
routesobject[] | null—

StoreStructuredOutputRequest ​

FieldTypeRequiredNotes
namestringyesmax 255 chars
keystring | null—max 96 chars
descriptionstring | null—max 2000 chars
templatesummary · sentiment · success · follow_up · lead_qualification · customer_fields … | null—
targetcall · chat · both · null | null—
schemastring[]yesmin 1 items
promptstring | null—max 20000 chars
modelstring[] | null—
enabledboolean | null—
metadatastring[] | null—

StoreToolRequest ​

FieldTypeRequiredNotes
namestringyesmax 255 chars
keystring | null—max 96 chars. pattern ^[a-zA-Z_][a-zA-Z0-9_]*$
descriptionstringyesmax 2000 chars
typeapi_request · function · transfer_call · handoff · end_call · sms …yes§32. The type drives everything downstream: which form fields the builder shows, which validator runs, and whether the Voice Gateway executes the tool in-process, over HTTP, or in an isolated sandbox worker.
parameters_schemastring[] | null—
configstring[] | null—
messagesstring[] | null—
rejection_planstring[] | null—
serverstring[] | null—
is_asyncboolean | null—
timeout_secondsinteger | null—min 1. max 120
requires_confirmationboolean | null—
risk_levelread · write · destructive · financial · privileged | null—
metadatastring[] | null—

StructuredOutputResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
keystringyes
descriptionstring | nullyes
templatestring | nullyes
targetstringyes
schemaobjectyes
promptstring | nullyes
modelobject | nullyes
statusstring | nullyes
is_publishedbooleanyes
versionintegeryes
current_version_idstring | nullyes
enabledbooleanyes
metadataobjectyes
created_atstring | nullyes
updated_atstring | nullyes

TelephonyAccount ​

FieldTypeRequiredNotes
idstringyes
organization_idstringyes
providertwilio · telnyx · didww · plivo · zadarma · didlogic …yes§8.1. The telephony providers CallAgent can terminate or originate through. The value is what is stored in phone_numbers.provider, sip_trunks.provider and provider_credentials.provider — keep them stable, they are persisted.
namestringyes
descriptionstring | nullyes
provider_credential_idstring | nullyes
external_account_idstring | nullyes
external_account_labelstring | nullyes
is_subaccountbooleanyes
parent_external_account_idstring | nullyes
voice_webhook_urlstring | nullyes
status_webhook_urlstring | nullyes
sms_webhook_urlstring | nullyes
is_defaultbooleanyes
activebooleanyes
health_statusstringyes
health_checked_atstring | nullyesdate-time
health_messagestring | nullyes
numbers_synced_atstring | nullyesdate-time
numbers_countintegeryes
capabilitiesobject | nullyes
settingsobject | nullyes
metadataobject | nullyes
created_atstring | nullyesdate-time
updated_atstring | nullyesdate-time
deleted_atstring | nullyesdate-time

TelephonyDestinationType ​

Where an inbound call goes once the tenant has been resolved (§10, §66). Deliberately a string enum plus a nullable ULID rather than a real polymorphic relation: the target tables (assistants, queues, ivrs, ring_groups, extensions) are owned by four different agents and land in four different migration ranges, so a hard foreign key here would force a build order that does not exist.

String enum. Accepted values:

assistant · squad · queue · ivr · ring_group · extension · voicemail · external · sip_uri · hook

TelephonyProviderId ​

§8.1. The telephony providers CallAgent can terminate or originate through. The value is what is stored in phone_numbers.provider, sip_trunks.provider and provider_credentials.provider — keep them stable, they are persisted.

String enum. Accepted values:

twilio · telnyx · didww · plivo · zadarma · didlogic · chime · byo_sip · custom_sip

TelephonyRecordingMode ​

§51. dual_channel is what makes speaker-attributed transcripts and accurate talk-over metrics possible, so it is preferred wherever the carrier offers it.

String enum. Accepted values:

disabled · mono · dual_channel · inherit

ToolAttachmentResource ​

FieldTypeRequiredNotes
idstringyes
namestringyes
keystringyes
typestring | nullyes
pin_modestring | nullyes
tool_version_idstring | nullyes
aliasstring | nullyes
enabledbooleanyes
sort_orderinteger | nullyes

ToolPinMode ​

§109. "latest" resolves at publish time, not at call time — otherwise editing a tool would silently change the behaviour of an already-published assistant.

String enum. Accepted values:

latest · pinned

ToolResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
keystringyes
descriptionstring | nullyes
typestring | nullyes
statusstring | nullyes
is_publishedbooleanyes
versionintegeryes
current_version_idstring | nullyes
parameters_schemaobject | nullyes
configobject | nullyes
messagesobject | nullyes
rejection_planobject | nullyes
serverobject | nullyes
is_asyncbooleanyes
timeout_secondsintegeryes
requires_confirmationbooleanyes
risk_levelstring | nullyes
mcp_server_idstring | nullyes
mcp_tool_namestring | nullyes
metadataobjectyes
created_atstring | nullyes
updated_atstring | nullyes

ToolType ​

§32. The type drives everything downstream: which form fields the builder shows, which validator runs, and whether the Voice Gateway executes the tool in-process, over HTTP, or in an isolated sandbox worker.

String enum. Accepted values:

api_request · function · transfer_call · handoff · end_call · sms · dtmf · voicemail · sip_request · query · knowledge_base · mcp · google_calendar_create_event · google_calendar_availability · google_sheets_append_row · slack_send_message · gohighlevel_availability · gohighlevel_event_create · gohighlevel_contact_create · gohighlevel_contact_get · bash · computer · text_editor · client_side · custom_provider

ToolVersionResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
tool_idstringyes
versionintegeryes
namestringyes
keystringyes
typestring | nullyes
descriptionstring | nullyes
parameters_schemaobject | nullyes
configobject | nullyes
config_hashstringyes
change_summarystring | nullyes
published_atstring | nullyes

UpdateAssistantRequest ​

FieldTypeNotes
namestringmax 255 chars
descriptionstring | nullmax 255 chars
modepipeline · realtime | null
languagestring | nullmax 16 chars
additional_languagesstring[] | null
first_messagestring | nullmax 5000 chars
first_message_modeassistant_speaks_first · assistant_speaks_first_with_model_generated_message · assistant_waits_for_user | null
system_promptstring | nullmax 100000 chars
template_strictnesslenient · warn · strict | null
silence_timeout_secondsinteger | nullmin 1. max 600
max_duration_secondsinteger | nullmin 10. max 3600
transcriberobject
transcriber.providerstring | nullmax 48 chars
modelobject
model.providerstring | nullmax 48 chars
model.modelstring | nullmax 96 chars
voiceobject
voice.providerstring | nullmax 48 chars
speech_to_speech_modelstring[] | null
start_speaking_planstring[] | null
stop_speaking_planstring[] | null
artifact_planstring[] | null
analysis_planstring[] | null
observability_planstring[] | null
message_planstring[] | null
keypad_input_planstring[] | null
recording_consent_planstring[] | null
voicemail_detection_planstring[] | null
transfer_planstring[] | null
compliance_planstring[] | null
background_soundstring[] | null
background_speech_denoisingstring[] | null
serverobject
server.urlstring | nulluri. max 2048 chars
hooksstring[] | null
fallbacksstring[] | null
end_call_phrasesstring[] | null
idle_messagesstring[] | null
background_messagesstring[] | null
pronunciationsstring[] | null
custom_keywordsstring[] | null
voice_formattingstring[] | null
variablesobject[] | null
variable_valuesstring[] | null
knowledge_onlyboolean | null
knowledge_only_planstring[] | null
metadatastring[] | null
toolsobject[] | nullTenancy: exists is scoped by hand because the global Eloquent scope does not apply to the validator's own query.
tool_idsstring[] | null
knowledge_base_idsstring[] | null
structured_output_idsstring[] | null

UpdateKnowledgeBaseRequest ​

FieldTypeNotes
namestringmax 255 chars
descriptionstring | nullmax 255 chars
providerpgvector · custom · qdrant · pinecone · weaviate | null
namespacestring | nullmax 255 chars
embedding_providerstring | nullmax 48 chars
embedding_modelstring | nullmax 96 chars
chunk_sizeinteger | nullmin 64. max 4000
chunk_overlapinteger | nullmin 0. max 2000
retrievalobject
retrieval.top_kinteger | nullmin 1. max 50
retrieval.thresholdnumber | nullmin 0. max 1
retrieval.vector_weightnumber | nullmin 0. max 1
retrieval.lexical_weightnumber | nullmin 0. max 1
retrieval.max_context_charsinteger | nullmin 200. max 100000
retrieval.citationsinline · footnote · none · null | null
retrieval.metadata_filtersstring[] | null
custom_providerobject
custom_provider.urlstring | nulluri. max 2048 chars
custom_provider.headersstring[] | null
custom_provider.timeout_secondsinteger | nullmin 1. max 60
knowledge_onlyboolean | null
knowledge_only_planstring[] | null
metadatastring[] | null

UpdateMcpServerRequest ​

FieldTypeNotes
namestringmax 255 chars
descriptionstring | nullmax 255 chars
transportstreamable_http · sse · stdio
urlstring | nulluri. max 2048 chars
stdio_configstring[] | null
auth_typenone · static_headers · bearer · oauth · credential · null | null
headersstring[] | null
bearer_tokenstring | nullSecrets arrive as their own field and are encrypted before storage; they are never echoed back by the resource.. max 4096 chars
provider_credential_idstring | null
oauth_connection_idstring | null
tool_policyallow_all · allow_selected · deny_selected | null
allowed_toolsstring[] | null
denied_toolsstring[] | null
tool_risk_overridesstring[] | null
blocked_risk_levelsread · write · destructive · financial · privileged[] | null
default_risk_levelread · write · destructive · financial · privileged | null
confirmation_policynever · destructive · always | null
timeout_secondsinteger | nullmin 1. max 120
cache_ttl_secondsinteger | nullmin 60. max 86400
activeboolean | null
metadatastring[] | null

UpdateSquadRequest ​

FieldTypeNotes
namestringmax 255 chars
descriptionstring | nullmax 255 chars
entry_assistant_idstring | null
handoff_context_modeall_messages · last_n · user_only · user_assistant · summary · none | null
handoff_context_sizeinteger | nullmin 1. max 200
handoff_extract_variablesstring[] | null
silent_handoffboolean | null
handoff_messagestring | nullmax 2000 chars
metadatastring[] | null
membersobject[] | null
routesobject[] | null

UpdateStructuredOutputRequest ​

FieldTypeNotes
namestringmax 255 chars
keystring | nullmax 96 chars
descriptionstring | nullmax 2000 chars
templatesummary · sentiment · success · follow_up · lead_qualification · customer_fields … | null
targetcall · chat · both · null | null
schemastring[]
promptstring | nullmax 20000 chars
modelstring[] | null
enabledboolean | null
metadatastring[] | null

UpdateToolRequest ​

FieldTypeNotes
namestringmax 255 chars
keystring | nullmax 96 chars. pattern ^[a-zA-Z_][a-zA-Z0-9_]*$
descriptionstringmax 2000 chars
typeapi_request · function · transfer_call · handoff · end_call · sms …§32. The type drives everything downstream: which form fields the builder shows, which validator runs, and whether the Voice Gateway executes the tool in-process, over HTTP, or in an isolated sandbox worker.
parameters_schemastring[] | null
configstring[] | null
messagesstring[] | null
rejection_planstring[] | null
serverstring[] | null
is_asyncboolean | null
timeout_secondsinteger | nullmin 1. max 120
requires_confirmationboolean | null
risk_levelread · write · destructive · financial · privileged | null
metadatastring[] | null

WebhookDeliveryResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
webhook_endpoint_idstringyes
event_idstringyes
event_typestringyes
statusstringyes
attemptsintegeryes
max_attemptsintegeryes
response_statusinteger | nullyes
duration_msinteger | nullyes
errorstring | nullyes
call_idstring | nullyes
assistant_idstring | nullyes
next_attempt_atstring | nullyes
delivered_atstring | nullyes
failed_atstring | nullyes
redelivery_of_idstring | nullyes
created_atstring | nullyes
payloadobjectyesThe captured exchange is already redacted at write time; this is the §65 delivery log the customer inspects.
request_headersobject | nullyes
response_headersobject | nullyes
response_bodystring | nullyes
attempt_logobject[]—

WebhookEndpointResource ​

FieldTypeRequiredNotes
idstringyes
objectstringyes
namestringyes
urlstringyes
descriptionstring | nullyes
eventsobjectyes
assistant_idsobjectyes
headersobject | nullyes
activebooleanyes
statusstringyes
consecutive_failuresintegeryes
max_attemptsintegeryes
timeout_secondsintegeryes
api_versionstringyes
secret_rotated_atstring | nullyes
secret_overlap_untilstring | nullyes
last_success_atstring | nullyes
last_failure_atstring | nullyes
disabled_reasonstring | nullyes
created_atstring | nullyes
updated_atstring | nullyes

Documented against the code. Anything not yet implemented is labelled, never described as working.