Send or schedule an email campaign
Send a draft email campaign now or schedule it for a day and time.
POST https://cotlet.dev/api/v1/privy/campaigns/{campaign_id}/email-campaigns
Returns the campaign status, scheduled when send_at is set. With recipient_timezone on, delivery spreads over about 24 hours, and contacts with no known time zone get it at the chosen time in your business time zone. The audience is fixed when you approve, and Privy may send a scheduled email a couple of minutes early. Sent emails cannot be recalled. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| campaign_id string required | string | Draft campaign (id from list_campaigns) |
| send_at string | string | ISO 8601 time in your business time zone. Leave out to send now |
| recipient_timezone boolean | boolean | Send in recipient's timezone |
Request
curl -X POST https://cotlet.dev/api/v1/privy/campaigns/cmp_5b92/email-campaigns \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"send_at":"2026-10-22T10:00:00-04:00"}' result = client.call("privy", "send_email_campaign", {"campaign_id":"cmp_5b92","send_at":"2026-10-22T10:00:00-04:00"}) const result = await cotlet.call('privy', 'send_email_campaign', {"campaign_id":"cmp_5b92","send_at":"2026-10-22T10:00:00-04:00"}); cotlet call privy send_email_campaign --data '{"campaign_id":"cmp_5b92","send_at":"2026-10-22T10:00:00-04:00"}' Example response
{
"campaign_id": "cmp_5b92",
"status": "scheduled",
"send_at": "2026-10-22T10:00:00-04:00",
"send_in_recipient_timezone": false
}