Systems Lab

Agent skill

instantly-api

Create and run cold email campaigns in Instantly through the ColdIQ marketplace — campaigns, leads, sequences, analytics, and accounts.

activeSelf-containedInstructions only678 words

Filed under Outbound email.

From Cold-IQ/coldiq-marketplace-skills · 17 skill entries · 1 · pushed 2026-09-22

What it does when it runs

Create and run cold email campaigns in Instantly through the ColdIQ marketplace — campaigns, leads, sequences, analytics, and accounts. Use when creating a campaign, loading/adding leads, setting ColdIQ default campaign settings, pulling reply/open/bounce analytics, activating or pausing a campaign, or formatting email HTML for Instantly. Triggers on "Instantly campaign", "load leads", "create campaign", "campaign analytics", "activate campaign", "add leads to Instantly", "reply rate", "campaign settings". Do NOT use for writing the copy itself (see cold-email-copy / crawford-method), email-finding/enrichment (see contact-enrichment), Lemlist or EmailBison sending (see those skills).

Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about instantly-api

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Cold-IQ/coldiq-marketplace-skills.git /tmp/coldiq-marketplace-skills
git -C /tmp/coldiq-marketplace-skills sparse-checkout set "skills/instantly-api"
mkdir -p ~/.claude/skills/instantly-api
cp -R "/tmp/coldiq-marketplace-skills/skills/instantly-api/." ~/.claude/skills/instantly-api/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 17 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add Cold-IQ/coldiq-marketplace-skills
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from Cold-IQ/coldiq-marketplace-skills/blob/495c1b4256db8c6683ac1ff59a093899228eca73/skills/instantly-api/SKILL.md, which is licensed MIT (repository). 678 words, 8 headings.

Instantly API

Create campaigns, load leads, and pull analytics in Instantly via ColdIQ's resold Instantly endpoints /v1/instantly/* (Instantly v2 paths preserved, one ColdIQ key; BYOK — connect your own Instantly account, free, no ColdIQ credits).

ColdIQ Marketplace Endpoints

TaskMethodPathCreditsEndpoint IDNotes
Create campaignPOST/v1/instantly/campaignsfreeinstantly.campaigns.createUse ColdIQ defaults
List campaignsGET/v1/instantly/campaignsfreeinstantly.campaigns.listfilter by status
Get campaignGET/v1/instantly/campaigns/{id}freeinstantly.campaigns.getverify sequences
Update campaignPATCH/v1/instantly/campaigns/{id}freeinstantly.campaigns.patchpartial
Activate campaignPOST/v1/instantly/campaigns/{id}/activatefreeinstantly.campaigns.activateempty body {}; confirm with user
Pause campaignPOST/v1/instantly/campaigns/{id}/pausefreeinstantly.campaigns.pauseempty body {}
Add single leadPOST/v1/instantly/leadsfreeinstantly.leads.createuse campaign, not campaign_id
Bulk add leadsPOST/v1/instantly/leads/addfreeinstantly.leads.add
List leadsPOST/v1/instantly/leads/listfreeinstantly.leads.listGET /leads 404s
Campaign analyticsGET/v1/instantly/campaigns/analyticsfreeinstantly.campaigns.analyticsreply/open/bounce
Daily analyticsGET/v1/instantly/campaigns/analytics/dailyfreeinstantly.campaigns.analytics.dailyper-day
Verify emailPOST/v1/instantly/email-verificationfreeinstantly.email_verification.create

Recommended Campaign Settings

Deliverability-first baseline for every new campaign:

{
  "email_gap": 15, "random_wait_max": 7, "text_only": true, "first_email_text_only": true,
  "daily_limit": 9999, "stop_on_reply": true, "match_lead_esp": true,
  "link_tracking": false, "open_tracking": false,
  "campaign_schedule": { "schedules": [{ "name": "Weekday schedule",
    "timing": { "from": "08:00", "to": "14:00" },
    "days": { "1": true, "2": true, "3": true, "4": true, "5": false },
    "timezone": "America/Detroit" }] }
}

text_only, no link/open tracking, and ESP matching all maximize deliverability.

Gotchas (read first)

  1. Timezone: use America/Detroit, NOT America/New_York (Instantly rejects New_York).
  2. Schedule days: zero-indexed from Sunday (0=Sun … 6=Sat).
  3. Activate/Pause: send an empty JSON body {}.
  4. Delete lead: send NO body and NO Content-Type header.
  5. List leads: use POST /v1/instantly/leads/list (GET returns 404).
  6. Lead field name: use campaign (UUID), NOT campaign_id — the wrong key silently adds leads to the org pool without linking them to the campaign.
  7. HTML escaping: > in the body must be &gt; (e.g. "Predictable > random").
  8. Lead dedup: leads dedup across campaigns by default; set skip_if_in_campaign: false to force-add.

HTML email formatting

Even with text_only: true, Instantly stores HTML <div>s. Every line in its own <div>; blank lines <div><br /></div>; no <p>; HTML-encode >/<; signature <div>{{accountSignature}}</div>.

import html
def to_instantly_html(plain):
    return ''.join('<div><br /></div>' if not l.strip() else f'<div>{html.escape(l.strip())}</div>'
                   for l in plain.strip().split('\n'))

Variables

Core (auto from lead): {{firstName}}, {{lastName}}, {{companyName}}, {{email}}, {{website}}, {{personalization}}, {{accountSignature}}. Custom: any key in the lead payload becomes {{key}} (e.g. {{Idea1}}, {{Idea2}}, {{Idea3}}, {{SL}}). Spintax: {{RANDOM|Hey|Hi|Hello}} {{firstName}},.

Workflows

Full campaign launch

  1. Create the campaign with ColdIQ defaults + sequences. → POST /v1/instantly/campaigns · free · instantly.campaigns.create
  2. Add leads with payload variables (loop or bulk). → POST /v1/instantly/leads · free · instantly.leads.create
    { "campaign": "campaign-uuid", "email": "[email protected]", "first_name": "John",
      "company_name": "Acme", "payload": { "Idea1": "...", "Idea2": "...", "Idea3": "..." } }
    
  3. Verify the sequences look right. → GET /v1/instantly/campaigns/{id} · free · instantly.campaigns.get
  4. Connect sending accounts (Instantly UI), then activate — always confirm with the user first. → POST /v1/instantly/campaigns/{id}/activate · free · instantly.campaigns.activate

Performance check

  1. Aggregate stats. → GET /v1/instantly/campaigns/analytics · free · instantly.campaigns.analytics
  2. Daily trend. → GET /v1/instantly/campaigns/analytics/daily · free · instantly.campaigns.analytics.daily

Benchmarks

MetricKillKeepScale
Positive reply rate<1%2–5%>5%
Emails per positive reply>5,0001,000–3,000<1,000
Meeting book rate<0.5%1–2%>2%

A reliable top performer: 3 AI-generated campaign ideas ({{Idea1}}/{{Idea2}}/{{Idea3}}) as the personalization payload. After 200+ sends/variant: kill <1% reply, branch top 2–3 winners (70/20/10 winners/iterations/experiments).

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what instantly-api does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.