Developers

The cold email API for automating outbound at scale

Create leads, launch campaigns and react to replies from your own code. The Emailchaser API is a simple REST API with Bearer authentication, webhooks and scoped keys — so your product, CRM and no-code tools can run cold outreach for you.

add-leads.sh
$ curl -X POST /r/leads
-H "Authorization: Bearer run_••••"
-d '{
"campaignId": 123,
"leads": [{ "email": "jane@acme.com" }]
}'
← 200 OK
{ "count": 1, "message": "leads added" }
16REST endpoints
1,000leads per request
6webhook events
600requests / minute

Emailchaser is all-in-one cold email software, and the API puts its outbound engine in your code. Authenticate with a workspace-scoped API key, then manage campaigns — launch, pause, reschedule and update settings — push leads, monitor your sender email accounts and subscribe to events like replies and bounces via webhooks. The full endpoint reference, request schemas and a Postman collection live in the API documentation.

If you'd rather talk to your outbound than code against it, the same API powers the Emailchaser MCP server, which connects AI agents like Claude Code directly to your workspace.

How the API fits into your stack

Your app, CRM or no-code tool sends authenticated HTTPS requests to the REST API, which acts on the campaigns, leads and inboxes in your workspace — and posts webhooks back the moment prospects reply.

Your stackApp · CRM · Clay · MakeHTTPSBearer keyEmailchaser APIapi.emailchaser.com/rREST · JSONYour workspaceCampaigns · Leads · InboxesWebhooks: replies · bounces · status changes

What you can build with the Emailchaser API

Push leads from anywhere

Add up to 1,000 leads to a campaign in a single request — from your CRM, your product's waitlist, a Clay table or a Make scenario — and let automated follow-ups take over.

Control campaigns from your own stack

Launch, pause, reschedule or update campaigns programmatically, so outbound reacts to what happens in your product or pipeline instead of waiting for someone to log in.

React to replies in real time

Register webhooks for events like email replies, bounces and campaign status changes, and route them to your CRM, Slack or data warehouse the moment they happen.

Run outbound for every client

Agencies can script lead uploads, campaign launches and reporting across client workspaces, with a separate scoped API key per workspace that can be revoked at any time.

Monitor your sending infrastructure

List the sender email accounts connected to a workspace and check their status programmatically, so disconnected inboxes never silently stall a campaign.

Give AI agents a safe way in

Prefer natural language over HTTP calls? The same API keys power our MCP server, which lets Claude Code, Cursor and other AI agents manage campaigns with scoped, revocable access.

Make your first API call in minutes

Create a key, list your campaigns, then push leads in — automated follow-ups take it from there.

1

Create your free Emailchaser account, then open Settings → Integrations & API and click “Create API key”. Pick a read-only or read & write scope — the full key is shown once, so store it securely.

2

Authenticate every request by sending your key in the Authorization header as a Bearer token. List your campaigns to grab a campaign ID.

list-campaigns.sh
curl https://api.emailchaser.com/r/campaigns \
-H "Authorization: Bearer YOUR_API_KEY"
3

Add leads — up to 1,000 per request — straight into that campaign, and automated follow-ups take it from there.

cURL · add leads
curl -X POST https://api.emailchaser.com/r/leads \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaignId": 123,
"leads": [
{ "email": "jane@acme.com", "firstName": "Jane", "company": "Acme" }
]
}'

API endpoints

Sixteen endpoints across campaigns, leads, sender emails and webhooks. The base URL is https://api.emailchaser.com/r and every endpoint returns JSON.

Campaigns
GET/campaignsList campaigns with status filters and pagination
GET/campaigns/{id}Get a campaign with settings, schedule and stats
PUT/campaigns/{id}Update campaign settings and sending limits
POST/campaigns/{id}/launchLaunch a new campaign or resume a paused one
POST/campaigns/{id}/pausePause a running campaign
PUT/campaigns/{id}/scheduleUpdate timezone, sending days and time windows
DELETE/campaigns/{id}Delete a campaign and its data
Leads
POST/leadsCreate or update up to 1,000 leads, optionally adding them to a campaign
GET/leads/{id}Get a lead's contact and company details
PUT/leads/{id}Update a lead
DELETE/leads/{id}Delete a lead
Sender emails
GET/sender-emailsList connected sender email accounts
GET/sender-emails/{id}Get a sender email account
Webhooks
GET/webhooksList registered webhooks
POST/webhooksRegister a webhook for an event type
DELETE/webhooks/{id}Delete a webhook

