Get usage

The figures the Usage and billing pages show: this billing period's emails against the monthly and daily limits (the daily limit is the one enforced…

GEThttps://app.usenotix.dev/api/v1/billing/usage

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

The figures the Usage and billing pages show: this billing period's emails against the monthly and daily limits (the daily limit is the one enforced today), the plan's units and an estimate of any overage, the team's domains, contact books, members and webhooks against the plan, the API rate limit, and this calendar month's emails, texts and one-time codes. payAsYouGo says whether sending carries on past the plan's units, the units used and included, the units above the allowance so far this period (counted only on days pay-as-you-go was on) and what they cost. It is read only: pay-as-you-go is switched on or off in the dashboard by a team admin, never through the API. thisMonth.textSpendFormatted (what the texts cost the wallet) is only given to a key made by a team admin that is not limited to one domain; it is null otherwise.

Who can call it

Full access, read only and live AI keys, including a key limited to one domain: they help a caller stay within the team's limits. Send-only keys answer 403 SCOPE_DENIED.

The team can make 60 billing reads a minute through the API (20 for invoices, which are read from Stripe, within a limit shared by every team); when Notix cannot count them the answer is 503 SERVICE_UNAVAILABLE (try again shortly), never a 429.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

403

`SCOPE_DENIED`: a send-only key.

422

The read took longer than 10 seconds.

429

The team read billing 60 times in the last minute.

503

The rate counters cannot be read just now; try again shortly.

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

curl -X GET "https://app.usenotix.dev/api/v1/billing/usage" \
  -H "Authorization: Bearer $NOTIX_API_KEY"
Response200
{
  "period": {
    "startDay": "2026-10-01",
    "endDay": "string",
    "label": "string"
  },
  "plan": {
    "key": "BASIC",
    "effectiveKey": "string",
    "displayName": "Acme",
    "monthlyUsd": 1,
    "status": "string",
    "isEntitled": true
  },
  "emails": {
    "marketingThisMonth": 1,
    "transactionalThisMonth": 1,
    "totalThisMonth": 1,
    "totalToday": 1
  },
  "sending": {
    "monthly": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percentUsed": 1
    },
    "daily": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percentUsed": 1
    }
  },
  "units": {
    "included": 1,
    "used": 1,
    "overage": 1,
    "overageUsd": 1,
    "overageMinor": 1,
    "overageFormatted": "string",
    "unitPriceFormatted": "string",
    "note": "string"
  },
  "billing": {
    "method": "STRIPE",
    "currency": "NGN",
    "unitPriceMicro": 1
  },
  "resources": {
    "domains": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percentUsed": 1
    },
    "contactBooks": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percentUsed": 1
    },
    "teamMembers": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percentUsed": 1
    },
    "webhooks": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percentUsed": 1
    }
  },
  "payAsYouGo": {
    "on": true,
    "eligible": true,
    "includedUnits": 50000,
    "usedUnits": 1,
    "overageUnitsThisPeriod": 1,
    "overageCost": {
      "minor": 1,
      "formatted": "$2.00",
      "currency": "NGN"
    },
    "blocked": "reconfirm"
  },
  "apiRateLimit": 1,
  "thisMonth": {
    "emails": {
      "used": 1,
      "limit": 1,
      "unlimited": true,
      "percent": 1
    },
    "texts": 1,
    "codes": 1,
    "forwarded": 1,
    "textSpendFormatted": "Thanks for your order."
  }
}
Open in ClaudeOpen in ChatGPT