API review

Woodpecker API review

Cold email plus LinkedIn outreach platform priced on emails sent per month, with an API/webhooks/MCP/CLI bundle sold as a flat $20/mo add-on and an agency (multi-client) API. Best for low-cost agency setups: unlimited mailboxes and seats, per-client Agency Panel with an HQ master key.

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

What a call costs

The actions you pay for, as Woodpecker prices them.

ActionCostPer
LinkedIn outreach automation$29/moper connected LinkedIn account (0-20)
Agency Panel active client$27/moper active client
White label$5/moper active client
Extra warm-up$5/moper email account
Google/Microsoft mailbox$6/moper address
Maildoso / Mailforge / Infraforge / Azure mailbox$4/moper address
Dedicated server (Infraforge)$59/moper server
Lead Finder credits~$0.02per credit (packs from 500 for $10)
Show all 16 priced actionsHide the rest
ActionCostPer
Find email / enrich1.5 creditsper lead (charged only when data is found)
Email validation0.25 creditsper email (catch-all verification via Bouncer is free)
Lead Finder lead search (API POST /v2/lead_finder/leads)1 creditper lead returned (docs; measured 1 credit for 1 lead on our trial, 2026-10-25)
Lead Finder company preview (in-app)5 credits per database request + 0.1 per companypreviewing 10 companies = 6 credits (pricing page)
LinkedIn post profile collection0.1 credit (reaction) / 0.3 credit (comment)per profile collected
New domain~$1/moper domain, billed annually
Transfer / connect your domain$1/moper domain, billed annually
Azure domain hosting$20/moper domain hosted on Azure

Pricing, plan by plan

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

Free tier 14-day trial or 500 sent emails, whichever comes first; all features, API & Integrations add-on free on trial; no card or phone. Our trial showed 100 Lead Finder credits and 300 AI Agent credits.

5,000 emails/mo

$39/mo

billed monthly

$26/mo

billed annually

5,000 emails, 3 warm-ups, 100 Lead Finder credits

No API
Plan details

sending stops; upgrade or wait for renewal

50,000 emails/mo

$79/mo

billed monthly

$52.67/mo

billed annually

50,000 emails, 10 warm-ups, 250 Lead Finder credits

No API
Plan details

sending stops

100,000 emails/mo

$119/mo

billed monthly

$79.33/mo

billed annually

100,000 emails, 15 warm-ups, 300 credits

No API
Plan details

sending stops

250,000 emails/mo

$219/mo

billed monthly

$146/mo

billed annually

250,000 emails, 30 warm-ups, 450 credits

No API
Plan details

sending stops

500,000 emails/mo

$499/mo

billed monthly

$332.67/mo

billed annually

500,000 emails, 65 warm-ups, 800 credits

No API
Plan details

sending stops

1,000,000 emails/mo

$999/mo

billed monthly

$666/mo

billed annually

1,000,000 emails, 95 warm-ups, 1,200 credits

No API
Plan details

sending stops

Show all 9 plansShow fewer plans

Multichannel (Email + LinkedIn)

$68/mo

billed monthly

$55/mo

billed annually

Email tier price + $29/mo per LinkedIn account; shown for the 5,000-email tier with 1 LinkedIn account ($39 + $29; annual $26 + $29).

No API
Plan details

Derived from the live pricingData; in-app INR check: 3,700 + 2,700 = 6,400 INR/mo

sending stops

LinkedIn (LinkedIn-only)

$29/mo

billed monthly

$29/mo

billed annually

per LinkedIn account: up to 250 DMs/day, 50 InMails/mo, 30 connection requests/day, 500 profile visits/day; 100 Lead Finder credits

No API

Add-on: Integrations, API, webhooks, MCP Server, CLI

$20/mo

billed monthly

$20/mo

billed annually

flat, all integrations; required for API, webhooks, Docker MCP and CLI on every tier ($240/yr on annual billing, no annual discount)

API included

Rate limits

Unlimited monthly calls, but only ONE request is processed at a time per account; up to 6 more are queued with a 15-second maximum wait each, and anything beyond is dropped with 429.

More on limitsLess

Counted per account, not per key; each agency client and the HQ account have their own limit.

