Skip to main content
POST
/
v1
/
sms
/
send
Send Single SMS
curl --request POST \
  --url https://api.example.com/v1/sms/send \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <x-api-key>' \
  --data '
{
  "campaign_id": "<string>",
  "phone_number": "<string>",
  "message": "<string>"
}
'
{
  "success": true,
  "message": "<string>",
  "phone_number": "<string>",
  "campaign_id": "<string>",
  "thread_qualified": true,
  "ai_disabled": true,
  "human_takeover": true
}

Send Single SMS

Send a manual SMS message to a contact within a campaign. This enables live agents to take over conversations from AI and communicate directly with contacts.

Authentication

X-API-Key
string
required
Your API key

Request Body

campaign_id
string
required
The campaign ID containing the contact
phone_number
string
required
The contact’s phone number (E.164 format recommended: +15551234567)
message
string
required
The SMS message text to send (cannot be empty)

Response

success
boolean
Whether the message was sent successfully
message
string
Status message
phone_number
string
The normalized phone number the message was sent to
campaign_id
string
The campaign ID
thread_qualified
boolean
Whether the conversation thread was marked as qualified (always true for manual messages)
ai_disabled
boolean
Whether AI follow-ups have been disabled for this contact (always true after manual message)
human_takeover
boolean
Indicates this was a human takeover action (always true)

Example Request

curl -X POST "https://api.teli.ai/v1/sms/send" \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "campaign_abc123",
    "phone_number": "+15551234567",
    "message": "Hi! This is John following up on your inquiry. How can I help you today?"
  }'

Example Response

{
  "success": true,
  "message": "SMS sent successfully",
  "phone_number": "+15551234567",
  "campaign_id": "campaign_abc123",
  "thread_qualified": true,
  "ai_disabled": true,
  "human_takeover": true,
  "powered_by": "Teli"
}

Behavior

When a manual SMS is sent:
  1. Message Delivered - The SMS is sent immediately to the contact
  2. Thread Qualified - The conversation is marked as “human_takeover”
  3. AI Disabled - All scheduled AI follow-ups and drip messages are cancelled
  4. Conversation Saved - The message is added to conversation history
  5. Data Extracted - Any extraction fields are processed from the full conversation

Use Cases

  • Live Agent Support - Customer service representatives responding to inquiries
  • Sales Follow-up - Sales reps taking over promising leads
  • Complex Issues - Handling situations AI cannot resolve
  • VIP Customers - Personal touch for high-value contacts

Error Responses

{
  "success": false,
  "error": "Missing required fields: campaign_id, phone_number, message"
}
{
  "success": false,
  "error": "Message text cannot be empty"
}
{
  "success": false,
  "error": "Client +15551234567 not found in campaign campaign_abc123"
}

Notes

  • The contact must already exist in the specified campaign
  • DNC and timezone checks are bypassed for human-sent messages
  • After sending, the AI will not send any more automated messages to this contact
  • Message history remains accessible for review