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 cover SMS/MMS, calls, and iMessage.phone_filter_mode and its imessage_filter_mode alias set both defaults (blacklist initially). Use phone_inbound_filter_mode and phone_outbound_filter_mode for independent receiving and sending settings. Rules cover inbound, outbound, or both (the create default). See the Contact rules reference and the Phone guide. 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 agent identity with the subset you want. The call-lifecycle event (call.ended) is delivered the same way, via a subscription on the agent identity. Incoming-call control remains separate: configure the identity’s incoming-call action, 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):

