List campaigns
List email and SMS campaigns with status, subject, send date and results.
GET https://cotlet.dev/api/v1/privy/campaigns
read
Returns the rows of the Campaigns table: title, channel, status, subject and send date, plus Delivered, Opened, Clicked and Unsubscribed. Opened is a count and the other two rates are percentages of delivered contacts. Privy tracks an open with an invisible image, so a contact whose client blocks images is not counted as opened.
Parameters
| Name | Type | Description |
|---|---|---|
| status string | string | draft, scheduled, preparing, awaiting_winner, sending, sent, partially_sent, unsent or canceled |
| channel string | string | email or sms |
| page integer | integer | Page number, starting at 1 |
| per_page integer | integer | Items per page |
Request
curl https://cotlet.dev/api/v1/privy/campaigns \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("privy", "list_campaigns") const result = await cotlet.call('privy', 'list_campaigns'); cotlet call privy list_campaigns Example response
{
"data": [
{
"id": "cmp_41c8",
"title": "October sale announcement",
"channel": "email",
"status": "sent",
"subject": "Our October sale starts now",
"send_date": "2026-10-20T10:00:00-04:00",
"delivered": 4820,
"opened": 1930,
"clicked_percent": 2.4,
"unsubscribed_percent": 0.3
},
{
"id": "cmp_3a07",
"title": "Fall lookbook",
"channel": "email",
"status": "sent",
"subject": "The fall lookbook is here",
"send_date": "2026-10-06T10:00:00-04:00",
"delivered": 4710,
"opened": 2105,
"clicked_percent": 3.1,
"unsubscribed_percent": 0.2
},
{
"id": "cmp_5b92",
"title": "October sale resend",
"channel": "email",
"status": "draft",
"subject": "In case you missed it: our October sale",
"send_date": null,
"delivered": 0,
"opened": 0,
"clicked_percent": 0,
"unsubscribed_percent": 0
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total_count": 3,
"total_pages": 1
}
}