curl --request GET \
--url https://api.example.com/api/audio-campaign/{campaign_id}{
"success": "<string>",
"error": "<string>",
"warning": "<string>"
}Execute a voice campaign by ID
curl --request GET \
--url https://api.example.com/api/audio-campaign/{campaign_id}{
"success": "<string>",
"error": "<string>",
"warning": "<string>"
}GET /api/audio-campaign/{campaign_id}
curl -X GET "https://your-domain.com/api/audio-campaign/1?user_token=YOUR_USER_TOKEN" \
-H "Accept: application/json"
{
"success": "Campaign Started successfully"
}
Balance Verification
Insufficient balance (401)Configuration Check
group_id and provider configured.Error: Campaign has no group or provider (401)Hourly Quota Check
Hourly quota crossed (400)Twilio Connection
Connection Failed. Please check your with administrator (401)CampaignSchedule record is created with the following data:
{
"user_id": 123,
"campaign_id": 1,
"group_id": 5,
"provider": "twilio_primary",
"say": "Hello! We have a special offer for you.",
"audio": "https://your-domain.com/storage/campaigns/audio1.mp3",
"xml": null,
"start_at": "2026-03-04T15:30:00.000000Z",
"status": "PENDING"
}
| Status Code | Response Key | Description |
|---|---|---|
| 200 | success | Campaign started successfully |
| 400 | warning | Hourly quota exceeded |
| 401 | error | Unauthorized - Invalid user_token |
| 401 | error | Insufficient account balance |
| 401 | error | Campaign missing group or provider |
| 401 | error | Twilio connection failed |
<?php
// WordPress AJAX handler to start a campaign
add_action('wp_ajax_start_campaign', 'handle_start_campaign');
function handle_start_campaign() {
check_ajax_referer('start_campaign_nonce', 'nonce');
$campaign_id = intval($_POST['campaign_id']);
$user_token = get_user_meta(get_current_user_id(), 'teleman_user_token', true);
$response = wp_remote_get(
"https://your-domain.com/api/audio-campaign/{$campaign_id}?user_token={$user_token}"
);
if (is_wp_error($response)) {
wp_send_json_error(['message' => 'Failed to start campaign']);
}
$result = json_decode(wp_remote_retrieve_body($response), true);
if (isset($result['success'])) {
wp_send_json_success(['message' => $result['success']]);
} else {
wp_send_json_error(['message' => $result['error'] ?? 'Unknown error']);
}
}
async function startCampaign(campaignId, userToken) {
try {
const response = await fetch(
`https://your-domain.com/api/audio-campaign/${campaignId}?user_token=${userToken}`
);
const result = await response.json();
if (response.ok && result.success) {
console.log('✓ Campaign started successfully');
return { success: true, message: result.success };
} else if (response.status === 400 && result.warning) {
console.warn('⚠ Warning:', result.warning);
return { success: false, warning: result.warning };
} else {
console.error('✗ Error:', result.error);
return { success: false, error: result.error };
}
} catch (error) {
console.error('✗ Network error:', error);
return { success: false, error: 'Network error occurred' };
}
}
// Usage
const result = await startCampaign(1, 'YOUR_USER_TOKEN');
if (result.success) {
alert('Campaign started!');
} else if (result.warning) {
alert(`Warning: ${result.warning}`);
} else {
alert(`Error: ${result.error}`);
}