How to get an API key

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

  1. Create a Woodpecker account. API access starts on the Add-on: Integrations, API, webhooks, MCP Server, CLI plan.
  2. Add-ons -> API & Integrations -> API keys -> Create a key (keys are user-specific). Agency accounts can use an HQ master key to act on client accounts.
  3. Send it with every request: header: x-api-key.
  4. Make a first call: Delete domains from the blacklist. Remove specific domains from the blacklist. Keep the key in an environment variable, never in the command.
    curl -X DELETE "https://api.woodpecker.co/rest/v2/blacklist/domains"

Where the docs live

WhatWhere
Documentationdevelopers.woodpecker.co/docs.md
API referencedevelopers.woodpecker.co/llms-full.txt
llms.txtdevelopers.woodpecker.co/llms.txt
Changelogdevelopers.woodpecker.co/llms-full.txt
Base URLhttps://api.woodpecker.co/rest
MCP serverhttps://api.woodpecker.co/mcp/v1
SDKs@woodpecker.co/cli (npm, Node 22 LTS), woodpeckerco/woodpecker-mcp-server (Docker image, stdio)

Strengths and limits

Where it fits

  • Low-cost agency setups: unlimited mailboxes and seats, per-client Agency Panel ($27/client) with an HQ master key
  • Email + LinkedIn multichannel from one API (LinkedIn steps, InMail, LinkedIn inbox and reply webhooks added 2026)
  • Domain and mailbox provisioning end to end via the Domains API
  • Agents: hosted MCP with browser OAuth (no API key needed) plus a Docker stdio server and an npm CLI

Where it falls short

  • High-throughput or parallel API jobs: one request processed at a time per account, 6 queued, the rest dropped with 429
  • Plans without the 'Integrations, API, webhooks, MCP, CLI' add-on ($20/mo)
  • Per-campaign webhooks: subscriptions are account-level across all campaigns

Worth knowing

  • API access is NOT included in any plan: it is the $20/mo 'Integrations, API, webhooks, MCP Server, CLI' add-on (trial users get it).
  • Concurrency of ONE: only one request runs at a time per account, 6 queue (15 s max each), the rest are dropped with 429. Build strictly sequential clients.
  • Hitting the monthly emails-sent cap STOPS campaigns; plans never auto-upgrade, and follow-ups count toward the cap.
  • Webhooks are account-level: subscribing to prospect_replied fires for every campaign; filter by campaign yourself.
  • Webhook payloads are batched arrays of up to 100 events; a 310/410 response from your server unsubscribes the hook immediately.
6 moreShow fewer
  • Mixed versions: prospect add/delete and webhook subscribe are still v1 endpoints while campaigns are v2.
  • Lead Finder search endpoints (search criteria, criteria values, search leads) are flagged to change on 22 Oct 2026; on 2026-10-25 the docs still used 'will change' and the linked migration-summary page returned 404. Re-test any integration built before that date.
  • Agency endpoints need BOTH the API add-on and the Agency add-on; otherwise 403 'feature set doesn't grant access'.
  • Terms forbid exceeding the API request limit in a way that causes downtime.
  • Lead search on a TRIAL account caps size at 25 (50 on PREMIUM) and documents next_page paging as PREMIUM-only, yet our trial search still returned a next_page token.
  • GET /v1/campaign_list returns 204 No Content with an empty body (not []) when the account has no campaigns; measured 2026-10-25.

Who should use it

Use Woodpecker for
Low-cost agency setups: unlimited mailboxes and seats, per-client Agency Panel ($27/client) with an HQ master key
Look elsewhere for
High-throughput or parallel API jobs: one request processed at a time per account, 6 queued, the rest dropped with 429

If Woodpecker 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 Woodpecker's own pages.

  • Confirm the API is on your planAPI access starts on the Add-on: Integrations, API, webhooks, MCP Server, CLI plan. Free tier: 14-day trial or 500 sent emails, whichever comes first.
  • Keep the key out of your codeAPI key. It is sent as: header: x-api-key.
  • Design around the rate limitUnlimited monthly calls, but only ONE request is processed at a time per account; up to 6 more are queued with a 15-second maximum wait each, and anything beyond is dropped with 429.
  • Know the catch before you scaleAPI access is NOT included in any plan: it is the $20/mo 'Integrations, API, webhooks, MCP Server, CLI' add-on (trial users get it).

