Get SMS figures

The team's texts over range (24h, 7d, 30d or 90d; 7d by default), counted as the SMS page counts them, test sends left out: sent (accepted for sending),…

GEThttps://app.usenotix.dev/api/v1/sms/stats

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

The team's texts over range (24h, 7d, 30d or 90d; 7d by default), counted as the SMS page counts them, test sends left out: sent (accepted for sending), and of those delivered, pending (queued or sent, no report yet) and failed; rejected texts were refused before sending and charged nothing. byCountry lists the destination countries, most texts first. spend (what the range cost the wallet, the balance and how many days it lasts at that pace) is only given to a key made by a team admin; it is null otherwise.

Who can call it

Full access and read only keys. Send-only and live AI keys answer 403 SCOPE_DENIED; a key limited to one domain answers 403 DOMAIN_PINNED, as on every SMS and one-time code route.

The team can make 60 of these reads a minute; when Notix cannot count them the answer is 503 SERVICE_UNAVAILABLE (try again shortly), never a 429. Each read holds the database at most 10 seconds and answers 422 past that.

Query parameters

rangestring

How far back to count: 24h, 7d, 30d or 90d. Default 7d.

One of 24h, 7d, 30d, 90d. Default "7d".

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

400

`range` is not one of 24h, 7d, 30d or 90d, or the query has a parameter it does not know.

403

`SCOPE_DENIED`: a send-only or live AI key (or a read only key on the change). `DOMAIN_PINNED`: a key limited to one domain.

422

The read took longer than 10 seconds.

429

The team made 60 SMS and code reads in the last minute.

503

The rate counters or the database cannot be used just now; try again shortly.

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

curl -X GET "https://app.usenotix.dev/api/v1/sms/stats" \
  -H "Authorization: Bearer $NOTIX_API_KEY"
Response200
{
  "range": "24h",
  "from": "2026-10-05T10:00:00.000Z",
  "to": "2026-10-05T10:00:00.000Z",
  "sent": 1,
  "delivered": 1,
  "pending": 1,
  "failed": 1,
  "rejected": 1,
  "deliveredPercent": 1,
  "failedPercent": 1,
  "byCountry": [
    {
      "countryCode": "string",
      "countryName": "Acme",
      "count": 1
    }
  ],
  "byNetwork": [
    {
      "countryCode": "string",
      "countryName": "Acme",
      "network": "MTN",
      "sent": 1,
      "delivered": 1,
      "failed": 1,
      "deliveredPercent": 1
    }
  ],
  "spend": {
    "currency": "NGN",
    "spentMinor": 1,
    "spentFormatted": "string",
    "perMessageMinor": 1,
    "perMessageFormatted": "string",
    "balanceMinor": 1,
    "balanceFormatted": "string",
    "coverDays": 1,
    "topUpBefore": "2026-10-05T10:00:00.000Z"
  }
}
Open in ClaudeOpen in ChatGPT