🎯

instantly

🎯Skill

from vm0-ai/vm0-skills

VibeIndex|
What it does

Automates cold email outreach by managing campaigns, leads, and sending accounts via Instantly.ai API calls.

πŸ“¦

Part of

vm0-ai/vm0-skills(138 items)

instantly

Installation

Add MarketplaceAdd marketplace to Claude Code
/plugin marketplace add vm0-ai/vm0-skills
Install PluginInstall plugin from marketplace
/plugin install notion@vm0-skills
Install PluginInstall plugin from marketplace
/plugin install slack-webhook@vm0-skills
git cloneClone repository
git clone https://github.com/vm0-ai/vm0-skills.git
πŸ“– Extracted from docs: vm0-ai/vm0-skills
12Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Instantly.ai API via curl. Use this skill for cold email outreach automation, managing campaigns, leads, and email accounts.

Overview

# Instantly 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

  1. Sign up at [Instantly.ai](https://instantly.ai/) (Growth plan or above required for API)
  2. Go to Settings > Integrations > API to create an API key
  3. Select appropriate scopes for your use case

```bash

export INSTANTLY_API_KEY="your-api-key"

```

API Scopes

Create API keys with specific permissions:

  • campaigns:read, campaigns:create, campaigns:update
  • leads:read, leads:create, leads:update, leads:delete
  • lead_lists:read, lead_lists:create
  • analytics:read
  • all:all (full access)

---

> Important: When using $VAR in a command that pipes to another command, wrap the command containing $VAR in bash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.

> ```bash

> 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

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

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 with the actual campaign ID:

```bash

bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns/" -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:

```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

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 with the actual campaign ID:

```bash

# Pause campaign

bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns//pause" -X POST -H "Authorization: Bearer ${INSTANTLY_API_KEY}"'

# Activate campaign

bash -c 'curl -s "https://api.instantly.ai/api/v2/campaigns//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:

```json

{

"limit": 10

}

```

Then run:

```bash

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:

```json

{

"campaign_id": "your-campaign-id",

"limit": 20

}

```

Then run:

```bash

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:

```json

{

"email": "john@example.com",

"first_name": "John",

"last_name": "Doe",

"company_name": "Acme Corp",

"campaign_id": "your-campaign-id"

}

```

Then run:

```bash

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:

```json

{

"email": "jane@example.com",

"first_name": "Jane",

"campaign_id": "your-campaign-id",

"custom_variables": {

"role": "CTO",

"industry": "SaaS"

}

}

```

Then run:

```bash

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 with the actual lead ID:

```bash

bash -c 'curl -s "https://api.instantly.ai/api/v2/leads/" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"'

```

---

8. Update Lead

Update lead information:

Write to /tmp/instantly_request.json:

```json

{

"first_name": "Updated Name",

"custom_variables": {

"notes": "High priority"

}

}

```

Then run. Replace with the actual lead ID:

```bash

bash -c 'curl -s "https://api.instantly.ai/api/v2/leads/" -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

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:

```json

{

"name": "Q1 Prospects"

}

```

Then run:

```bash

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

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

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:

```bash

# 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 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=" -H "Authorization: Bearer ${INSTANTLY_API_KEY}"' | jq '.items[] | {id, name}'

```

---

Guidelines

  1. Use API V2: V1 is deprecated, use V2 endpoints only
  2. Bearer token auth: Always use Authorization: Bearer header
  3. Scope your keys: Create keys with minimal required permissions
  4. Custom variables: Values must be string, number, boolean, or null (no objects/arrays)
  5. Leads list is POST: Due to complex filters, listing leads uses POST not GET
  6. Rate limits: Respect rate limits based on your plan tier
  7. Growth plan required: API access requires Growth plan or above

More from this repository10