Get one-time code figures

What became of the codes made over range (24h, 7d, 30d or 90d; 7d by default), optionally for one channel: sent, verified, expired (including pending…

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

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

What became of the codes made over range (24h, 7d, 30d or 90d; 7d by default), optionally for one channel: sent, verified, expired (including pending codes past their expiry), failed (locked after too many wrong guesses), refused by risk scoring, and still pending, with each as a share of sent.

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".

channelstring

One of email, sms.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

400

`range` or `channel` is not valid, or the query has a parameter it does not know.

403

`SCOPE_DENIED`: a send-only or live AI key. `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/verify/stats" \
  -H "Authorization: Bearer $NOTIX_API_KEY"
Response200
{
  "range": "24h",
  "channel": "email",
  "from": "2026-10-05T10:00:00.000Z",
  "to": "2026-10-05T10:00:00.000Z",
  "sent": 1,
  "verified": 1,
  "expired": 1,
  "failed": 1,
  "refused": 1,
  "pending": 1,
  "verifiedPercent": 1,
  "expiredPercent": 1,
  "failedPercent": 1,
  "refusedPercent": 1
}
Open in ClaudeOpen in ChatGPT