Skip to main content
POST
/
v1
/
sms
/
send
Send SMS Message
curl --request POST \
  --url https://api.bland.ai/v1/sms/send \
  --header 'Content-Type: application/json' \
  --header 'authorization: <authorization>' \
  --data '
{
  "user_number": "<string>",
  "agent_number": "<string>",
  "agent_message": "<string>",
  "request_data": {},
  "new_conversation": true,
  "persona_id": "<string>",
  "persona_version": "<string>",
  "persona_settings": {
    "pathway_id": "<string>",
    "pathway_version": 123,
    "start_node_id": "<string>"
  },
  "pathway_id": "<string>",
  "pathway_version": 123,
  "start_node_id": "<string>",
  "webhook": "<string>",
  "metadata": {},
  "disposition_ids": [
    "<string>"
  ],
  "citation_schema_ids": [
    "<string>"
  ],
  "channel": "<string>",
  "content_sid": "<string>",
  "content_variables": {},
  "time_out": 123,
  "timeout_message": "<string>",
  "warning_time": 123,
  "warning_message": "<string>"
}
'
{
  "data": {
    "message": "SMS sent successfully",
    "conversation_id": "convo_abc123",
    "workflow_id": "workflow_xyz789"
  },
  "errors": null
}

Documentation Index

Fetch the complete documentation index at: https://docs.bland.ai/llms.txt

Use this file to discover all available pages before exploring further.

Enterprise Feature - SMS is only available on Enterprise plans. Contact your Bland representative for access.

Headers

authorization
string
required
Your API key for authentication.
idempotency-key
string
A unique key to prevent duplicate message sends. When provided, repeated requests with the same key will return successfully but will not send an additional message or incur extra charges. Useful for safely retrying failed requests without risk of double-sending.

Body Parameters

user_number
string
required
The E.164 formatted phone number of the user receiving the message.
agent_number
string
required
The E.164 formatted phone number used to send the message (must belong to the authenticated account).
agent_message
string
The content of the SMS message to send. If not passed in, this generates a response using the pathway/prompt the conversation has been setup with.
request_data
object
Optional metadata to associate with the conversation or message. Used for custom routing or analytics.
new_conversation
boolean
Allows you to create a new conversation, archiving the existing conversation and ignores existing sms messages.
persona_id
string
UUID of a persona to use for this conversation. When provided, the persona’s configuration is applied instead of the number’s SMS config. Use persona_version to select which version to use.Cannot be used as a substitute for agent_number — the agent number must still belong to your account. The persona_id controls how the conversation is handled, not which number sends it.
persona_version
string
Which version of the persona to use. Allowed values: "production" (default), "draft".
persona_settings
object
Per-dispatch persona overrides. Takes priority over any pathway settings on the persona version or the pathway_id field below.
pathway_id
string
ID of the pathway to use for generating the SMS response. If persona_id is provided, this is used as a pathway override within the persona context (lower priority than persona_settings).
pathway_version
number
Version of the pathway to use.
start_node_id
string
ID of the specific node within the pathway to start from.
webhook
string
This overrides the webhook for the conversation, instead of using the webhook attached to the phone number.
metadata
object
Custom metadata to attach to the conversation. This data is returned in all webhook payloads (message and status webhooks), making it useful for correlating conversations with your internal systems.
disposition_ids
string[]
An array of outcome IDs to run when the conversation ends. If omitted, the outcomes configured on the SMS number are used. If provided, overrides the number’s configuration. See Outcomes for details.
citation_schema_ids
string[]
An array of citation schema IDs to extract when the conversation ends. If omitted, the citation schemas configured on the SMS number are used. If provided, overrides the number’s configuration. See Citations for details.
channel
string
The channel to send the message on. Defaults to “sms”. Allowed values: “sms”, “whatsapp”.
content_sid
string
The Twilio SID of the content to send, usually in HXXXX format.
content_variables
object
The variables to send with the content. Example:
{
  "1": "John",
  "2": "Smith", 
  "3": "Premium Plan"
}
time_out
number
Per-conversation timeout override, in seconds. When the user goes silent for this long after an agent message, the timeout flow fires (warning message and/or conversation end). Takes priority over the time_out on the number’s sms_config/whatsapp_config. Persists on the conversation, so subsequent turns use the same override until another /send or /create replaces it.
timeout_message
string
Per-conversation override for the message sent when the timeout fires. Takes priority over timeout_message on sms_config/whatsapp_config.
warning_time
number
Per-conversation override for how long, in seconds, to wait before sending the warning message. Must be less than time_out; the request is rejected with INVALID_TIMEOUT_CONFIG otherwise. Takes priority over warning_time on sms_config/whatsapp_config.
warning_message
string
Per-conversation override for the warning message sent at warning_time. Takes priority over warning_message on sms_config/whatsapp_config.

Response

data
object
An object confirming the message was sent and referencing the triggered workflow.
data.message
string
Confirmation text for the successful send.
data.conversation_id
string
ID of the conversation that was created or resumed.
data.message_id
string
ID of the message that was sent, if a single message was sent, to track message delivery and status.
errors
null|array
null on success, or a list of error objects if the request failed.
{
  "data": {
    "message": "SMS sent successfully",
    "conversation_id": "convo_abc123",
    "workflow_id": "workflow_xyz789"
  },
  "errors": null
}