See the full API reference for request and response schemas, pagination and error codes.

Real-time webhooks

Register a webhook for any of six event types and Emailchaser sends a POST to your URL the instant it happens — so your CRM, Slack and data warehouse stay in sync without polling.

EmailSent

Fires when a campaign sends an email, so you can log every touch in your own system.

EmailReply

Fires the moment a prospect replies — route hot leads straight to your CRM or Slack.

EmailBounce

Fires when an email bounces, so you can suppress bad addresses and protect deliverability.

LeadCreated

Fires when a lead is added to your workspace, whether by the API, an import or the app.

LeadCategoryUpdate

Fires when a lead's category changes — for example from contacted to interested.

CampaignStatusChanged

Fires when a campaign is launched, paused or completed, to keep dashboards in sync.

Built for developers

Bearer authentication

Send your key in the Authorization header as “Bearer YOUR_API_KEY”. There's nothing else to configure.

Scoped, revocable keys

Create read-only or read & write keys per workspace, and revoke any key instantly from your settings.

Predictable rate limits

100 requests per 10 seconds and 600 per 60 seconds per account, with a clear 429 when you exceed them.

Idempotent lead upserts

POST /leads matches on email address and updates existing leads instead of creating duplicates.

Consistent JSON

Every endpoint speaks JSON with standard HTTP status codes and clear error messages.

Real-time webhooks

Subscribe to six event types and receive a POST to your endpoint the moment something happens.

Integrations & no-code

Don't want to write code? Connect Emailchaser to the tools you already use, or let an AI agent drive it for you.

Make

Build no-code automations with the native Make integration — trigger campaigns and sync leads visually.

View on Make

Clay

Push enriched leads from a Clay table straight into an Emailchaser campaign with the Clay integration.

View on Clay

MCP server

Let AI agents like Claude Code and Cursor run outbound in natural language through the Emailchaser MCP server.

Explore the MCP server

Cold email API FAQ

What is a cold email API?

A cold email API lets your own software create and control cold outreach programmatically instead of through a dashboard. With the Emailchaser API you can add leads to campaigns, launch or pause sending, update schedules and receive webhooks when prospects reply — all over simple, authenticated HTTPS requests.

How do I get an Emailchaser API key?

Create a free Emailchaser account, then go to Settings → Integrations & API and click Create API key. You choose a read-only or read & write scope when creating the key, and the full key is shown once — store it securely. Keys can be revoked at any time.

How does authentication work?

Every request is authenticated with a Bearer token: send your API key in the Authorization header as 'Bearer YOUR_API_KEY'. Keys are scoped to one workspace, so a key can only ever read or change data in the workspace it was created in.

What are the API rate limits?

The API allows 100 requests per 10 seconds and 600 requests per 60 seconds per account, enforced across all of your API keys. Requests over the limit receive a 429 status code, so back off and retry when you see one.

Can I add leads to a campaign in bulk?

Yes. A single POST /leads request accepts up to 1,000 leads at once, with optional fields like first name, company, job title and LinkedIn URL for personalization. Existing leads are updated by email address instead of duplicated, and passing a campaignId adds them straight into a campaign.

Which programming languages can I use?

Any language that can send an HTTPS request. The examples on this page show cURL, Node.js and Python, but Go, Ruby, PHP, Java and no-code tools all work the same way — set the Authorization header and send JSON.

Is there an OpenAPI spec or Postman collection?

Yes. The API reference at run.emailchaser.com is generated from an OpenAPI (Swagger) definition and includes a ready-to-import Postman collection, so you can explore every endpoint and its request and response schemas.

Does the API work with no-code tools like Make and Clay?

Yes. Emailchaser has a native Make integration and a Clay integration for pushing leads from Clay tables into campaigns, and the REST API works with any tool that can send HTTP requests. AI assistants can use the same capabilities through the Emailchaser MCP server.

Still not convinced?

Read dozens of customer reviews.

SEE REVIEWS

P.s. these are actually real reviews (not fake G2 reviews) 🙂

Customer reviews

Ready to 10x your pipeline?

Send your first cold email campaign today, risk-free.

Try for free