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
receivedInbound messages your receiving addresses kept.
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 did not call permanent or temporary.
openedOpens recorded, counting the same reader more than once.
clickedClicks recorded, counting the same reader more than once.
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_openedRecipients who opened, each counted once.
unique_clickedRecipients who clicked, each counted once.
delivery_ratedelivered ÷ sent.
open_rateopened ÷ delivered.
click_rateclicked ÷ delivered.
bounce_ratebounced ÷ sent.
complaint_ratecomplained ÷ sent.
attemptedEmails that were sent, failed or suppressed. Each email counts once, even with several outcomes.

Ask for a subset with metrics, comma-separated or repeated. Every metric above is counted from your mail. A name that is not in this table is refused with 422 invalid_parameter.

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.