Woodpecker
Manage prospects and automated cold-email outreach campaigns via the Woodpecker REST API.
Woodpecker is a cold-email and sales-engagement platform. This tool reads your campaigns and prospects and enrolls new prospects into a running campaign, straight from an InTouch job or the assistant — no extra dependencies, just the Python standard library.
- Base URL:
https://api.woodpecker.co/rest - Auth:
x-api-key: <apiKey>header (single API key, no OAuth)
Operations
operation |
Method / Endpoint | What it does |
|---|---|---|
list_campaigns |
GET /v1/campaign_list |
List the campaigns in your account. |
list_prospects |
GET /v1/prospects |
List prospects from the global database, optionally filtered by campaignId, status, with page / perPage pagination. |
add_prospects_to_campaign |
POST /v1/add_prospects_campaign |
Add a prospect (by email, plus optional firstName, lastName, company) to the campaign identified by campaignId. |
Inputs
| Name | Required | Notes |
|---|---|---|
apiKey |
yes | Woodpecker API key, sent in the x-api-key header. |
operation |
yes | One of list_campaigns, list_prospects, add_prospects_to_campaign. |
campaignId |
for add | Numeric campaign id. Optional filter for list_prospects. |
email |
for add | Prospect email address. |
firstName |
no | Prospect first name (add). |
lastName |
no | Prospect last name (add). |
company |
no | Prospect company (add). |
status |
no | list_prospects filter: ACTIVE, BOUNCED, REPLIED, BLACKLIST, INVALID. |
page |
no | list_prospects page number (1-based, default 1). |
perPage |
no | list_prospects records per page (default 100, max 1000). |
Outputs
| Field | Description |
|---|---|
result |
The raw JSON response body from Woodpecker, as a string. |
status |
The HTTP status code (e.g. 200). Non-2xx codes are returned with the body so you can inspect the error. |
API key setup
- Log in to Woodpecker.
- Go to Marketplace → Integrations → API Keys.
- Create a new API key and copy it.
- Pass it as the
apiKeyinput. The tool sends it in thex-api-keyheader on every request.
Examples
List campaigns:
{ "apiKey": "wp_live_xxx", "operation": "list_campaigns" }
List the most recent prospects who replied:
{
"apiKey": "wp_live_xxx",
"operation": "list_prospects",
"status": "REPLIED",
"perPage": "50"
}
Add a prospect to campaign 12345:
{
"apiKey": "wp_live_xxx",
"operation": "add_prospects_to_campaign",
"campaignId": "12345",
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe",
"company": "Example Inc"
}
Notes
- Standard-library only (
urllib,json) — norequests, no install step. - Response bodies are capped at 5 MB.
- HTTP errors (4xx/5xx) are returned as
result+statusrather than raising, so you can branch on the status in a downstream task. A transport-level failure (network/DNS) emits anerrorenvelope and fails the step.