# Every monthly allowance

> The plan resolved here matches the one the write gates enforce: a workspace with no live subscription is held to Free's allowances rather than the plan it…

Source: https://warmerly.com/docs/usage/every-monthly-allowance

```text
GET /usage/quotas
```

```bash
curl https://app.warmerly.com/api/v1/usage/quotas \
  -H "X-Api-Key: wmv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

```json
{
  "monthKey": "2026-09",
  "plan": "growth-v2",
  "planName": "Growth",
  "quotas": [
    { "key": "campaignSends", "label": "Campaign sends", "unit": "sends", "tool": "Campaigns", "used": 4120, "limit": null, "remaining": null },
    { "key": "verifications", "label": "Email verifications", "unit": "verifications", "tool": "Verify", "used": 812, "limit": 25000, "remaining": 24188 },
    { "key": "emailLookups", "label": "Email lookups", "unit": "lookups", "tool": "Email finder", "used": 95, "limit": 10000, "remaining": 9905 },
    { "key": "linkedinLookups", "label": "LinkedIn lookups", "unit": "lookups", "tool": "LinkedIn search", "used": 0, "limit": 10000, "remaining": 10000 },
    { "key": "leadExports", "label": "Lead exports", "unit": "leads", "tool": "Leads", "used": 1500, "limit": 5000, "remaining": 3500 },
    { "key": "placementTests", "label": "Placement tests", "unit": "tests", "tool": "Accounts", "used": 3, "limit": 25, "remaining": 22 },
    { "key": "credits", "label": "AI credits", "unit": "credits", "tool": "AI", "used": 40, "limit": 500, "remaining": 460 }
  ]
}
```

| Field | Description |
| --- | --- |
| `monthKey` | The month these counts cover, `YYYY-MM`, in UTC. Counts reset when this changes, on the 1st, not on your renewal date. |
| `plan` | The plan key whose ceilings apply, or `null` for a workspace with no ceilings (staff / granted unlimited). |
| `planName` | Display name for that plan, or `"Unlimited"`. |
| `quotas[].key` | Stable identifier: `campaignSends`, `verifications`, `emailLookups`, `linkedinLookups`, `leadExports`, `placementTests`, `credits`. |
| `quotas[].used` | Month-to-date count. |
| `quotas[].limit` | The ceiling, or `null` for **unmetered**: never read `null` as zero or unknown. Campaign sends are `null` on every paid plan. |
| `quotas[].remaining` | `limit - used` (never below 0), or `null` when the limit is `null`. |
| `quotas[].overflowRemaining` | Units left on a credit-bought block for this quota. It does not reset on the 1st and is not included in `remaining`. Present on `verifications`, `emailLookups`, `linkedinLookups`, `leadExports` and `placementTests`, and `0` when none has been bought. |
| `quotas[].unitsPerCredit` | How many units one credit buys for this quota. Present on the same five quotas as `overflowRemaining`. |

The plan resolved here matches the one the write gates enforce: a workspace with no live subscription is held to Free's allowances rather than the plan it used to have, so this endpoint and a `402` from `POST /verify` can never disagree.

The per-tool endpoints: [`GET /verify/usage`](https://warmerly.com/docs/verify#usage--quota), [`GET /email-finder/quota`](https://warmerly.com/docs/email-finder), [`GET /leads/quota`](https://warmerly.com/docs/leads#export-quota), are unchanged and still the right call when you only care about one meter.

## More from Usage & limits

- [Quotas are not rate limits](https://warmerly.com/docs/usage/quotas-are-not-rate-limits): A 402 (quotaexhausted or paymentrequired, depending on the endpoint) means you are out of a monthly…
