Cold Email Infrastructure

    The Emailable API: Rate Limits, Batch Behaviour, and What to Cache

    Emailable stops returning per-address results five days after a large batch finishes. That one documented behaviour decides the shape of any integration worth building.

    August 12, 20267 min read
    Share:
    The short answer

    The Emailable API verifies single addresses and batches of up to 50,000 from api.emailable.com/v1. Published rate limits are 25 requests per second on verify and 5 per second on batch and account. Per-address batch results are dropped after five or thirty days, so integrations must store verdicts themselves.

    Key takeaways

    • Rate limits are published per endpoint: 25 requests per second on verify, 5 per second on batch and account, with custom limits for enterprise accounts.
    • Batches take up to 50,000 addresses, and callback results are retried hourly for up to three days until your endpoint returns a 200, so the receiver must be idempotent.
    • Per-address results leave the API after 30 days for batches up to 1,000 addresses and after 5 days for larger ones, leaving aggregate counts only.
    • The documentation warns that disabling the SMTP step significantly reduces accuracy and that disabling retries increases unknown results, so both defaults are worth keeping.

    Reviewed and updated August 12, 2026

    The Emailable API: Rate Limits, Batch Behaviour, and What to Cache

    Emailable's batch endpoint stops returning your per-address results five days after a large batch finishes. Batches of a thousand addresses or fewer keep theirs for thirty days. After those windows the API returns aggregate counts only, and the individual verdicts you paid for are gone from the response.

    That single documented behaviour decides the architecture of any integration worth building. You are not calling a verification API and reading the answer. You are calling it, storing the answer somewhere you control, and treating the vendor's copy as a cache that expires.

    Here is what the API publishes, checked against Emailable's own documentation in August 2026.

    The basics

    The base URL is https://api.emailable.com/v1/. Authentication is an API key passed as a URL parameter or as POST data, or an OAuth access token. Emailable's documentation describes two key types, one of which is meant for contexts where the key will be exposed publicly, such as JavaScript running in a browser, and that path pairs with a captcha response parameter.

    Official client libraries exist for Ruby, Node.js and Python, all published under the vendor's own GitHub organisation. The documented endpoints are small in number: verify a single address, create a batch, check a batch, and read your account.

    1. Step 1POST /v1/batch

      Up to 50,000 comma-separated addresses, optionally with a callback URL

    2. Step 2Wait for the callback

      Results are POSTed to your URL on completion; a non-200 response is retried hourly

    3. Step 3GET /v1/batch

      Poll by batch id if you did not supply a callback, or to read progress

    4. Step 4Store the verdicts

      Per-address results leave the API after 5 or 30 days depending on batch size

    The documented call sequence for bulk verification through the Emailable API, and the point at which your own storage has to take over.

    Rate limits, published per endpoint

    Emailable publishes its rate limits rather than gating them behind support, which is less common than it should be.

    Standard accounts get 25 requests per second on /v1/verify, 5 per second on /v1/batch, and 5 per second on /v1/account. Enterprise accounts are documented as custom, and the docs say higher limits may be requested.

    Rate-limited responses carry headers describing the window: ratelimit-limit for the maximum requests allowed in the current window, ratelimit-remaining for how many are left, and ratelimit-reset for the timestamp when the window resets. Exceeding the limit returns a 429 with the message "Rate Limit Exceeded".

    The practical read: single verification is generous and batch creation is deliberately not. Twenty-five per second on the single endpoint is enough for form-time validation at real traffic. Five per second on batch creation is a strong hint that the vendor expects you to send large batches rather than many small ones, which is also the cheaper way to use it.

    The parameters that trade accuracy for latency

    Three documented parameters on the single-verify endpoint change what you get, and two of them carry warnings from the vendor.

    smtp defaults to true. Emailable's documentation says the SMTP step takes up the majority of the response time and that disabling it will significantly decrease verification accuracy. That is the vendor telling you not to turn off the only check that confirms a mailbox exists. Leave it on.

    accept_all defaults to false, and the docs note it heavily impacts response time. This is the check that tries to resolve whether a catch-all domain can be pinned down to a concrete verdict, so for B2B lists it is the parameter that decides whether your enterprise contacts come back usable or come back labelled Risky.

    timeout accepts a minimum of 2 seconds, a maximum of 10, and defaults to 5. Alongside it, the documentation states that if a verification takes longer than the timeout you may retry the request for up to five minutes without it counting again against your usage, and that after five minutes further requests do count. A slow verification also returns a 249 status code with a message asking you to send the request again.

    On the batch endpoint, retries defaults to true and automatically retries verification when certain mail-server responses come back. The docs are explicit that disabling it speeds things up and may increase the number of unknown responses, which for a B2B list means more addresses you cannot act on. Greylisting is exactly the behaviour those retries exist to survive.

    Batch is the endpoint you actually want

    The batch endpoint documentation states that up to 50,000 addresses can be sent per batch, comma-separated, with larger batches available to enterprise accounts on request. The data can be form-encoded, multipart, or JSON, and the docs are firm that parameters belong in the request body rather than the query string.

    Supply a url and Emailable POSTs the results to it when the batch completes, with a body identical to the batch status response. The retry behaviour on that callback is worth designing for: if your endpoint returns anything other than a 200, the results will continue to be sent hourly until a 200 comes back or until three days have passed since the batch finished verifying. Three days of hourly retries is a generous window, and it is also a duplicate-delivery guarantee rather than an exactly-once one, so make the receiver idempotent and key it on the batch id.

    response_fields lets you narrow the payload to the attributes you want, from a documented list that includes state, reason, score, accept_all, disposable, role, free, mailbox_full, did_you_mean, mx_record, smtp_provider and the name-guess fields. Partial results while a batch is still running are available only for batches of up to 1,000 addresses.

    What to cache, and why the retention windows force it

    Store every verdict you receive, keyed by address, with the timestamp of the verification. The reasons stack up quickly.

    The API drops per-address results after five days for batches over a thousand and after thirty days for batches at or below it. A verdict you did not persist is a verdict you will pay to obtain again.

    Duplicate detection is list-scoped rather than account-scoped. Emailable's documentation says duplicates are identified within a single uploaded list, and that the same address appearing in two separate lists is treated as two separate addresses. Your own store is therefore the only place that can stop you paying twice for the same contact across two campaigns.

    Verdicts decay. A mailbox confirmed today can be closed next quarter, so cache with an age and re-verify close to send rather than trusting an old row. The same caching questions come up with any credit-metered enrichment API, and the pattern is the one described for the Apollo.io API: store the result, store the cost, and never let a retry loop pay twice for an answer you already have.

    Cache the reason alongside the state, not just the state. A timeout and a no_connect are both Unknown, and only one of them is worth retrying tomorrow.

    Watch the balance from the same code that spends it. The documented /v1/account endpoint returns account information including remaining credits, which is the cheapest way to stop a batch job discovering mid-run that it cannot pay for the rest of the list. Read it before a large batch rather than after a failure, and alert on it rather than on the invoice, since a batch that stalls on credits is a launch that slips by a day.

    Integration decisions the documentation actually forces
    • Yes: Persist every verdict with its timestamp before you act on it
    • Yes: Make the batch callback receiver idempotent, since retries run hourly for up to 3 days
    • Yes: Keep smtp enabled, since the vendor says disabling it significantly reduces accuracy
    • Yes: Enable the accept-all check on B2B lists and budget the extra response time
    • No: Do not disable retries to speed up a batch, since the documented cost is more unknowns
    The integration decisions Emailable's own documentation forces on you, drawn from its published parameter defaults and retention windows.

    Verifying addresses on your own forms

    The widget is the same meter as everything else. Emailable prices Bulk, Verifier, API and Widget identically at one credit per verification, so validating an address at the moment somebody types it into a signup or demo-request form costs exactly what checking it in a monthly list clean would.

    That equal pricing is what makes point-of-capture validation worth wiring up. Catching a typo while the person is still on the page fixes the record at the only moment the person can confirm it, and the did_you_mean attribute exists for precisely that case, returning a suggested correction for a common misspelling. The alternative is discovering the typo weeks later in a bounce report, when nobody is around to fix it.

    If you are integrating through the API rather than the drop-in widget, the public key type and captcha parameter described in the authentication docs are the documented path for browser-side calls, since a standard key in client-side JavaScript is a key you have published.

    Where this sits in an outbound stack

    An API integration only earns its complexity if the verdicts change what gets sent. Ours do: addresses that come back unresolved are held rather than mailed, and volume is replaced by sourcing more contacts we can confirm rather than by relaxing the gate. We send one message per campaign, never a bump or a thread reply, and a contact nobody can evidence is a contact we re-source.

    Wire the verdict into the upload boundary, not into a report. A verification result that arrives in a dashboard nobody reads before launch has cost credits and prevented nothing, and the bounce rate benchmarks that follow are the number the gate exists to protect. The comparison of how the different vendors in this category handle the hard cases sits in our email verification tools breakdown, and the role-based address question is worth settling in the same pass, since the API flags those separately and the right policy differs by ICP.

    Want the verification gate built into a campaign rather than bolted onto one? Get a free campaign plan and we will show you where it sits in the build.

    Pricing and features verified as of August 2026. Verify current terms with the vendor before relying on them.

    Questions

    Frequently asked questions.

    Frequently asked questions
    What are the Emailable API rate limits?
    The documentation publishes them per endpoint. Standard accounts get 25 requests per second on the verify endpoint and 5 per second on both the batch and account endpoints, with enterprise limits described as custom. Exceeding a limit returns a 429, and responses carry headers giving the limit, the remaining requests and the reset timestamp.
    How many emails can one Emailable batch hold?
    Up to 50,000 addresses per batch, sent as a comma-separated list in the request body rather than the query string, with larger batches available to enterprise accounts on request. Partial results while a batch is still processing are only offered for batches of up to 1,000 addresses.
    How long does Emailable keep my verification results?
    For batches up to 1,000 addresses the individual results stop being returned after 30 days. For batches over 1,000 the downloadable results file stops being returned after 5 days. In both cases the endpoint continues to return aggregate counts, so anything you need per address has to be stored on your side.
    Should I turn off the SMTP check to make verification faster?
    The documentation advises against it in its own words, saying the SMTP step takes the majority of the response time and that disabling it will significantly decrease verification accuracy. That step is the one that confirms a mailbox exists, so turning it off removes the reason to run verification at all.
    Email VerificationCold Email InfrastructureAPIIntegrationsData Quality
    Byline

    About the author.

    Tim Carden

    Tim Carden is CMO / CTO at RevenueFlow, which builds and operates outbound revenue engines for B2B companies. Studied at McGill University.

    Tim Carden · CMO / CTO

    Connect on LinkedIn →
    Your next move

    Ready to scale your outreach?

    We build GTM engines that book real meetings. See the receipts.

    Further reading

    Related articles.

    Cold Email Infrastructure

    Emailable Review: What emailable.com Verifies, What It Costs, and Where It Fits

    Emailable returns five verdicts and only one is a straight yes. Read against its own documentation: the states, the accept-all logic, and what the guarantee covers.

    7 min readRead →
    Cold Email Infrastructure

    Emailable Pricing: What One Credit Buys and Which Price the Page Shows You

    Emailable's calculator opens on $38 for 5,000 credits and a toggle turns that into $32.30. Both are on the page, and only one is the price a visitor sees first.

    7 min readRead →
    Cold Email Infrastructure

    INKY Spam Filter: Diagnosing Placement Without Guesswork

    INKY delivers your message and inserts a coloured warning frame above it. The sender problem here is the framing of the first impression, not the delivery.

    7 min readRead →
    Cold Email Infrastructure

    SMTP Server Software: What Running Your Own Actually Costs

    Postfix, Exim and hMailServer are free downloads. The cost is the IP address, its history, reverse DNS, TLS, blocklist delisting and reputation from zero.

    7 min readRead →
    Cold Email Infrastructure

    SMTP Server: What Breaks First When You Scale Sends

    Four different things get called an SMTP server, and each one fails differently at volume. The limits that appear between 1,000 and 10,000 sends a day.

    7 min readRead →
    Cold Email Infrastructure

    Sender Reputation Check for B2B Teams: Which Surfaces Can Actually See You

    Most sender reputation tools score an IP address, and if you send from Google Workspace that IP is not yours. Which layer you actually control.

    7 min readRead →