API review

Instantly API review

Cold-email sending platform with unlimited mailboxes and warmup, a scoped-key REST API v2 (255 operations in the spec), a hosted MCP server auto-generated from that spec (199 tools live on 2026-10-25), and a separate credits subscription for its 450M+ lead database and AI agents. Best for cheapest entry to API-driven cold email: API v2 is on every paid Outreach plan from Growth, and in our test it also worked on the 14-day free trial.

Verified 25 Oct 2026 · 255 endpoints listed · Official MCP server

What a call costs

The actions you pay for, as Instantly prices them.

ActionCostPer
Work email find (Lead Finder / enrichment)~1.5 (1-2) creditsper row
Fully enriched profile0.5 creditsper row
AI enrichment~0.5 creditsper row
Lead verification0.25 creditsper lead (measured 0.25 on our trial, 2026-10-25)
AI Reply Agent5 creditsper reply generated
AI Sales Agent5 creditsper lead generated
Pre-warmed Google account$10per month
Done-for-you Google account$5per month
Show all 17 priced actionsHide the rest
ActionCostPer
Domain (DFY / pre-warmed)$15per year
SuperSearch / Lead Finder count and preview (API)freeper call (measured; preview hides emails)
Company enrichment: job listings, technologies, news, funding type0.5 creditsper row, each
Engagement score1 creditper row
Website Visitors resolved profile3 creditsper resolved profile
Find Local Businesses2 creditsper business
Find Creators50 credits (+25 for audience insights)per creator
AI Recruiting / Investment / User Research / Partnership agents5 creditsper lead generated
Instantly AirMail email account$4per month

Pricing, plan by plan

US dollars, as Instantly's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier 14-day free trial, no card. Docs: 250 uploaded contacts, 1,000 emails, 100 credits, no API.

Outreach Growth

$47/mo

billed monthly

$37.60/mo

billed annually

5,000 emails/mo, 1,000 uploaded contacts (fixed, does not reset monthly); Unibox preview-only (reply from Unibox needs Hypergrowth)

API included
Plan details

no overage; upgrade tier

Outreach Hypergrowth

$97/mo

billed monthly

$77.60/mo

billed annually

125,000 emails/mo, 25,000 uploaded contacts; webhooks, subsequences, workspaces

API included
Plan details

add-on $87/mo per +25,000 uploaded contacts / +125,000 emails / +500 SMTP accounts in the standard warmup pool; stackable; removal via support

Outreach Light Speed

$358/mo

billed monthly

$286.30/mo

billed annually

500,000 emails/mo, 100,000 uploaded contacts, SISR private servers/IPs

API included
Plan details

add-on $87/mo per +25,000 contacts / +125,000 emails (stackable)

Outreach Enterprise

Custom quote

500,000+ emails, 100,000+ contacts, private deliverability network

API included
Plan details

custom

Credits Nano

$9/mo

billed monthly

$9/mo

monthly billing only

150 credits/mo

Credits Growth

$47/mo

billed monthly

$42.30/mo

billed annually

1,500 credits/mo at $47; 2,000 credits/mo at $77 ('Growth credits 2')

Show all 15 plansShow fewer plans

Credits Supersonic

$97/mo

billed monthly

$87.30/mo

billed annually

5,000 credits/mo at $97; 7,500 credits/mo at $147 ('Supersonic credits 2')

Hyper Credits

$197/mo

billed monthly

$177.30/mo

billed annually

tiers: $197 = 10,000; $300 = 20,000; $500 = 45,000; $997 = 100,000; $1,400 = 150,000; $1,700 = 200,000 credits/mo

Plan details

Credits add-on $425/mo for +50,000

Bundle Starter (Growth + Growth Credits 1,500)

$94/mo

billed monthly

$85/mo

billed annually

5,000 emails/mo, 1,000 uploaded contacts, 1,500 credits/mo

API included

Bundle Scale (app: Hyper Growth + Hyper Credits 10,000)

$294/mo

billed monthly

$265/mo

billed annually

125,000 emails/mo, 25,000 uploaded contacts, 10,000 credits/mo

API included

Bundle Agency (app: Light Speed + Hyper Credits Tier 3, 45,000)

$858/mo

billed monthly

$772/mo

billed annually

500,000 emails/mo, 100,000 uploaded contacts, 45,000 credits/mo, SISR

API included

Add-on Growth CRM

$47/mo

billed monthly

$47/mo

monthly billing only

AI CRM: emails, calls, SMS, tasks, LinkedIn connections

Add-on Hyper CRM

$97/mo

billed monthly

$97/mo

monthly billing only