Want us to build it for you?

Tell us what you want Woodpecker 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 woodpecker.co/pricing.md, developers.woodpecker.co/llms-full.txt and developers.woodpecker.co/docs/getting-started/rate-limiting.md. Verified 25 Oct 2026.

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

Base URL: api.woodpecker.co/rest

Bulk and async: Blacklist add/remove up to 500 domains or emails per request; Lead Finder enrichment up to 50 leads per request; bulk mailbox connection with batch summary; reports are generated async then fetched by hash.

Webhooks: Events: campaign_completed, campaign_paused_by_bounce_shield, campaign_sent, email_opened, followup_after_autoreply, link_clicked, linkedin_automation_account_connected, linkedin_automation_account_disconnected, linkedin_automation_connection_request_accepted, linkedin_automation_direct_message_sent, linkedin_automation_prospect_replied, prospect_autoreplied and 14 more. Retries: Exponential backoff; repeated failures may unsubscribe the target_url/event pair; a 310 or 410 response unsubscribes immediately. Same event max 5 subscriptions per account (409 beyond). Events are batched into arrays of up to 100 objects.

102 endpoints
MethodPathWhat it doesCost
DELETE/v2/blacklist/domainsDelete domains from the blacklist. Remove specific domains from the blacklist.Not stated
DELETE/v2/blacklist/emailsDelete emails from the blacklist. Remove specific emails from the blacklist.Not stated
GET/v2/blacklist/domainsGet blacklisted domains. Retrieve a paginated list of all blacklisted domains for the authenticated account.Not stated
GET/v2/blacklist/emailsGet blacklisted emails. Retrieve a paginated list of all blacklisted emails for the authenticated account.Not stated
POST/v2/blacklist/domainsBlacklist domains. Add domains to the blacklist.Not stated
POST/v2/blacklist/emailsBlacklist emails. Add emails to the blacklist.Not stated
DELETE/v2/campaigns/{campaign_id}/steps/{step_id}Delete campaign step. This endpoint lets you delete a campaign step.Not stated
DELETE/v2/campaigns/{campaign_id}Delete campaign. This request will delete a campaign.Not stated
GET/v1/campaign_listGet a list of campaigns (with ?id= returns campaign statistics)Not stated
GET/v2/campaigns/{campaign_id}Get campaign. Fetch a campaign with its settings, attached mailboxes and LinkedIn accounts, and each step and version (delivery times, tracking); returns the step and version IDs used by the update endpoints.Not stated
PATCH/v2/campaigns/{campaign_id}/steps/{step_id}/versions/{version_id}Update step version. Use this request to update a step version.Not stated
PATCH/v2/campaigns/{campaign_id}/steps/{step_id}Update step. Use this request to update an EMAIL step's delivery times.Not stated
PATCH/v2/campaigns/{campaign_id}Update campaign settings. Use this request to update campaign-wide settings such as assigned email accounts, sending limits, timezone, and more.Not stated
POST/v2/campaigns/{campaign_id}/stepsAdd campaign step. This endpoint allows you to add a new step at the end of a campaign, as long as the parent step has not yet processed any prospects.Not stated
POST/v2/campaigns/create_and_run_simple_campaignCreate and run a simple campaign. Send an email to one prospect from a connected mailbox, similar to using Compose in the Woodpecker inbox.Not stated
POST/v2/campaigns/create-draftCreate campaign draft. Create an email, LinkedIn, or multichannel campaign without providing all the details required to run it.Not stated
POST/v2/campaignsCreate campaign. Create a **multichannel, LinkedIn or email campaign** with a sequence of personalized follow-up messages and customizable delivery settings.Not stated
POST/v2/campaigns/{campaign_id}/make_editableEdit campaign. This action changes the status of a campaign to the EDITED status.Not stated
POST/v2/campaigns/{campaign_id}/pausePause campaign. This request will change the campaign status to PAUSED and will halt any further contact with prospects until the status is changed back to RUNNING.Not stated
POST/v2/campaigns/{campaign_id}/runRun campaign. This request starts a campaign and changes its status to RUNNING.Not stated
POST/v2/campaigns/{campaign_id}/stopStop campaign. This request will change the campaign status to STOPPED and will halt any further contact with prospects until the status is changed back to RUNNING.Not stated
DELETE/v2/campaigns/{campaign_id}/bounce_shield/thresholdClear Bounce Shield threshold. Clear the Bounce Shield Monitor bounce rate threshold from a campaign, effectively disabling the Bounce Shield Monitor.Not stated
GET/v2/campaigns/{campaign_id}/bounce_shield/thresholdGet Bounce Shield threshold. Retrieve the Bounce Shield Monitor bounce rate threshold configured for a campaign.Not stated
PUT/v2/campaigns/{campaign_id}/bounce_shield/thresholdSet Bounce Shield threshold. Set or replace the bounce-rate threshold (integer 1-99, percent) that auto-pauses a campaign; returns 204 with no body.Not stated
GET/v2/inbox/messagesGet inbox messages. Retrieve a paginated list of email messages available in the Woodpecker inbox.Not stated
POST/v2/inbox/messages/{id}/replyReply to a message. This endpoint allows you to reply to a message retrieved from the Woodpecker inbox.Not stated
GET/v2/lead_finder/leads/enrichments/{uuid}Get lead enrichment. Retrieve one lead enrichment batch by its uuid.Not stated
GET/v2/lead_finder/search_criteria/{criterion_name}/valuesGet search criteria values. Retrieve allowed values for an enumerated Lead Finder criterion (e.g. COUNTRY, INDUSTRY, JOB_TITLE_ROLE). Docs flag a change on 22 Oct 2026.free (no credits)
GET/v2/lead_finder/search_criteriaGet search criteria. Retrieve the current Lead Finder criteria catalog, grouped into freetext and enumerated criteria. Docs flag a change on 22 Oct 2026.free (no credits)
GET/v2/lead_finder/leads/enrichmentsList lead enrichments. List lead enrichment batches requested for the authenticated account.Not stated
POST/v2/lead_finder/leadsSearch leads. Search for people matching one or more Lead Finder criteria; returns a compact result set (no emails) for selecting leads to enrich. size max 50 (PREMIUM) or 25 (TRIAL); next_page paging documented as PREMIUM-only. Docs flag a change to this endpoint on 22 Oct 2026.1 Lead Finder credit per lead returned (docs); measured on our trial: 1 credit for 1 lead (2026-10-25)
POSTasync/v2/lead_finder/leads/enrichmentsQueue lead enrichments. Queue one or more Lead Finder search results for enrichment.1.5 Lead Finder credits per lead enriched with an email found; charged only when data is found; up to 50 leads per request
GET/v2/lead_finder/prospects/enrichments/{uuid}Get prospect enrichment. Retrieve status details for a prospect enrichment batch.Not stated
POST/v2/lead_finder/prospects/enrichments/statuses/queryList prospect enrichments. List prospect enrichment statuses for the authenticated account.Not stated
POSTasync/v2/lead_finder/prospects/enrichmentsQueue prospect enrichments. Queue one or more prospects for enrichment.1.5 Lead Finder credits per successfully enriched prospect; charged only when data is found
GET/v2/linkedin/post_profiles_collectors/{uid}Get a collection job. Retrieve a collection job by the UUID returned when you collect profiles from posts.Not stated
GET/v2/linkedin/post_profiles_collectorsList collection jobs. Retrieve collection jobs for the authenticated Woodpecker account.Not stated
GET/v2/linkedin/post_profiles_collectors/enrichment_actions/{action_uid}Get enrichment status. Use this endpoint to check the status of an enrichment job started by enrichment of collected profiles.Not stated
POSTasync/v2/linkedin/post_profiles_collectors/enqueueCollect profiles from posts. Collect LinkedIn profiles of people who reacted to or commented on selected posts and save the results to a new list in Woodpecker.0.1 credit per profile collected from reactions, 0.3 per profile from comments; only successfully collected profiles are charged
POSTasync/v2/linkedin/post_profiles_collectors/enrichment_actions/enqueueEnrich collected profiles. Enrich profiles collected from a LinkedIn post with available contact and company data.1.5 credits per successfully enriched profile