Claude-skill-registry instantly
Instantly.ai API via curl. Use this skill for cold email outreach automation, managing campaigns, leads, and email accounts.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/instantly" ~/.claude/skills/majiayu000-claude-skill-registry-instantly-17d2d5 && rm -rf "$T"
skills/data/instantly/SKILL.mdInstantly API
Use the Instantly API via direct
curl calls to automate cold email outreach, manage campaigns, leads, and sending accounts.
Official docs:
https://developer.instantly.ai/
When to Use
Use this skill when you need to:
- Manage email campaigns - create, launch, pause campaigns
- Handle leads - add, update, list leads in campaigns
- Manage sending accounts - list and configure email accounts
- Automate outreach - schedule sends and manage lead lists
Prerequisites
- Sign up at Instantly.ai (Growth plan or above required for API)
- Go to Settings > Integrations > API to create an API key
- Select appropriate scopes for your use case
export INSTANTLY_API_KEY="your-api-key"
API Scopes
Create API keys with specific permissions:
,campaigns:read
,campaigns:createcampaigns:update
,leads:read
,leads:create
,leads:updateleads:delete
,lead_lists:readlead_lists:createanalytics:read
(full access)all:all
Important: When using
in a command that pipes to another command, wrap the command containing$VARin$VAR. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c '...'bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq '.items[] | {id, name}'
How to Use
All examples below assume you have
INSTANTLY_API_KEY set.
The base URL for API V2 is:
https://api.instantly.ai/api/v2
Authentication uses Bearer token in the
Authorization header.
1. List Campaigns
Get all campaigns:
bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[] | {id, name, status}'
With filters:
bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns?status=ACTIVE&limit=10" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[] | {id, name}'
Status values:
ACTIVE, PAUSED, COMPLETED, DRAFTED
2. Get Single Campaign
Get campaign details by ID. Replace
<your-campaign-id> with the actual campaign ID:
bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns/<your-campaign-id>" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '{id, name, status, daily_limit}'
3. Create Campaign
Create a new campaign (requires
campaign_schedule):
Write to
/tmp/instantly_request.json:
{ "name": "My New Campaign", "daily_limit": 50, "campaign_schedule": { "schedules": [ { "name": "Weekday Schedule", "timezone": "America/Chicago", "days": { "monday": true, "tuesday": true, "wednesday": true, "thursday": true, "friday": true, "saturday": false, "sunday": false }, "timing": { "from": "09:00", "to": "17:00" } } ] } }
Then run:
bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json'
4. Pause/Activate Campaign
Control campaign status. Replace
<your-campaign-id> with the actual campaign ID:
# Pause campaign bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns/<your-campaign-id>/pause" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' # Activate campaign bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns/<your-campaign-id>/activate" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}"'
5. List Leads
List leads (POST endpoint due to complex filters):
Write to
/tmp/instantly_request.json:
{ "limit": 10 }
Then run:
bash -c 'curl -s "https://api.instantly.ai/api/v2/leads/list" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json' | jq '.items[] | {id, email, first_name, last_name}'
Filter by campaign:
Write to
/tmp/instantly_request.json:
{ "campaign_id": "your-campaign-id", "limit": 20 }
Then run:
bash -c 'curl -s "https://api.instantly.ai/api/v2/leads/list" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json' | jq '.items[] | {email, status}'
6. Create Lead
Add a single lead:
Write to
/tmp/instantly_request.json:
{ "email": "john@example.com", "first_name": "John", "last_name": "Doe", "company_name": "Acme Corp", "campaign_id": "your-campaign-id" }
Then run:
bash -c 'curl -s "https://api.instantly.ai/api/v2/leads" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json'
With custom variables:
Write to
/tmp/instantly_request.json:
{ "email": "jane@example.com", "first_name": "Jane", "campaign_id": "your-campaign-id", "custom_variables": { "role": "CTO", "industry": "SaaS" } }
Then run:
bash -c 'curl -s "https://api.instantly.ai/api/v2/leads" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json'
7. Get Single Lead
Get lead by ID. Replace
<your-lead-id> with the actual lead ID:
bash -c 'curl -s "https://api.instantly.ai/api/v2/leads/<your-lead-id>" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"'
8. Update Lead
Update lead information:
Write to
/tmp/instantly_request.json:
{ "first_name": "Updated Name", "custom_variables": { "notes": "High priority" } }
Then run. Replace
<your-lead-id> with the actual lead ID:
bash -c 'curl -s "https://api.instantly.ai/api/v2/leads/<your-lead-id>" -X PATCH -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json'
9. List Lead Lists
Get all lead lists:
bash -c 'curl -s "https://api.instantly.ai/api/v2/lead-lists" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[] | {id, name}'
10. Create Lead List
Create a new lead list:
Write to
/tmp/instantly_request.json:
{ "name": "Q1 Prospects" }
Then run:
bash -c 'curl -s "https://api.instantly.ai/api/v2/lead-lists" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}" -H "Content-Type: application/json" -d @/tmp/instantly_request.json'
11. List Email Accounts
Get connected sending accounts:
bash -c 'curl -s "https://api.instantly.ai/api/v2/accounts" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[] | {email, status, warmup_status}'
12. Test API Key
Verify your API key is valid:
bash -c 'curl -s "https://api.instantly.ai/api/v2/api-keys" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[0] | {name, scopes}'
Pagination
List endpoints support pagination:
# First page bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns?limit=10" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '{items: .items | length, next_starting_after: .next_starting_after}' # Next page (replace <your-cursor> with the next_starting_after value from the previous response) bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns?limit=10&starting_after=<your-cursor>" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[] | {id, name}'
Guidelines
- Use API V2: V1 is deprecated, use V2 endpoints only
- Bearer token auth: Always use
headerAuthorization: Bearer - Scope your keys: Create keys with minimal required permissions
- Custom variables: Values must be string, number, boolean, or null (no objects/arrays)
- Leads list is POST: Due to complex filters, listing leads uses POST not GET
- Rate limits: Respect rate limits based on your plan tier
- Growth plan required: API access requires Growth plan or above