Install
openclaw skills install instantly-campaign-builderCreate and manage Instantly.ai email campaigns via API. Use when the user wants to create a cold email campaign, add leads to Instantly, configure email sequ...
openclaw skills install instantly-campaign-builderBuild and manage Instantly.ai cold email campaigns via API v2.
All requests require:
Authorization: Bearer {INSTANTLY_API_KEY}
Content-Type: application/json
Base URL: https://api.instantly.ai
POST /api/v2/campaigns
Required fields:
name — campaign nameemail_list — array of sender email addressessequences — message steps (see Step 2)Optional but recommended:
daily_limit — max emails per daydaily_max_leads — max new leads contacted per dayemail_gap — seconds between sendsopen_tracking, link_tracking — booleanstop_on_reply, stop_on_auto_reply, stop_for_company — booleantext_only, first_email_text_only — booleancampaign_schedule — object with start_date, end_date, schedules (times/days/timezone)The sequences field is an array but only the first element is used. Put all steps in one item.
Each step has:
type: always "email"delay: number (wait before this step)delay_unit: "minutes", "hours", or "days"variants: array of message variants (A/B testing)Each variant has:
subject: email subject linebody: email body (HTML or plain text)v_disabled: boolean (set true to disable a variant)Variable syntax in subject and body: {{variableName}}
Core variables: {{firstName}}, {{lastName}}, {{companyName}}, {{email}}, {{phone}}, {{website}}
Custom variables: any name, e.g. {{city}}, {{offer}}, {{icebreaker}}
Example 3-step ARA sequence:
{
"sequences": [
{
"steps": [
{
"type": "email",
"delay": 0,
"delay_unit": "days",
"variants": [
{
"subject": "{{firstName}}, {{offer}}",
"body": "Bonjour {{firstName}},\n\n{{icebreaker}}\n\nNous proposons {{offer}} pour les entreprises à {{city}}.\n\nCordialement"
}
]
},
{
"type": "email",
"delay": 3,
"delay_unit": "days",
"variants": [
{
"subject": "Re: {{firstName}}, suite à mon message",
"body": "{{firstName}},\n\nJe me permets de relancer..."
}
]
},
{
"type": "email",
"delay": 5,
"delay_unit": "days",
"variants": [
{
"subject": "Dernière relance {{firstName}}",
"body": "{{firstName}},\n\nDernier message de ma part..."
}
]
}
]
}
]
}
POST /api/v2/campaigns/{campaign_id}/variables
{
"variables": ["firstName", "companyName", "city", "offer", "icebreaker"]
}
Declare every custom variable name used in your sequences here.
Single lead: POST /api/v2/leads
{
"email": "lead@example.com",
"first_name": "Jean",
"last_name": "Dupont",
"company_name": "Acme SAS",
"campaign": "campaign-uuid",
"custom_variables": {
"city": "Paris",
"offer": "audit IA gratuit",
"icebreaker": "J'ai vu votre post LinkedIn sur la transformation digitale"
}
}
Bulk (max 1000 per request): POST /api/v2/leads/add
{
"campaign_id": "campaign-uuid",
"leads": [
{
"email": "lead1@example.com",
"first_name": "Jean",
"last_name": "Dupont",
"company_name": "Acme SAS",
"custom_variables": { "city": "Paris", "offer": "audit IA gratuit" }
},
{
"email": "lead2@example.com",
"first_name": "Marie",
"last_name": "Martin",
"company_name": "Beta Corp",
"custom_variables": { "city": "Lyon", "offer": "démo chatbot" }
}
]
}
Notes:
campaign_id OR list_id, not bothcampaign is provided on single lead, email is requiredskip_if_in_campaign, skip_if_in_workspace, skip_if_in_listPOST /api/v2/campaigns/{campaign_id}/activate
Only activate after leads are added and sequences are configured.
PATCH /api/v2/campaigns/{campaign_id}
Same sequences structure as creation. Use this to update messages after campaign is created.
Add multiple variants per step:
{
"type": "email",
"delay": 0,
"delay_unit": "days",
"variants": [
{
"subject": "Version A — {{firstName}}",
"body": "Approche directe...",
"v_disabled": false
},
{
"subject": "Version B — {{firstName}}",
"body": "Approche soft...",
"v_disabled": false
}
]
}
leads:create, leads:all, all:create, or all:allcampaigns:create, campaigns:all, all:create, or all:allcampaigns:update, campaigns:all, all:update, or all:all/campaigns/{id}/variablescustom_variables/campaigns/{id}/activate