Create Broadcast
Copy
Ask AI
result, err := client.Broadcasts.Create(context.TODO(), zavudev.BroadcastCreateParams{
Name: zavudev.String("Black Friday Sale"),
Channel: zavudev.String("sms"),
Text: zavudev.String("Hi {{name}}, check out our Black Friday deals! Use code FRIDAY20 for 20% off."),
})
if err != nil {
panic(err)
}
fmt.Println(result.Broadcast.ID) // brd_xxx
fmt.Println(result.Broadcast.Status) // draft
WhatsApp Template Broadcast
Copy
Ask AI
result, err := client.Broadcasts.Create(context.TODO(), zavudev.BroadcastCreateParams{
Name: zavudev.String("Order Confirmation Campaign"),
Channel: zavudev.String("whatsapp"),
MessageType: zavudev.String("template"),
Content: &zavudev.BroadcastContent{
TemplateID: zavudev.String("tpl_abc123"),
},
})
Email Broadcast
Copy
Ask AI
result, err := client.Broadcasts.Create(context.TODO(), zavudev.BroadcastCreateParams{
Name: zavudev.String("Newsletter"),
Channel: zavudev.String("email"),
EmailSubject: zavudev.String("Your Weekly Update"),
Text: zavudev.String("Hi {{name}}, here's what's new this week..."),
})
Get Broadcast
Copy
Ask AI
result, err := client.Broadcasts.Get(context.TODO(), "brd_abc123")
if err != nil {
panic(err)
}
fmt.Println(result.Broadcast.Name)
fmt.Println(result.Broadcast.Status)
fmt.Println(result.Broadcast.TotalContacts)
List Broadcasts
Copy
Ask AI
result, err := client.Broadcasts.List(context.TODO(), zavudev.BroadcastListParams{})
if err != nil {
panic(err)
}
for _, broadcast := range result.Items {
fmt.Println(broadcast.ID, broadcast.Name, broadcast.Status)
}
// Filter by status
result, err := client.Broadcasts.List(context.TODO(), zavudev.BroadcastListParams{
Status: zavudev.String("completed"),
Limit: zavudev.Int(50),
})
Update Broadcast
Update a broadcast in draft status:Copy
Ask AI
result, err := client.Broadcasts.Update(context.TODO(), "brd_abc123", zavudev.BroadcastUpdateParams{
Name: zavudev.String("Updated Campaign Name"),
Text: zavudev.String("New message content with {{name}}"),
})
Add Contacts
Add contacts to a broadcast (max 1000 per request):Copy
Ask AI
result, err := client.Broadcasts.Contacts.Add(context.TODO(), "brd_abc123", zavudev.BroadcastContactsAddParams{
Contacts: []zavudev.BroadcastContactInput{
{
Recipient: "+14155551234",
TemplateVariables: map[string]string{
"name": "John",
"order_id": "ORD-001",
},
},
{
Recipient: "+14155555678",
TemplateVariables: map[string]string{
"name": "Jane",
"order_id": "ORD-002",
},
},
},
})
if err != nil {
panic(err)
}
fmt.Println(result.Added) // 2
fmt.Println(result.Duplicates) // 0
fmt.Println(result.Invalid) // 0
List Broadcast Contacts
Copy
Ask AI
result, err := client.Broadcasts.Contacts.List(context.TODO(), "brd_abc123", zavudev.BroadcastContactsListParams{
Status: zavudev.String("pending"),
Limit: zavudev.Int(100),
})
if err != nil {
panic(err)
}
for _, contact := range result.Items {
fmt.Println(contact.Recipient, contact.Status)
}
Remove Contact
Copy
Ask AI
err := client.Broadcasts.Contacts.Remove(context.TODO(), "brd_abc123", "bcon_xyz789")
if err != nil {
panic(err)
}
Send Broadcast
Start sending immediately:Copy
Ask AI
result, err := client.Broadcasts.Send(context.TODO(), "brd_abc123", zavudev.BroadcastSendParams{})
if err != nil {
panic(err)
}
fmt.Println(result.Broadcast.Status) // sending
Copy
Ask AI
result, err := client.Broadcasts.Send(context.TODO(), "brd_abc123", zavudev.BroadcastSendParams{
ScheduledAt: zavudev.String("2024-01-15T10:00:00Z"),
})
if err != nil {
panic(err)
}
fmt.Println(result.Broadcast.Status) // scheduled
Reschedule Broadcast
Change the scheduled time for a broadcast inscheduled status:
Copy
Ask AI
result, err := client.Broadcasts.Reschedule(context.TODO(), "brd_abc123", zavudev.BroadcastRescheduleParams{
ScheduledAt: zavudev.String("2024-01-16T14:00:00Z"),
})
if err != nil {
panic(err)
}
fmt.Println(result.Broadcast.ScheduledAt) // 2024-01-16T14:00:00.000Z
You can only reschedule broadcasts that are in
scheduled status. The new time must be in the future.Get Progress
Monitor broadcast progress in real-time:Copy
Ask AI
result, err := client.Broadcasts.Progress(context.TODO(), "brd_abc123")
if err != nil {
panic(err)
}
fmt.Println(result.Status) // sending
fmt.Println(result.Total) // 5000
fmt.Println(result.Delivered) // 2350
fmt.Println(result.Failed) // 50
fmt.Println(result.PercentComplete) // 48.0
fmt.Println(result.EstimatedCompletionAt)
Cancel Broadcast
Copy
Ask AI
result, err := client.Broadcasts.Cancel(context.TODO(), "brd_abc123")
if err != nil {
panic(err)
}
fmt.Println(result.Broadcast.Status) // cancelled
Cancelling a broadcast will skip pending contacts, but messages already queued may still be delivered.
Delete Broadcast
Delete a broadcast in draft status:Copy
Ask AI
err := client.Broadcasts.Delete(context.TODO(), "brd_abc123")
if err != nil {
panic(err)
}
