API review

QuickMail API review

Cold email + LinkedIn sequencer with unlimited senders and users, Deliverability AI, a GraphQL API v2 (Growth plan and up), webhooks (Agency plan only) and an official OAuth MCP server. Best for agencies wanting org-wide webhooks across client workspaces.

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

What a call costs

The actions you pay for, as QuickMail prices them.

ActionCostPer
Extra workspace (Agency)$49per workspace per month

Pricing, plan by plan

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

Free tier 14-day free trial with all features, limited to 100 imported leads and 100 emails per day; card required but no automatic subscription at trial end

Starter

$49/mo

billed monthly

1 workspace, 1,000 uploaded contacts, 5,000 emails/mo, unlimited senders/LinkedIn/users

No API

Growth

$99/mo

billed monthly

1 workspace, 25,000 uploaded contacts, 100,000 emails/mo; API

API included

Agency

$299/mo

billed monthly

2 workspaces (+$49 each extra), 100,000 uploaded contacts, 500,000 emails/mo; API + webhooks

API included
Plan details

+$49 per extra workspace

Rate limits

10 requests per 10 seconds, enforced per agency (MCP shares the same organization limit); X-RateLimit-Limit/Remaining/Reset (ISO8601) headers on every response; HTTP 429 when exceeded.

More on limitsLess

Batch mutations take 1..100 ids.

How to get an API key

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

  1. Create a QuickMail account. API access starts on the Growth plan.
  2. Agency accounts: Agency Dashboard -> Settings -> General -> Create API key. Team accounts: Settings -> Integrations -> API keys. API access must be enabled on the plan.
  3. Send it with every request: header (Authorization: <raw key>, NO 'Bearer ' prefix).
  4. Make a first call: Agency for the current API key. Keep the key in an environment variable, never in the command.
    curl -X POST "https://api.quickmail.com/v2/graphql  query agency" \
      -H "Authorization: $QUICKMAIL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationapi.quickmail.com/help
API referenceapi.quickmail.com/help
Base URLhttps://api.quickmail.com
MCP serverhttps://api.quickmail.com/mcp

Strengths and limits

Where it fits

  • Agencies wanting org-wide webhooks across client workspaces (Agency plan)
  • Teams that want unlimited users, email senders and LinkedIn accounts at a flat price
  • Combined email + LinkedIn steps built by API (connection, InMail, message, profile-visit steps)
  • Per-mailbox deliverability control via API (daily limit, Deliverability AI threshold, recovery period)

Where it falls short

  • Starter-plan accounts: no API, no MCP
  • High-throughput integrations: 10 requests per 10 seconds
  • Event webhooks below the $299 Agency plan
  • REST-only stacks: it is GraphQL only

Worth knowing

  • Authorization header takes the RAW key; adding 'Bearer ' breaks auth.
  • Rate limit is only 10 requests per 10 seconds per agency, and MCP calls draw on the same organization limit.
  • No API and no MCP on Starter ($49); API starts at Growth ($99).
  • Event webhooks are Agency-plan only ($299/mo); Growth must poll or use in-campaign webhook steps.
  • When plainText is true in an email mutation, openTracking and clickTracking must be false.
7 moreShow fewer
  • Creating a LinkedIn connection or InMail step silently creates a profile-visit step before it.
  • Stats: attributionType 'journey' counts a lead contacted on both channels twice; profile visits are not backfilled before tracking was enabled.
  • IDs are prefixed opaque strings (e.g. cmp_xxx); use exactly what the API returns.
  • Webhook requests carry no signing secret, HMAC or token; add your own secret query parameter to the endpoint URL to verify them.
  • The help article's Ruby samples post to https://api.quickmail.com/api/v2/graphql, but the API reference endpoint is https://api.quickmail.com/v2/graphql; use the reference URL.
  • Trial accounts are capped at 100 imported leads and 100 emails per day, so a trial cannot run a full campaign.
  • Salesforce is connected by BCC logging only; native 2-way CRM sync is HubSpot and Pipedrive.

Who should use it

Use QuickMail for
Agencies wanting org-wide webhooks across client workspaces (Agency plan)
Look elsewhere for
Starter-plan accounts: no API, no MCP

If QuickMail is not the answer

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

Before you build

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

  • Confirm the API is on your planAPI access starts on the Growth plan. Free tier: 14-day free trial with all features, limited to 100 imported leads and 100 emails per day.
  • Keep the key out of your codeAPI key. It is sent as: header (Authorization: <raw key>, NO 'Bearer ' prefix).
  • Design around the rate limit10 requests per 10 seconds, enforced per agency (MCP shares the same organization limit); X-RateLimit-Limit/Remaining/Reset (ISO8601) headers on every response; HTTP 429 when exceeded.
  • Know the catch before you scaleAuthorization header takes the RAW key; adding 'Bearer ' breaks auth.

