Quick start
Create an account and get your API key from the Inkbox console:Get API key
Phone Numbers
Provision phone number
Provision a new local phone numberPOST
/api/v1/phone/numbersRelease phone number
Release a phone number from your organizationDELETE
/api/v1/phone/numbers/{phone_number_id}List phone numbers
List all phone numbers for your organizationGET
/api/v1/phone/numbersGet phone number
Get a single phone number by IDGET
/api/v1/phone/numbers/{phone_number_id}Update phone number
Update incoming call action, forwarding target, WebSocket URL, or webhook URLPATCH
/api/v1/phone/numbers/{phone_number_id}Calls
Place call
Initiate an outbound call with bidirectional audio streamingPOST
/api/v1/phone/place-callList calls
List calls for an agent identity, newest firstGET
/api/v1/phone/callsGet call
Get a single call by IDGET
/api/v1/phone/calls/{call_id}List Voice AI tool activity
List safe, paginated tool activity for a callGET
/api/v1/phone/calls/{call_id}/tool-invocationsHang up call
End a live call by ID, from outside the callPOST
/api/v1/phone/calls/{call_id}/hangupInkbox Voice AI configuration
List Voice AI voices
Discover supported voices, sample URLs, and current availabilityGET
/api/v1/phone/hosted-agent-voicesGet Voice AI configuration
Read an identity’s Voice AI configurationGET
/api/v1/phone/hosted-agent-configUpdate Voice AI configuration
Replace an identity’s voice and instructionsPUT
/api/v1/phone/hosted-agent-configSet Voice AI authority mode
Set the default authority mode for future Voice AI callsPUT
/api/v1/phone/hosted-agent-config/authority-modeIncoming calls
Set incoming call action
Configure inbound answering, webhooks, rejection, or forwardingPUT
/api/v1/phone/incoming-call-actionGet incoming call action
Read the inbound call configuration for an agent identityGET
/api/v1/phone/incoming-call-actionTexts
Send text
Send an outbound SMS from one of your phone numbersPOST
/api/v1/phone/numbers/{phone_number_id}/textsList texts
List SMS and MMS messages for a phone numberGET
/api/v1/phone/numbers/{phone_number_id}/textsGet text
Get a single text message by IDGET
/api/v1/phone/numbers/{phone_number_id}/texts/{text_id}Update text
Mark as read or delete a text messagePATCH
/api/v1/phone/numbers/{phone_number_id}/texts/{text_id}Search texts
Full-text search across text messagesGET
/api/v1/phone/numbers/{phone_number_id}/texts/searchList conversations
List conversation summaries with unread countsGET
/api/v1/phone/numbers/{phone_number_id}/texts/conversationsGet conversation
Get all messages with a specific remote numberGET
/api/v1/phone/numbers/{phone_number_id}/texts/conversations/{remote_number}Update conversation
Bulk-update read state for all messages in a conversationPATCH
/api/v1/phone/numbers/{phone_number_id}/texts/conversations/{remote_number}Transcripts
List transcripts
List transcript segments for a call, ordered by sequenceGET
/api/v1/phone/calls/{call_id}/transcriptsSearch transcripts
Full-text search across transcripts for a phone numberGET
/api/v1/phone/numbers/{phone_number_id}/searchContact rules
Per-identity allow and block entries use the identity’sphone_filter_mode (blacklist by default, whitelist on demand) for incoming and outgoing SMS, calls, and iMessage. imessage_filter_mode is an alias for the same mode. See the Contact rules reference and the Phone guide for semantics. The legacy per-number routes under /numbers/{phone_number_id}/contact-rules are deprecated; use the handle-keyed routes below.
List contact rules
List allow/block rules for an agent identityGET
/api/v1/identities/{agent_handle}/phone-contact-rulesCreate contact rule
Add an allow or block rule (E.164 exact match)POST
/api/v1/identities/{agent_handle}/phone-contact-rulesGet contact rule
Fetch a single rule by IDGET
/api/v1/identities/{agent_handle}/phone-contact-rules/{rule_id}Update contact rule
Change a rule’s action (admin-only)PATCH
/api/v1/identities/{agent_handle}/phone-contact-rules/{rule_id}Delete contact rule
Delete a rule (admin-only)DELETE
/api/v1/identities/{agent_handle}/phone-contact-rules/{rule_id}List org phone contact rules
Org-wide aggregate list across every identity (admin-only)GET
/api/v1/phone/contact-rulesSMS opt-ins
Per-recipient SMS consent state for your organization. Reads are open to admin-scoped API key holders and callers from the Inkbox Console; writes require your org to be on its own active, customer-managed 10DLC campaign. See the SMS opt-ins reference for the full schema and the customer-campaign gate.List opt-ins
List the consent rows for your organizationGET
/api/v1/phone/sms-opt-insGet opt-in
Look up the consent state for one recipientGET
/api/v1/phone/sms-opt-ins/{receiver_number}Opt in recipient
Mark a recipient as opted in (requires active, customer-managed 10DLC campaign)POST
/api/v1/phone/sms-opt-ins/{receiver_number}/opt-inOpt out recipient
Mark a recipient as opted out (requires active, customer-managed 10DLC campaign)POST
/api/v1/phone/sms-opt-ins/{receiver_number}/opt-outWebhooks
Text events (text.*) are delivered via the Webhook Subscriptions API — attach a subscription to the phone number with the subset you want. The call-lifecycle event (call.ended) is delivered the same way, via a subscription on the agent identity. The incoming-call event stays on the phone number resource: set incoming_call_webhook_url via PATCH /numbers/{phone_number_id} because the response body controls call routing. See the Webhooks guide for event types, payload format, and signature verification.
Filtering by date
Date filtering applies to the comms list endpoints — List calls (GET /calls, and the deprecated GET /numbers/{phone_number_id}/calls alias), List texts (GET /numbers/{phone_number_id}/texts), and List conversations (GET /numbers/{phone_number_id}/texts/conversations). These accept three optional query parameters that filter results by when each record was created (created_at, stored in UTC); other phone list endpoints (such as list phone numbers and list transcripts) do not support them. All three are optional and fully backwards-compatible — omit them and the endpoint behaves exactly as before, with no filtering applied.
- A bare date in
end_datetimeis inclusive of the entire day —end_datetime=2026-07-06returns records through the last moment of the 6th. - A datetime with an explicit
Zor offset (2026-07-06T15:30:00Z,2026-07-06T11:30:00-04:00) is an exact instant;tzis ignored for that value. - A naive datetime (
2026-07-01T12:00:00) is interpreted intz(UTC whentzis omitted). - Supply only one side for an open-ended range. Ordering, pagination, and all other filters are unchanged.
- Invalid input returns
422:start_datetimeafterend_datetime, an unparseable date, or an unknown time zone.
tz ignored):

