Outreach
Store link-building campaigns your agent researched and wrote, put the emails up for review, and send them from your Gmail on a schedule.
The outreach endpoints persist what your agent produced (a campaign, its contacts and one email per contact) and hand the emails to RankParse's Gmail sending pipeline. RankParse does not find prospects or write copy for you: your agent does that with the research endpoints, then stores the result here. The Outreach guide walks through a whole campaign; this page holds the shared concepts.
All routes live under https://api.rankparse.com/v1/outreach, take your X-API-Key, cost 0 credits and share the limit of 60 requests per minute per key. Only the research calls (for example Competitor Gap and Domain Authority) use credits.
Operations
Campaigns
Create a campaign
POST /v1/outreach/campaigns
List campaigns
GET /v1/outreach/campaigns
Get a campaign
GET /v1/outreach/campaigns/:id
List replies and bounces
GET /v1/outreach/replies
Add contacts
POST /v1/outreach/campaigns/:id/contacts
Update contacts
POST /v1/outreach/campaigns/:id/contacts/update
Get prospecting context
GET /v1/outreach/campaigns/:id/prospecting
Launch a campaign
POST /v1/outreach/campaigns/:id/launch
Pause a campaign
POST /v1/outreach/campaigns/:id/pause
Resume a campaign
POST /v1/outreach/campaigns/:id/resume
Sending
Review before sending
Outreach is the one action RankParse never runs on an agent's word alone.
- Agents (the RankParse MCP server, or any call carrying the header
X-RankParse-Client: mcp): launching a campaign does not queue anything. It marks the campaign ready and returnsstatus: "ready_for_review"with areview_url, the campaign page in RankParse. A person approves the emails there, one by one or in bulk, and only the approved emails are sent. Raising a mailbox's daily cap or turning sending on is held for approval too, where the inbox is enforced (see Update sending settings). - The one opt-out: a person can switch on Let Claude send without review for a mailbox in RankParse. Then, and only while approval enforcement is off for the account, an agent's launch queues that mailbox's emails directly. The API can turn this setting off but never on.
- Direct REST calls with your key and without the agent header are you acting yourself: launch queues the emails immediately.
Changing copy after review clears the approval of the changed emails, and an approved email whose content changed is not sent. See Approval inbox for the full model.
Campaign status
| Status | Meaning |
|---|---|
draft | Created, no contacts yet. |
ready_to_review | Has contacts waiting for review or launch. |
pushing | A launch is running right now. Contacts cannot be added until it finishes (a claim older than 5 minutes is treated as dead and released). |
pushed | Launched at least once. It can still be topped up with new contacts and launched again. |
Campaigns created in the dashboard's older wizard can show other states. Those cannot take contacts through the API (409 campaign_not_editable).
Email status
Each contact is one email. Counts on Get a campaign group them as awaiting_launch (waiting for review or launch), queued (approved and waiting for the sending sweep), sending, sent and skipped.
Mailboxes and sending
A workspace can connect several Gmail accounts ("mailboxes"), each with its own daily cap, counter, sending window and on/off switch.
- A campaign sends from the mailbox mapped to its website, or from the workspace's default mailbox when the website has none (or the campaign has no website).
- A mapped mailbox that is disconnected or needs reconnecting is still the campaign's mailbox: RankParse never falls back to the default, because that would send one client's mail from another address. Launch then returns
400 gmail_not_connected. - An email is pinned to the mailbox it was approved under, so remapping a website later only affects emails approved afterwards.
- An hourly sweep sends queued emails inside each mailbox's sending window, up to its daily cap (
max_sends_per_day, 1 to 100, default 20). On the Free plan, when plan limits are enforced, each mailbox sends at most 5 emails a day whatever its own cap says, and the responses report the lowered cap. - A website or mailbox beyond what your plan covers cannot start new sends (
402 plan_limit_reachedon launch). Emails already queued keep sending.
Contact rules
| Rule | Value |
|---|---|
| Contacts per add call | up to 100 |
| Contacts per campaign | up to 500 |
| Emails per agent review request | up to 100 (launch again for the rest) |
| Uniqueness | one contact per domain and one per email address in a campaign |
| Already emailed | an address you emailed from an earlier campaign is skipped (already_contacted) |
| Subject | up to 500 characters |
| Body | up to 10,000 characters, plain text |
| Name | up to 200 characters, optional |
| Domains | lowercased, http(s)://, www. and paths stripped; internationalized domains in punycode (xn--) form |
Errors shared by every route
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_json | The body is not valid JSON. |
| 401 | invalid_api_key | Missing, invalid or revoked API key. |
| 403 | capability_missing | Your role in the workspace does not allow this. |
| 404 | campaign_not_found | The campaign is not in your workspace, or is archived. |
| 429 | rate_limited | More than 60 requests in a minute. |
Errors use the shape { "error", "code", "message" }. See Errors.
Related
The outreach MCP tools are on the API-key MCP endpoint only; the OAuth connector has propose_outreach_send where proposing is switched on. Each operation page names its tool. See MCP server.