Less boo. More booked. Halloween offer: 30 days free on any paid plan. Claim 30 days freeEvery new account gets one free mailbox for warmup and replies. No domain to buy. See how it works

Skip to content

Every monthly allowance

API referenceUsage & limits

From the Usage & limits API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.

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 }
  ]
}
FieldDescription
monthKeyThe month these counts cover, YYYY-MM, in UTC. Counts reset when this changes, on the 1st, not on your renewal date.
planThe plan key whose ceilings apply, or null for a workspace with no ceilings (staff / granted unlimited).
planNameDisplay name for that plan, or "Unlimited".
quotas[].keyStable identifier: campaignSends, verifications, emailLookups, linkedinLookups, leadExports, placementTests, credits.
quotas[].usedMonth-to-date count.
quotas[].limitThe ceiling, or null for unmetered: never read null as zero or unknown. Campaign sends are null on every paid plan.
quotas[].remaininglimit - used (never below 0), or null when the limit is null.
quotas[].overflowRemainingUnits 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[].unitsPerCreditHow 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, GET /email-finder/quota, GET /leads/quota, are unchanged and still the right call when you only care about one meter.

Was this page helpful?