// Step 1: Create broadcast
const createResponse = await fetch('https://app.kapso.ai/api/v1/whatsapp_broadcasts', {
method: 'POST',
headers: {
'X-API-Key': 'your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
whatsapp_broadcast: {
name: 'July promo',
whatsapp_config_id: '4a5b6c7d-8e9f-0a1b-2c3d-4e5f6a7b8c9d',
whatsapp_template_id: '7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d'
}
})
});
const { data: broadcast } = await createResponse.json();
const broadcastId = broadcast.id;
// Step 2: Add recipients (repeat for batches > 1000)
await fetch(`https://app.kapso.ai/api/v1/whatsapp_broadcasts/${broadcastId}/recipients`, {
method: 'POST',
headers: {
'X-API-Key': 'your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
recipients: [
{
phone_number: '+14155550123',
template_parameters: { customer_name: 'John', discount: '50%' }
}
]
})
});
// Step 3: Send broadcast
await fetch(`https://app.kapso.ai/api/v1/whatsapp_broadcasts/${broadcastId}/send`, {
method: 'POST',
headers: { 'X-API-Key': 'your-api-key' }
});
// Step 4: Poll for progress
async function waitForCompletion(broadcastId) {
while (true) {
const statusResponse = await fetch(
`https://app.kapso.ai/api/v1/whatsapp_broadcasts/${broadcastId}`,
{ headers: { 'X-API-Key': 'your-api-key' } }
);
const { data } = await statusResponse.json();
if (data.completed_at) {
console.log(`Broadcast complete: ${data.sent_count}/${data.total_recipients} sent`);
break;
}
console.log(`Progress: ${data.sent_count}/${data.total_recipients}`);
await new Promise(resolve => setTimeout(resolve, 5000)); // Wait 5s
}
}
await waitForCompletion(broadcastId);