Want us to build it for you?

Tell us what you want QuickMail 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 quickmail.com/pricing, api.quickmail.com/help and help.quickmail.com/integrations/setting-up-api-v2. Verified 25 Oct 2026.

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

Base URL: https://api.quickmail.com

Bulk and async: Lead mutations accept 1.100 ids per call; Relay-style pagination with first/after or skip.

Webhooks: Endpoint set at org level, enabled per workspace. Separate in-sequence 'webhook steps' fire only when a lead reaches the step. Events: first open, repeat open, first click, repeat click, first reply, repeat reply, bounce, unsubscribe, lead tagging, task completed, journey completed, journey checkpoint and 1 more

51 endpoints
MethodPathWhat it doesCost
POST/v2/graphql query agencyAgency for the current API keyNot stated
POST/v2/graphql query campaignFind a campaign by ID (with steps, stats, leadStatus)Not stated
POST/v2/graphql query campaignsList filterable campaignsNot stated
POST/v2/graphql query customPropertyFind a custom propertyNot stated
POST/v2/graphql query customPropertiesList custom propertiesNot stated
POST/v2/graphql query emailAccountFind an email accountNot stated
POST/v2/graphql query emailAccountsList email accountsNot stated
POST/v2/graphql query leadFind a leadNot stated
POST/v2/graphql query leadsList filterable leadsNot stated
POST/v2/graphql query opportunityRead an opportunity and its conversationNot stated
POST/v2/graphql query opportunitiesList opportunities, newest updated first (includes snoozed/archived)Not stated
POST/v2/graphql query tagFind a tagNot stated
POST/v2/graphql query tagsList tagsNot stated
POST/v2/graphql query workspaceFind a workspaceNot stated
POST/v2/graphql query workspacesList workspacesNot stated
POST/v2/graphql mutation replyToOpportunityReply by email or LinkedIn on the latest replyable activityNot stated
POST/v2/graphql mutation addEmailVariationCreate an email step variationNot stated
POST/v2/graphql mutation addLeadsToCampaignAdd leads to a campaignNot stated
POST/v2/graphql mutation cancelLeadsFromCampaignCancel leads in a campaignNot stated
POST/v2/graphql mutation removeLeadsFromCampaignRemove leads from a campaignNot stated
POST/v2/graphql mutation createCampaignCreate a campaignNot stated
POST/v2/graphql mutation duplicateCampaignDuplicate a campaignNot stated
POST/v2/graphql mutation createEmailStepCreate an email stepNot stated
POST/v2/graphql mutation createLinkedinConnectionStepCreate a LinkedIn connection step (auto-adds a profile visit step before it)Not stated
POST/v2/graphql mutation createLinkedinInmailStepCreate a LinkedIn InMail step (auto-adds profile visit)Not stated
POST/v2/graphql mutation createLinkedinMessageStepCreate a LinkedIn message stepNot stated
POST/v2/graphql mutation createLinkedinProfileVisitStepCreate a LinkedIn profile visit stepNot stated
POST/v2/graphql mutation createWaitStepCreate a wait stepNot stated
POST/v2/graphql mutation setCampaignEmailAccountsAssign/unassign email accounts to a campaignNot stated
POST/v2/graphql mutation renameCampaignRename a campaignNot stated
POST/v2/graphql mutation setCampaignEmailVerificationEnable/disable email verification for a campaignNot stated
POST/v2/graphql mutation updateCampaignAutomationUpdate campaign send-time automationNot stated
POST/v2/graphql mutation updateEmailStepUpdate an email step variationNot stated
POST/v2/graphql mutation updateLinkedinConnectionStepUpdate a LinkedIn connection step variationNot stated
POST/v2/graphql mutation updateLinkedinInmailStepUpdate a LinkedIn InMail step variationNot stated
POST/v2/graphql mutation updateLinkedinMessageStepUpdate a LinkedIn message step variationNot stated
POST/v2/graphql mutation updateLinkedinProfileVisitStepUpdate a profile visit step variationNot stated
POST/v2/graphql mutation updateWaitStepUpdate a wait step variationNot stated
POST/v2/graphql mutation renameEmailAccountChange sender nameNot stated
POST/v2/graphql mutation setEmailAccountDailySendingLimitSet inbox daily email limit (null/0 removes inbox limit; workspace quota still applies)Not stated