Skip to main content
API-first telephony service for AI agents. Provision phone numbers, place and receive calls with bidirectional audio streaming, receive and manage SMS/MMS text messages, retrieve transcripts, and subscribe to events via webhooks. API base URL:

Quick start

Create an account and get your API key from the Inkbox console:

Get API key

All API requests require authentication using an API key:

Phone Numbers

Provision phone number

Provision a new local phone numberPOST /api/v1/phone/numbers

Release 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/numbers

Get 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-call

List calls

List calls for an agent identity, newest firstGET /api/v1/phone/calls

Get 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-invocations

Hang up call

End a live call by ID, from outside the callPOST /api/v1/phone/calls/{call_id}/hangup

Inkbox Voice AI configuration

List Voice AI voices

Discover supported voices, sample URLs, and current availabilityGET /api/v1/phone/hosted-agent-voices

Get Voice AI configuration

Read an identity’s Voice AI configurationGET /api/v1/phone/hosted-agent-config

Update Voice AI configuration

Replace an identity’s voice and instructionsPUT /api/v1/phone/hosted-agent-config

Set Voice AI authority mode

Set the default authority mode for future Voice AI callsPUT /api/v1/phone/hosted-agent-config/authority-mode

Incoming calls

Set incoming call action

Configure inbound answering, webhooks, rejection, or forwardingPUT /api/v1/phone/incoming-call-action

Get incoming call action

Read the inbound call configuration for an agent identityGET /api/v1/phone/incoming-call-action

Texts

Send text

Send an outbound SMS from one of your phone numbersPOST /api/v1/phone/numbers/{phone_number_id}/texts

List texts

List SMS and MMS messages for a phone numberGET /api/v1/phone/numbers/{phone_number_id}/texts

Get 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/search

List conversations

List conversation summaries with unread countsGET /api/v1/phone/numbers/{phone_number_id}/texts/conversations

Get 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}/transcripts

Search transcripts

Full-text search across transcripts for a phone numberGET /api/v1/phone/numbers/{phone_number_id}/search

Contact 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-rules

Create contact rule

Add an allow or block rule (E.164 exact match)POST /api/v1/identities/{agent_handle}/phone-contact-rules

Get 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-rules

SMS 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-ins

Get 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-in

Opt out recipient

Mark a recipient as opted out (requires active, customer-managed 10DLC campaign)POST /api/v1/phone/sms-opt-ins/{receiver_number}/opt-out

Webhooks

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_datetime is inclusive of the entire day — end_datetime=2026-07-06 returns records through the last moment of the 6th.
  • A datetime with an explicit Z or offset (2026-07-06T15:30:00Z, 2026-07-06T11:30:00-04:00) is an exact instant; tz is ignored for that value.
  • A naive datetime (2026-07-01T12:00:00) is interpreted in tz (UTC when tz is omitted).
  • Supply only one side for an open-ended range. Ordering, pagination, and all other filters are unchanged.
  • Invalid input returns 422: start_datetime after end_datetime, an unparseable date, or an unknown time zone.
A bare-date range (interpreted in UTC):
Interpret those bare dates in a specific zone:
Filter from an exact instant (tz ignored):

Additional resources