Instantly
Automate cold-email campaigns, leads, and inbox warmup via the Instantly.ai API v2.
API base: https://api.instantly.ai/api/v2
Auth: single static Bearer token — no OAuth flow, no third-party packages.
What it does
Read and write your Instantly cold-email setup from an InTouch job: list campaigns, inspect sending accounts and their warmup status, add leads, browse recent emails, and flip warmup on or off per account.
Operations
| Operation | Method + Endpoint | Purpose |
|---|---|---|
list_campaigns |
GET /api/v2/campaigns |
List cold-email campaigns. Filter with search. |
list_accounts |
GET /api/v2/accounts |
List sending accounts. Response includes warmup_enabled. |
add_lead |
POST /api/v2/leads/add |
Add a lead to a campaign. Requires campaignId + leadEmail. |
list_emails |
GET /api/v2/emails |
List recent sent/received emails. Filter by campaignId. |
enable_warmup |
POST /api/v2/accounts/warmup/enable |
Enable inbox warmup on a sending account. Requires accountId. |
disable_warmup |
POST /api/v2/accounts/warmup/disable |
Disable inbox warmup on a sending account. Requires accountId. |
List operations accept limit (1-100, default 20) and startingAfter
(pagination cursor: the id of the last item from the previous page).
API key setup
- In Instantly, go to Settings → Integrations → API Keys.
- Click Create API Key and choose the v2 key type. (v1 keys use a different auth scheme and won't work with these endpoints.)
- Grant at minimum the scopes your job needs:
campaigns:readforlist_campaignsaccounts:readforlist_accounts,accounts:allfor warmup toggleleads:createforadd_leademails:readforlist_emails- Pass the key as the
apiKeyinput. It is sent asAuthorization: Bearer <apiKey>on every request.
Inputs
| Input | Required for | Notes |
|---|---|---|
apiKey |
all | Instantly v2 API key. |
operation |
all | One of the six operations above. |
campaignId |
add_lead |
Also an optional filter for list_emails. |
leadEmail |
add_lead |
Lead email address. |
leadFirstName |
— | Optional lead field for add_lead. |
leadLastName |
— | Optional lead field for add_lead. |
leadCompany |
— | Optional lead field for add_lead. |
accountId |
enable_warmup, disable_warmup |
Sending account email or UUID. |
search |
— | Text filter for list_campaigns / list_accounts. |
limit |
— | 1-100, default 20. |
startingAfter |
— | Pagination cursor for list operations. |
Output
{ "status": "200", "result": "<Instantly response body as a JSON string>" }
status— HTTP status code string ("200","401","422", …).result— raw Instantly response body; parse it downstream foritems,id, etc.
On bad input or a transport failure the tool prints {"error": "<message>"} and
exits non-zero so the job step fails cleanly.
Examples
List campaigns with "Q3" in the name:
{ "apiKey": "YOUR_KEY", "operation": "list_campaigns", "search": "Q3", "limit": "50" }
List all sending accounts and their warmup status:
{ "apiKey": "YOUR_KEY", "operation": "list_accounts" }
Add a lead to a campaign:
{
"apiKey": "YOUR_KEY",
"operation": "add_lead",
"campaignId": "019ec0d2-f5ef-70e1-82e5-62f015c6fd86",
"leadEmail": "[email protected]",
"leadFirstName": "Jane",
"leadLastName": "Smith",
"leadCompany": "Acme Corp"
}
Enable inbox warmup on a sending account:
{
"apiKey": "YOUR_KEY",
"operation": "enable_warmup",
"accountId": "[email protected]"
}
List the last 20 emails for a campaign:
{
"apiKey": "YOUR_KEY",
"operation": "list_emails",
"campaignId": "019ec0d2-f5ef-70e1-82e5-62f015c6fd86"
}
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
errorresultstatus
Input Properties
Every property this tool accepts, from its own tool.iml.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
apiKey |
string | yes | — | DEPRECATED — bind an API Key credential to the task with credentialName instead. A key pasted here is stored in the workflow definition in clear and appears in every export of it. Still honoured for workflows built before the change. |
operation |
string | yes | — | One of: list_campaigns, list_accounts, add_lead, list_emails, enable_warmup, disable_warmup |
campaignId |
string | no | — | Campaign UUID. Required for add_lead. Optional filter for list_emails. |
leadEmail |
string | no | — | Email address of the lead to add. Required for add_lead. |
leadFirstName |
string | no | — | Lead first name (add_lead only, optional). |
leadLastName |
string | no | — | Lead last name (add_lead only, optional). |
leadCompany |
string | no | — | Lead company name (add_lead only, optional). |
accountId |
string | no | — | Sending account email or UUID. Required for enable_warmup and disable_warmup. |
search |
string | no | — | Text filter for list_campaigns (name) or list_accounts (domain/email). |
limit |
string | no | 20 |
Maximum records to return for list operations (1-100). Default 20. |
startingAfter |
string | no | — | Pagination cursor — the id of the last item from the previous page. |