Growth CRM + calling and SMS (the app's Calls & SMS page says 'Subscribe to the Hyper CRM plan')

Add-on Growth Inbox Placement

$47/mo

billed monthly

$47/mo

monthly billing only

unlimited one-time inbox-placement tests

Add-on Hypergrowth Inbox Placement

$97/mo

billed monthly

$97/mo

monthly billing only

unlimited one-time and automated tests

Rate limits

Shared by API v1 and v2 across the whole workspace, even with multiple keys: max 100 requests/second and 6,000 requests/minute; exceeding either returns 429.

More on limitsLess

Several endpoints have stricter limits (emails list 20/min, test email 10/min, OAuth init 75/min/workspace). Our trial calls returned no rate-limit headers on any response, so you cannot read the remaining budget from headers.

How to get an API key

Instantly uses API key. The steps below follow Instantly's own docs.

  1. Create a Instantly account. API access starts on the Outreach Growth plan.
  2. Settings -> Integrations -> API Keys (Version 2) -> Create API Key: name + scopes (the in-app picker listed 128 scopes, all:* and per-resource:all/:create/:read/:update/:delete; scopes cannot be changed after creation). Shown once, unrecoverable (GET /api/v2/api-keys returns key: ""). v2 keys differ from v1 keys.
  3. Send it with every request: header: Authorization: Bearer <key>.
  4. Make a first call: Get campaigns associated with an email, Requires one of the following scopes: account_campaign_mappings:read, account_campaign_mappings:all, all:read, all:all. Keep the key in an environment variable, never in the command.
    curl -X GET "https://api.instantly.ai/api/v2/account-campaign-mappings/{email}" \
      -H "Authorization: Bearer $INSTANTLY_API_KEY"

Where the docs live

WhatWhere
Documentationdeveloper.instantly.ai/index.md
API referencedeveloper.instantly.ai/api-reference/introduction.md
OpenAPI specapi.instantly.ai/openapi/api_v2.json
llms.txtdeveloper.instantly.ai/llms.txt
Changelogfeedback.instantly.ai/changelog
Base URLhttps://api.instantly.ai
MCP serverhttps://mcp.instantly.ai/mcp
SDKs@instantlyai/sdk (TypeScript, beta, Node 22+), @instantlyai/cli (npm, includes local MCP via `instantly mcp`)

Strengths and limits

Where it fits

  • Cheapest entry to API-driven cold email: API v2 is on every paid Outreach plan from Growth ($47/mo), and in our test it also worked on the 14-day free trial
  • Agents and LLM tooling: hosted MCP at mcp.instantly.ai (199 tools in tools/list on 2026-10-25; docs say 'every v2 endpoint'), plus an npm CLI with a local MCP
  • Least-privilege integrations: per-key scopes (e.g. campaigns:read, leads:all)
  • Programmatic mailbox provisioning: OAuth connect flows and done-for-you account/domain orders via API

Where it falls short

  • Webhook-driven reply capture on the Growth plan: help center and pricing gate webhooks to Hypergrowth ($97/mo) and above (the Webhooks tab still shows 'Add Webhook' on the free trial; creating one was not tested)
  • Reselling or building data products from enriched/visitor data: the terms ban any 'Data Resale Activity'
  • Polling the email/inbox list heavily: GET /api/v2/emails is capped at 20 requests/minute

Worth knowing

  • API v1 was deprecated on 19 Jan 2026; v2 needs a NEW key, v1 keys do not work on v2.
  • Help center and pricing say API is on every paid plan but not on the free trial; in our 2026-10-25 trial, API keys and v2 calls worked on plan pid_free. Webhooks and Slack are gated to Hypergrowth ($97/mo) in the docs.
  • Rate limit is per WORKSPACE, shared across all keys and across v1+v2, so a Zapier zap on v1 eats your v2 budget.
  • GET /api/v2/emails (reply/inbox polling) is limited to 20 req/min, far below the 6,000/min headline.
  • Credits are a SEPARATE subscription from Outreach; unused credits expire after 2 months on monthly plans, 1 year on annual.
10 moreShow fewer
  • No overage billing: hitting the email or uploaded-contact cap means upgrading or buying the $87 add-on, which only exists on Hypergrowth and above.
  • Webhooks auto-disable on delivery failures (status -1) with no published retry schedule; watch the status field and use the resume endpoint.
  • Terms prohibit any Data Resale Activity, including data enriched or verified through Instantly.
  • Custom reply labels are sent as the webhook event_type verbatim, so a receiver keyed on fixed event names will miss them.
  • API key is shown once and cannot be recovered.
  • Webhook event names in the developer guide are wrong for the API: use email_link_clicked (not link_clicked); auto_reply_received is not in the spec enum or the live event list.
  • MCP header auth returned 504 in our 2026-10-25 test while the URL-path key worked; if header auth fails, it is the server, not your key.
  • Bundle prices on the public pricing page (Scale $194, Agency $555) do not match the in-app Bundles tab (Scale $294/$265 annual with 10k credits, Agency $858/$772 with 45k credits); check the app before quoting.
  • No rate-limit headers are returned, so throttle client-side to 100 req/s and 6,000 req/min per workspace.
  • Campaigns now live under 'Engage' (/app/engage) in the app; clicking 'Cold Outreach Campaign' immediately creates a Draft campaign.

Who should use it

Use Instantly for
Cheapest entry to API-driven cold email: API v2 is on every paid Outreach plan from Growth ($47/mo), and in our test it also worked on the 14-day free trial
Look elsewhere for
Webhook-driven reply capture on the Growth plan: help center and pricing gate webhooks to Hypergrowth ($97/mo) and above (the Webhooks tab still shows 'Add Webhook' on the free trial; creating one was not tested)

If Instantly is not the answer

Other Email sending tools in this directory, each with its own review.

Compare Instantly with

Before you build

Four things to settle first, each read off Instantly's own pages.

  • Confirm the API is on your planAPI access starts on the Outreach Growth plan. Free tier: 14-day free trial, no card.
  • Keep the key out of your codeAPI key. It is sent as: header: Authorization: Bearer <key>.
  • Design around the rate limitShared by API v1 and v2 across the whole workspace, even with multiple keys: max 100 requests/second and 6,000 requests/minute; exceeding either returns 429.
  • Know the catch before you scaleAPI v1 was deprecated on 19 Jan 2026; v2 needs a NEW key, v1 keys do not work on v2.

Want us to build it for you?

Tell us what you want Instantly to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from instantly.ai/pricing.md, developer.instantly.ai/api-reference/introduction.md and developer.instantly.ai/getting-started/rate-limit.md. Verified 25 Oct 2026.

All 255 endpointsFor developers: method, path, what it does and what it costs.

Base URL: api.instantly.ai

Bulk and async: POST /api/v2/leads/add takes up to 1,000 leads per call; moves and warmup toggles run as background jobs polled via GET /api/v2/background-jobs/{id}.

Webhooks: Events: all_events, email_sent, email_opened, email_link_clicked, reply_received, email_bounced, lead_unsubscribed, campaign_completed, account_error, lead_neutral, lead_interested, lead_not_interested and 8 more. Retries: Webhook object carries status -1 = disabled due to delivery failures, plus a disabled timestamp; a resume endpoint and webhook-event logs exist. Retry schedule not documented.

255 endpoints
MethodPathWhat it doesCost
GET/api/v2/account-campaign-mappings/{email}Get campaigns associated with an email, Requires one of the following scopes: `account_campaign_mappings:read`, `account_campaign_mappings:all`, `all:read`, `all:all`Not stated
POST/api/v2/accountsCreate account, Requires one of the following scopes: `accounts:create`, `accounts:all`, `all:create`, `all:all`Not stated
GET/api/v2/accountsList account, Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`Not stated
GET/api/v2/accounts/{email}Get account, Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`Not stated
PATCH/api/v2/accounts/{email}Patch account, Requires one of the following scopes: `accounts:update`, `accounts:all`, `all:update`, `all:all`Not stated
DELETE/api/v2/accounts/{email}Delete account, Requires one of the following scopes: `accounts:delete`, `accounts:all`, `all:delete`, `all:all`Not stated
POSTasync/api/v2/accounts/warmup/enableEnable warmup for accounts, Initiates a background job to enable warmup for the specified accounts. The response will contain the initial background job object. You can monitor the job's progress by polling the `GET: /api/v2/bacNot stated
POSTasync/api/v2/accounts/warmup/disableDisable warmup for accounts, Initiates a background job to disable warmup for the specified accounts. The response will contain the initial background job object. You can monitor the job's progress by polling the `GET: /api/v2/baNot stated
POST/api/v2/accounts/warmup-analyticsGet warmup analytics, Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`Not stated
GET/api/v2/accounts/analytics/dailyGet daily account analytics, Get daily account analytics showing the number of emails sent per day for each email account. Useful for tracking daily sending activity across your accounts.Not stated
POST/api/v2/accounts/pausePause multiple accounts, Pauses up to 100 email accounts in the authenticated workspace. Each unique email is returned in either `paused_emails` or `failed_emails`. Requires one of the following scopes: `accounts:update`, `Not stated
POST/api/v2/accounts/{email}/pausePause an account, Requires one of the following scopes: `accounts:update`, `accounts:all`, `all:update`, `all:all`Not stated
POST/api/v2/accounts/{email}/resumeResume a paused account, Requires one of the following scopes: `accounts:update`, `accounts:all`, `all:update`, `all:all`Not stated
POST/api/v2/accounts/{email}/mark-fixedMark an account as fixed, Sets the account to active and clears leftover error metadata such as status_message. Idempotent when the account is already active. Requires one of the following scopes: `accounts:update`, `accountNot stated
GET/api/v2/accounts/ctd/statusGet custom tracking domain status, Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`Not stated
POST/api/v2/accounts/test/vitalsTest account vitals, Requires one of the following scopes: `accounts:read`, `accounts:all`, `all:read`, `all:all`Not stated
POST/api/v2/accounts/moveMove accounts between workspaces, Move accounts between workspaces. IMPORTANT: this endpoint should be called ONLY with an ADMIN workspace API key, and bNot stated
GET/api/v2/agent-itemsList AI agent items, Requires one of the following scopes: `all:read`, `all:all`Not stated
POST/api/v2/agent-items/bulk-deleteBulk delete AI agent items, Requires one of the following scopes: `all:delete`, `all:all`Not stated
POST/api/v2/api-keysCreate api key, Requires one of the following scopes: `api_keys:create`, `api_keys:all`, `all:create`, `all:all`Not stated
GET/api/v2/api-keysList api key, Requires one of the following scopes: `api_keys:read`, `api_keys:all`, `all:read`, `all:all`Not stated
DELETE/api/v2/api-keys/{id}Delete api key, Requires one of the following scopes: `api_keys:delete`, `api_keys:all`, `all:delete`, `all:all`Not stated
GET/api/v2/audit-logsList audit log, Requires one of the following scopes: `audit_logs:read`, `audit_logs:all`, `all:read`, `all:all`Not stated
GET/api/v2/background-jobsList background job, Requires one of the following scopes: `background-jobs:read`, `background-jobs:all`, `all:read`, `all:all`Not stated
GET/api/v2/background-jobs/{id}Get background job, Requires one of the following scopes: `background-jobs:read`, `background-jobs:all`, `all:read`, `all:all`Not stated
POST/api/v2/block-lists-entriesCreate block list entry, Requires one of the following scopes: `block_list_entries:create`, `block_list_entries:all`, `all:create`, `all:all`Not stated
GET/api/v2/block-lists-entriesList block list entry, Requires one of the following scopes: `block_list_entries:read`, `block_list_entries:all`, `all:read`, `all:all`Not stated
DELETE/api/v2/block-lists-entriesDelete all block list entries, Requires one of the following scopes: `block_list_entries:delete`, `block_list_entries:all`, `all:delete`, `all:all`Not stated
GET/api/v2/block-lists-entries/{id}Get block list entry, Requires one of the following scopes: `block_list_entries:read`, `block_list_entries:all`, `all:read`, `all:all`Not stated
PATCH/api/v2/block-lists-entries/{id}Patch block list entry, Requires one of the following scopes: `block_list_entries:update`, `block_list_entries:all`, `all:update`, `all:all`Not stated
DELETE/api/v2/block-lists-entries/{id}Delete block list entry, Requires one of the following scopes: `block_list_entries:delete`, `block_list_entries:all`, `all:delete`, `all:all`Not stated
POST/api/v2/block-lists-entries/bulk-createBulk create block list entry, Requires one of the following scopes: `block_list_entries:create`, `block_list_entries:all`, `all:create`, `all:all`Not stated
POST/api/v2/block-lists-entries/bulk-deleteBulk delete block list entry, Requires one of the following scopes: `block_list_entries:delete`, `block_list_entries:all`, `all:delete`, `all:all`Not stated
GET/api/v2/block-lists-entries/downloadDownload all block list entries as CSV, Requires one of the following scopes: `block_list_entries:read`, `block_list_entries:all`, `all:read`, `all:all`Not stated
POST/api/v2/campaignsCreate campaign, Requires one of the following scopes: `campaigns:create`, `campaigns:all`, `all:create`, `all:all`Not stated
GET/api/v2/campaignsList campaign, Requires one of the following scopes: `campaigns:read`, `campaigns:all`, `all:read`, `all:all`Not stated
POST/api/v2/campaigns/{id}/activateActivate(start), or resume a campaign, Requires one of the following scopes: `campaigns:update`, `campaigns:all`, `all:update`, `all:all`Not stated
POST/api/v2/campaigns/{id}/pauseStop(or pause) a campaign, Requires one of the following scopes: `campaigns:update`, `campaigns:all`, `all:update`, `all:all`Not stated
GET/api/v2/campaigns/{id}Get campaign, Requires one of the following scopes: `campaigns:read`, `campaigns:all`, `all:read`, `all:all`Not stated
PATCH/api/v2/campaigns/{id}Patch campaign, Requires one of the following scopes: `campaigns:update`, `campaigns:all`, `all:update`, `all:all`Not stated