Campaign results

Campaign results

GET/api/v1/email/campaigns/{id}/stats

GET /email/campaigns/{id}/stats
curl -X GET 'https://www.unitpost.com/api/v1/email/campaigns/cmp_123/stats' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
Response · 200
{
  "object": "campaign_stats",
  "campaign_id": "campaign_123",
  "recipients": 0,
  "failed_recipients": 0,
  "suppressed": 0,
  "counts": {
    "sent": 0,
    "delivered": 0,
    "opened": 0,
    "clicked": 0,
    "unsubscribed": 0,
    "bounced": 0,
    "complained": 0,
    "failed": 0
  },
  "rates": {
    "delivery": 0,
    "open": 0,
    "click": 0,
    "unsubscribe": 0,
    "bounce": 0,
    "complaint": 0
  },
  "tracking": {
    "open": false,
    "click": false
  },
  "source": "live",
  "snapshotted_at": "2026-01-01T00:00:00.000Z"
}

A campaign's results: delivered, unique opens and clicks, unsubscribes, bounces, complaints and their rates, recipients, and who didn't receive it. Open and click rates are null when that tracking was off; every rate is null until something was sent. Old messages are cleaned up after your plan's retention window; their counts are kept (source). Requires the campaigns:read capability.

Parameters1 field
FieldTypeDescription
idrequiredstring · path—
Response · 200 fields10 fields
FieldTypeDescription
objectrequiredstring—
campaign_idrequiredstring—
recipientsrequiredintegerContacts the campaign was sent to (suppressed addresses never became recipients).
failed_recipientsrequiredintegerRecipients that didn't receive it, including ones that failed before a message existed.
suppressedrequiredinteger | nullContacts left out at send because their address is suppressed; null for campaigns sent before this was counted.
countsrequiredobject—
ratesrequiredobjectPercentages with one decimal (12.3 = 12.3%). null when there is nothing to measure yet, or when that tracking was off.
trackingrequiredobject—
sourcerequiredenumlive | snapshot | combinedLive rows, the counts frozen when old messages were cleaned up, or both.
snapshotted_atrequiredstring | null—
200401403404422503

Search docs and guides

Search the docs and product guides.