POST
/
v1
/
inbound
/
{phone_number}
curl --request POST \
  --url https://api.bland.ai/v1/inbound/{phone_number} \
  --header 'Content-Type: application/json' \
  --header 'authorization: <authorization>' \
  --data '{
  "prompt": "<string>",
  "pathway_id": "<string>",
  "voice": "<string>",
  "first_sentence": "<string>",
  "wait_for_greeting": true,
  "interruption_threshold": 123,
  "model": "<string>",
  "tools": [
    {}
  ],
  "language": "<string>",
  "timezone": "<string>",
  "transfer_phone_number": "<string>",
  "transfer_list": {},
  "dynamic_data": {},
  "keywords": [
    "<string>"
  ],
  "max_duration": 123,
  "webhook": "<string>",
  "analysis_schema": {},
  "metadata": {},
  "summary_prompt": "<string>",
  "analysis_prompt": "<string>",
  "record": true
}'
{
    "status": "success",
    "message": "Successfully updated number +18584139939.",
    "updates": {
        "prompt": "(Your prompt)",
        "voice": "maya",
        "webhook": null,
        "first_sentence": "Roberta speaking, how can I help you?",
        "record": false,
        "max_duration": 30,
        "model": "enhanced",
        //...
    }
}

Headers

authorization
string
required

Your API key for authentication.

encrypted_key
string

The encrypted_key for the Twilio account that owns the phone number you want to modify. Not required if you are using a Bland phone number.

Path Parameters

phone_number
string

The inbound phone number you wish to update.

Formatting Notes:

  • The '+' or '%2B' prefix is optional.
  • Will assume a US country code if no country code is provided.

Valid Examples for +13334445555:

  • %2B13334445555
  • 13334445555
  • 3334445555

Body

prompt
string
required

Provide instructions, relevant information, and examples of the ideal conversation flow.

For inbound numbers, consider including additional context about the purpose of the call, and what types of callers to expect.

pathway_id
string

Set the pathway that your agent will follow. This will override the prompt field, so there is no need to pass the ‘prompt’ field if you are setting a pathway.

Warning: Setting a pathway will set the following fields to null / their default value - prompt, first_sentence, model, dynamic_data, tools

Set to null or an empty string to clear the pathway.

Agent Parameters (Body)

voice
string

Set your agent’s voice - all available voices can be found with the List Voices endpoint.

first_sentence
string

Makes your agent say a specific phrase or sentence for it’s first response.

wait_for_greeting
boolean
default: false

By default, the agent starts talking as soon as the call connects.

When wait_for_greeting is set to true, the agent will wait for the call recipient to speak first before responding.

interruption_threshold
number
default: 100

Adjusts how patient the AI is when waiting for the user to finish speaking.

Lower values mean the AI will respond more quickly, while higher values mean the AI will wait longer before responding.

Recommended range: 50-200

  • 50: Extremely quick, back and forth conversation
  • 100: Balanced to respond at a natural pace
  • 200: Very patient, allows for long pauses and interruptions. Ideal for collecting detailed information.

Try to start with 100 and make small adjustments in increments of ~10 as needed for your use case.

model
string
default: "enhanced"

Select a model to use for your call.

Options: base, turbo and enhanced.

In nearly all cases, enhanced is the best choice for now.

tools
array

Interact with the real world through API calls.

Detailed tutorial here: Custom Tools

language
string
default: "en-US"

Select a supported language of your choice. Optimizes every part of our API for that language - transcription, speech, and other inner workings.

timezone
string
default: "America/Los_Angeles"

Set the timezone for the call. Handled automatically for calls in the US.

This helps significantly with use cases that rely on appointment setting, scheduling, or behaving differently based on the time of day.

Timezone options are here in the TZ identifier column.

transfer_phone_number
string

A phone number that the agent can transfer to under specific conditions - such as being asked to speak to a human or supervisor.

Set to null to remove.

transfer_list
object

Give your agent the ability to transfer calls to a set of phone numbers.

Overrides transfer_phone_number if a transfer_list.default is specified.

Will default to transfer_list.default, or the chosen phone number.

Example usage to route calls to different departments:

"transfer_list": {
    "default": "+12223334444",
    "sales": "+12223334444",
    "support": "+12223334444",
    "billing": "+12223334444"
}
dynamic_data
object

Integrate data from external APIs into your agent’s knowledge.

Set to null or an empty string to clear dynamic data settings.

Detailed usage in the Send Call endpoint.

interruption_threshold
number
default: 100

Adjusts how patient the AI is when waiting for the user to finish speaking.

Lower values mean the AI will respond more quickly, while higher values mean the AI will wait longer before responding.

Recommended range: 50-200

  • 50: Extremely quick, back and forth conversation
  • 100: Balanced to respond at a natural pace
  • 200: Very patient, allows for long pauses and interruptions. Ideal for collecting detailed information.

Try to start with 100 and make small adjustments in increments of ~10 as needed for your use case.

keywords
string[]
default: "[]"

These words will be boosted in the transcription engine - recommended for proper nouns or words that are frequently mis-transcribed.

For example, if the word “Reece” is frequently transcribed as a homonym like “Reese” you could do this:

{
  "keywords": ["Reece"]
}

For stronger keyword boosts, you can place a colon then a boost factor after the word. The default boost factor is 2.

{
  "keywords": ["Reece:3"]
}

Call Settings (Body)

max_duration
integer
default: "30"

When the call starts, a timer is set for the max_duration minutes. At the end of that timer, if the call is still active it will be automatically ended.

Example Values: 20, 2

webhook
string

When the call ends, we’ll send the call details in a POST request to the URL you specify here.

The request body will match the response from the GET /v1/calls/:call_id endpoint.

analysis_schema
object

Define a JSON schema for how you want to get information about the call - information like email addresses, names, appointment times or any other type of custom data.

In the webhook response or whenever you retrieve call data later, you’ll get the data you defined back under analysis.

For example, if you wanted to retrieve this information from the call:

"analysis_schema": {
  "email_address": "email",
  "first_name": "string",
  "last_name": "string",
  "wants_to_book_appointment": "boolean",
  "appointment_time": "YYYY-MM-DD HH:MM:SS"
}

You would get it filled out like this in your webhook once the call completes:

"analysis": {
  "email_address": "johndoe@gmail.com",
  "first_name": "John",
  "last_name": "Doe",
  "wants_to_book_appointment": true,
  "appointment_time": "2024-01-01 12:00:00"
}
metadata
object

Add any additional information you want to associate with the call. This can be useful for tracking or categorizing calls.

summary_prompt
string

At the end of each call, a summary is generated based on the transcript - you can use this field to add extra instructions and context for how it should be summarized.

For example: "Summarize the call in French instead of English."

analysis_prompt
string

Guides the output and provides additional instructions and clarifications for the analysis_schema.

record
boolean
default: "false"

To record your phone call, set record to true. When your call completes, you can access through the recording_url field in the call details or your webhook.

Response

status
string

Whether the update was successful or not - will be success or error.

message
string

A message describing the status of the update.

updates
object

An object containing the updated settings for the inbound number.

failed_updates
object

If the update was unsuccessful, this will contain the settings that failed to update. Useful to determine how your request is being interpreted on our end.

{
    "status": "success",
    "message": "Successfully updated number +18584139939.",
    "updates": {
        "prompt": "(Your prompt)",
        "voice": "maya",
        "webhook": null,
        "first_sentence": "Roberta speaking, how can I help you?",
        "record": false,
        "max_duration": 30,
        "model": "enhanced",
        //...
    }
}