Skip to content
On this site

Metrics

Delivery, bounce, complaint and engagement counts for the account, over a date range you choose and broken down however you ask.

Freshness

Data is updated every 15 minutes.

Counts are rolled up into 15-minute buckets. The response carries data_as_of, the end of the last completed bucket, and end_date is clamped down to it — so a range never reports a partly-filled window as though it were final, and a message sent a minute ago is not yet in these numbers.

Rates are fractions between 0 and 1, not percentages. A bounce_rate of 0.03 is 3%.

The metrics

Every metric this endpoint reports
MetricMeans
receivedMessages accepted by the API.
deliveredMessages a receiving mail server accepted.
complainedMessages a recipient reported as spam.
suppressedSends skipped because the address was on your suppression list.
bouncedMessages that bounced, of any kind.
bounced_transientBounces the receiver called temporary — a full mailbox, a rejected size.
bounced_permanentBounces the receiver called permanent. These add the address to suppressions.
bounced_undeterminedBounces the receiver would not classify.
openedOpens recorded, counting the same reader more than once.
clickedClicks recorded, counting the same reader more than once.
unsubscribedUnsubscribes recorded. Marketing sends only, so zero for transactional mail.
delivery_delayedMessages a receiver deferred and has not yet accepted or rejected.
failedMessages we could not submit, or that were rejected before sending.
sentMessages handed to the mail provider.
unique_openedMessages opened at least once.
unique_clickedMessages clicked at least once.
delivery_ratedelivered ÷ sent.
open_rateunique_opened ÷ delivered.
click_rateunique_clicked ÷ delivered.
bounce_ratebounced ÷ sent.
complaint_ratecomplained ÷ delivered.
unsubscribe_rateunsubscribed ÷ delivered.

Ask for a subset with metrics, comma-separated or repeated. A metric this release does not aggregate yet answers 0 rather than being absent, so code that indexes the object it expects keeps working.

Breaking the totals down

The dimensions totals can be broken down by
DimensionMeans
periodOne row per time bucket, at the requested granularity.
domainOne row per sending domain.
emailOne row per email. Cannot be combined with `broadcast`.
broadcastOne row per broadcast. Marketing sends only. Cannot be combined with `email`.
  • totals is always present. data is omitted entirely when you ask for no dimensions — it is absent, not an empty array.
  • With period, granularity chooses the bucket width: hourly, daily, weekly or monthly. It defaults to daily.

Endpoints

GET /emails/metrics

Delivery, bounce, complaint and engagement counts for the account.

Query parameters

Query parameters
FieldTypeDescription
start_datestringISO 8601 date or datetime. Defaults to six days before end_date.
end_datestringISO 8601 date or datetime. A value in the future is clamped to now, and then down to the last completed 15-minute bucket.
metricsstringComma-separated, repeated, or both. Defaults to every metric. Rate metrics are fractions between 0 and 1.
dimensionsstringperiod, domain, email or broadcast. data is omitted entirely when this is empty. email cannot be combined with broadcast.
3 more fields (granularity, domain_id, timezone)
Query parameters, less common
FieldTypeDescription
granularitystringhourly, daily, weekly or monthly. Defaults to daily.
domain_idstringRestrict to one or more domains. Up to 100 ids.
timezonestringIANA timezone name. Defaults to UTC.
curl -X GET "https://api.rasket.com/emails/metrics?metrics=sent%2Cdelivered%2Cbounce_rate&dimensions=period" \
  -H "Authorization: Bearer $RASKET_API_KEY" \
  -H "User-Agent: acme-billing/1.0"

Response 200

{
  "object": "metrics",
  "start_date": "2026-09-02T00:00:00.000Z",
  "end_date": "2026-09-09T14:30:00.000Z",
  "metrics": ["sent", "delivered", "bounce_rate"],
  "dimensions": ["period"],
  "granularity": "daily",
  "totals": {
    "sent": 1000,
    "delivered": 960,
    "bounce_rate": 0.03
  },
  "data_as_of": "2026-09-09T14:30:00.000Z",
  "data": [
    {
      "period": "2026-09-09",
      "sent": 140,
      "delivered": 135,
      "bounce_rate": 0.028
    }
  ]
}
  • Rate metrics are fractions, not percentages: a bounce_rate of 0.03 is 3%.
  • Totals are aggregated in 15-minute buckets. data_as_of is the end of the last completed bucket, and end_date is clamped down to it, so a range never reports a partly-filled window as a final one.
  • data is omitted rather than empty when dimensions is empty.
  • A metric this release does not aggregate yet answers 0 rather than being absent, so a caller can index the object it expects.