Read sending metrics

The numbers on the console's Metrics page for the last 7, 15, 30 or 90 days (days, 30 by default, ending today in UTC), for every domain or one…

GEThttps://app.usenotix.dev/api/v1/metrics

Full access and read only keys can call this. Sending access keys cannot. Key permissions lists the extra rules some calls have.

The numbers on the console's Metrics page for the last 7, 15, 30 or 90 days (days, 30 by default, ending today in UTC), for every domain or one (domainId): emails sent, the deliverability rate, every day's delivered, bounced and complained counts, the bounce rate split into permanent and temporary bounces, the complaint rate, and the open and click rates.

Rates are percentages of emails sent, worked out from the same daily counts that decide when a domain is paused: rates.permanentBounce is the rate the pause at 4% is judged on and rates.complaint the one the pause at 0.08% is judged on (both over 7 days). Open and click rates are percentages of delivered email and count only domains with open or click tracking on; each is null when no domain in scope tracks it. Undetermined bounces are not counted apart yet: they are in bounces.temporary, and bounces.undetermined is 0.

A key limited to one domain reads only that domain; any other domainId answers 404, as does a domain that is not the team's. A sending-only key cannot read it.

Query parameters

daysstring

How many days, ending today (UTC). Default 30.

One of 7, 15, 30, 90.

domainIdinteger

Only this domain. A key limited to one domain always reads its own domain.

Minimum 0.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

404

The domain is not one of the team's, or not the key's own domain

Every error has the same shape. See all error codes.

curl -X GET "https://app.usenotix.dev/api/v1/metrics" \
  -H "Authorization: Bearer $NOTIX_API_KEY"
Response200
{
  "range": {
    "days": 30,
    "from": "2026-09-07",
    "to": "2026-10-06"
  },
  "domainId": 1,
  "totals": {
    "sent": 1,
    "delivered": 1,
    "bounced": 1,
    "hardBounced": 1,
    "complained": 1,
    "opened": 1,
    "clicked": 1
  },
  "bounces": {
    "permanent": 1,
    "temporary": 1,
    "undetermined": 1
  },
  "rates": {
    "deliverability": 1,
    "bounce": 1,
    "permanentBounce": 1,
    "complaint": 1,
    "open": 1,
    "click": 1
  },
  "tracking": {
    "openDomains": 1,
    "clickDomains": 1
  },
  "daily": [
    {
      "date": "string",
      "sent": 1,
      "delivered": 1,
      "bounced": 1,
      "hardBounced": 1,
      "complained": 1,
      "opened": 1,
      "clicked": 1
    }
  ],
  "domains": [
    {
      "id": 1,
      "name": "Acme",
      "sent": 1
    }
  ]
}
Open in ClaudeOpen in ChatGPT