API7 min read

The free tier: what you actually get

No hidden "we'll email you when you're near the limit" surprises. Here are the exact free-tier numbers — requests, tests, concurrent streams — and why we can afford to give them away.

Half of the appeal of a developer API is knowing what the free tier actually includes before you wire it up. The other half is not being surprised in month two by a credit-card capture page hiding behind the word "fair use." This page lays out the exact numbers.

Short version

Free tier: 50 placement tests per day, 1000 per month, 60 requests per minute, 5 concurrent SSE streams. SPF / DKIM / DMARC / DNSBL checks are not counted against any of these. Signup is required; a credit card is not.

The numbers

Three axes — per-minute, per-day, per-month — and one concurrency ceiling. Everything else is derived.

Free
  tests per day:       50
  tests per month:     1000
  requests per minute: 60
  concurrent streams:  5
  retention:           30 days of test history
  seed mailboxes:      22 providers

Starter ($19/mo)
  tests per day:       500
  tests per month:     10000
  requests per minute: 300
  concurrent streams:  20
  retention:           12 months

Growth ($79/mo)
  tests per day:       5000
  tests per month:     100000
  requests per minute: 1000
  concurrent streams:  100
  retention:           24 months + CSV export

What is counted vs not counted

A "test" means a real placement test — you send a message, it lands in our seed mailboxes, we record where. That is the expensive operation. Everything else — all the introspection endpoints — is free and uncapped per the 60 req/min ceiling.

  • Counted as tests: POST /api/tests, POST /api/campaigns/:id/test.
  • Not counted as tests, but subject to the per-minute cap: GET /api/tests, GET /api/tests/:id, GET /api/tests/:id/stream, GET /api/me, every auth/DNS check endpoint.
  • Not counted at all: SPF, DKIM, DMARC lookups, DNSBL checks, Rspamd scoring of submitted content. These are basically free to run server-side so we do not bill for them.

Why SPF/DKIM/DMARC checks are not rate-limited

These endpoints do one DNS query each. A DNS query costs us roughly nothing — sub-millisecond from the resolver cache, microseconds when warm. Metering it would cost us more in accounting code than we would save in infrastructure. So we don't.

You can legitimately build a free SPF/DKIM/DMARC monitoring service on top of our API and never touch paid tiers. We know. That is fine. The interesting workloads are the placement tests, and those are the ones we price.

Concurrent streams

An SSE stream holds a server connection open for up to 10 minutes. Five concurrent streams on the free tier means you can have five tests running simultaneously with live event feeds. A sixth GET /api/tests/:id/stream request will receive a 429 with a Retry-After header.

If you are building a nightly monitor over 50 senders, do not open 50 SSE connections — iterate serially and close each one before opening the next. If you want realtime on a dashboard, consider polling instead; GET /api/tests/:id costs a single request-per-minute slot and is fine at a 10s polling interval.

Retention on the free tier

Thirty days of test history. Your test ID is queryable for 30 days after createdAt; after that the metadata is purged and the screenshot URLs 404. Upgrade to Starter for 12 months of retention or Growth for 24.

This matters if you are using tests as a historical record (for example, archiving placement trends). If you are, record the summary in your own database on the same day the test runs — it is a handful of columns and costs you nothing.

Upgrade thresholds

Three signals that you are about to outgrow free:

  1. You hit 429 Retry-After more than once a week. The per-minute ceiling is the first thing people outgrow.
  2. You need a historical trend longer than 30 days and you don't want to operate your own archive.
  3. You are exposing placement tests to more than a handful of tenants and your aggregate daily volume is over 50.

When any of these are true, Starter pays for itself in saved engineering time in the first week. The gap between Starter and Growth is less common to jump — most paid users sit on Starter for months before they need higher throughput.

Comparison with GlockApps free tier

For reference — this comparison is a frequent question in support. GlockApps offers 3 free placement tests on signup, total, not per month. After that you are paywalled. Our free tier gives you more tests in an afternoon than GlockApps gives you in a lifetime. We do this because placement data is a commodity; the actual value is in the monitoring, dashboards and alerting you build on top.

That said, GlockApps has features we do not — a reputation dashboard, bounce processing, seed lists in more regions. If those are what you need, it is the right tool. If you are a developer wiring up a monitor or a CI gate, start with us.

How we can afford this

Three reasons the free tier is the size it is:

  • Our seed mailboxes are self-operated, not third-party. Marginal cost per test is cents, not dollars.
  • Most free-tier users don't convert. We know this. The ones who do, convert decisively because they have already built their monitor on our API — switching cost is high for them and that means paying customers stick.
  • Content marketing works. Every free placement test is a hand- raise for a future deliverability conversation. We write these articles, you find us in search, you try the tool, everybody wins.
What happens when you hit the limit

A 429 Too Many Requests response with a Retry-After header telling you how many seconds to wait. No auto-upgrade. No "please add a payment method" modal. The request fails cleanly and you handle it like any other rate-limit signal. If it happens every day, you should upgrade; but nobody is going to charge you without your active consent.

Rate-limit headers on every response

Every response carries three headers you can read without guessing:

X-RateLimit-Limit:     60
X-RateLimit-Remaining: 42
X-RateLimit-Reset:     1751454060

The reset time is a Unix timestamp. Back off until then if Remaining is zero. The same three headers appear on the daily and monthly test counters (prefixed X-Tests-Daily-* and X-Tests-Monthly-*).

Frequently asked questions

Does the free tier require a credit card?

No. Signup takes an email and a password. A credit card is only captured when you upgrade. You will never be auto-upgraded or auto-charged without an explicit checkout flow.

Can I use the free tier commercially?

Yes. The free tier is usable for commercial projects — open-source CI pipelines, internal monitors, proof-of-concepts — as long as you stay within the numbers. SaaS integrations that expose placement to paying end-customers should move to Starter or above for fair-use reasons.

What if I need 51 tests on one specific day?

You will hit 429 on test 51 and can retry the next day. For a one-off spike, upgrade to Starter for the month — the prorated cost is a few dollars — and downgrade when you are done. There is no minimum term.

Are there IP-based rate limits on top of the per-key limits?

Yes, but only as an abuse protection. We cap anonymous requests from a single IP at 5 per minute, which matters only for unauthenticated endpoints. With a valid API key, the published per-key limits are the only ones you will hit in practice.
Related reading

Check your deliverability across 20+ providers

Gmail, Outlook, Yahoo, Mail.ru, Yandex, GMX, ProtonMail and more. Real inbox screenshots, SPF/DKIM/DMARC, spam engine verdicts. Free, no signup.

Run Free Test →

Unlimited tests · 20+ seed mailboxes · Live results · No account required