Skip to main content
GET
/
v1
/
voice
/
campaigns
/
{campaign_id}
/
failed-numbers
Get Failed Numbers
curl --request GET \
  --url https://api.example.com/v1/voice/campaigns/{campaign_id}/failed-numbers \
  --header 'X-API-Key: <x-api-key>'
{
  "success": true,
  "campaign_id": "<string>",
  "count": 123,
  "failed_numbers": [
    {
      "phone_number": "<string>",
      "failure_reason": "<string>",
      "call_timestamp": "<string>",
      "call_id": "<string>"
    }
  ],
  "powered_by": "<string>"
}

Description

Returns phone numbers where calls failed, went unanswered, or hit voicemail. Useful for retry campaigns or manual follow-up.

Authentication

X-API-Key
string
required
Your Teli API key

Path Parameters

campaign_id
string
required
The campaign identifier

Query Parameters

format
string
default:"simple"
Response format: simple (phone list only) or detailed (includes failure reasons)
include_voicemail
boolean
default:"true"
Include voicemail as failed
include_not_called
boolean
default:"false"
Include contacts not yet called

Response Fields

success
boolean
Whether the request was successful
campaign_id
string
Campaign identifier
count
integer
Number of failed numbers
failed_numbers
array
Array of phone numbers (simple format) or failure objects (detailed format)
powered_by
string
Always returns “Teli”

Example Request (Simple)

cURL
curl -X GET "https://api.teli.ai/v1/voice/campaigns/voice_campaign_abc123/failed-numbers" \
  -H "X-API-Key: YOUR_API_KEY"

Example Response (Simple)

200
{
  "success": true,
  "campaign_id": "voice_campaign_abc123",
  "failed_numbers": [
    "+15559876543",
    "+15551112222"
  ],
  "count": 2,
  "powered_by": "Teli"
}

Example Request (Detailed)

cURL
curl -X GET "https://api.teli.ai/v1/voice/campaigns/voice_campaign_abc123/failed-numbers?format=detailed" \
  -H "X-API-Key: YOUR_API_KEY"

Example Response (Detailed)

200
{
  "success": true,
  "campaign_id": "voice_campaign_abc123",
  "failed_numbers": [
    {
      "phone_number": "+15559876543",
      "failure_reason": "no_answer",
      "call_timestamp": "2026-01-28T10:30:00.000000",
      "call_id": "call_abc123"
    },
    {
      "phone_number": "+15551112222",
      "failure_reason": "voicemail",
      "call_timestamp": "2026-01-28T10:35:00.000000",
      "call_id": "call_def456"
    }
  ],
  "count": 2,
  "powered_by": "Teli"
}

Failure Reasons

ReasonDescription
no_answerCall was not answered within timeout
busyLine was busy
voicemailCall went to voicemail
call_declinedRecipient declined the call
invalid_numberPhone number is invalid or unreachable
not_calledContact has not been called yet (only if include_not_called=true)

Use Cases

Retry Campaign

Use the simple format to create a new campaign with failed numbers:
// Get failed numbers
const response = await fetch(
  'https://api.teli.ai/v1/voice/campaigns/voice_campaign_abc123/failed-numbers',
  { headers: { 'X-API-Key': 'YOUR_KEY' } }
);
const data = await response.json();

// Create retry campaign
const retryCampaign = await fetch(
  'https://api.teli.ai/v1/voice/campaigns',
  {
    method: 'POST',
    headers: { 'X-API-Key': 'YOUR_KEY', 'Content-Type': 'application/json' },
    body: JSON.stringify({
      voice_agent_id: 'agent_abc',
      agent_outbound_number: '+15551234567',
      leads: data.failed_numbers.map(phone => ({ phone_number: phone }))
    })
  }
);