instantly-install-auth

自动化完成 Instantly SDK 或 CLI 的安装与认证配置,支持根据项目环境选择 Node.js 或 Python 方式安装依赖,并通过环境变量或 .env 文件安全注入 API 密钥,确保后续调用 Instantly 服务的身份鉴权可用。

快捷安装

在终端运行此命令,即可一键安装该 Skill 到您的 Claude 中

npx skills add jeremylongshore/claude-code-plugins-plus-skills --skill "instantly-install-auth"

Instantly Install & Auth

Overview

Configure Instantly.ai API v2 authentication. Instantly uses Bearer token auth with scoped API keys. There is no official SDK — all integrations use direct REST calls to https://api.instantly.ai/api/v2/.

Prerequisites

  • Instantly.ai account on Hypergrowth plan ($97/mo) or higher (required for API v2 access)
  • Node.js 18+ or Python 3.10+
  • Access to Instantly dashboard at https://app.instantly.ai

Instructions

Step 1: Generate API Key

  1. Log into https://app.instantly.ai
  2. Navigate to Settings > Integrations > API
  3. Click Create New API Key
  4. Select scopes (e.g., campaigns:read, leads:all, accounts:read)
  5. Copy the key — it is shown only once
set -euo pipefail
# Create .env file with your API key
cat > .env << 'ENVEOF'
INSTANTLY_API_KEY=your-api-key-here
INSTANTLY_BASE_URL=https://api.instantly.ai/api/v2
ENVEOF
echo "Created .env with Instantly config"

Available API scopes (resource:action format):

ScopeAccess
campaigns:readList/get campaigns and analytics
campaigns:updateCreate, patch, activate, pause campaigns
campaigns:allFull campaign CRUD + analytics
accounts:readList/get email accounts
accounts:updateCreate, warmup, pause accounts
leads:readList/get leads and lead lists
leads:updateCreate, move, delete leads
leads:allFull lead CRUD
all:allUnrestricted access (dev only)

Step 2: Create API Client Wrapper (TypeScript)

// src/instantly.ts
import "dotenv/config";

const BASE = process.env.INSTANTLY_BASE_URL || "https://api.instantly.ai/api/v2";
const API_KEY = process.env.INSTANTLY_API_KEY;

if (!API_KEY) throw new Error("INSTANTLY_API_KEY is required");

export async function instantly<T = unknown>(
  path: string,
  options: RequestInit = {}
): Promise<T> {
  const url = `${BASE}${path}`;
  const res = await fetch(url, {
    ...options,
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${API_KEY}`,
      ...options.headers,
    },
  });

  if (!res.ok) {
    const body = await res.text();
    throw new Error(`Instantly API ${res.status}: ${body}`);
  }

  return res.json() as Promise<T>;
}

Step 3: Create API Client Wrapper (Python)

# instantly_client.py
import os
import httpx
from dotenv import load_dotenv

load_dotenv()

BASE_URL = os.getenv("INSTANTLY_BASE_URL", "https://api.instantly.ai/api/v2")
API_KEY = os.getenv("INSTANTLY_API_KEY")

if not API_KEY:
    raise ValueError("INSTANTLY_API_KEY environment variable is required")

client = httpx.Client(
    base_url=BASE_URL,
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    timeout=30.0,
)

def instantly_get(path: str, params: dict = None):
    r = client.get(path, params=params)
    r.raise_for_status()
    return r.json()

def instantly_post(path: str, json_data: dict = None):
    r = client.post(path, json=json_data)
    r.raise_for_status()
    return r.json()

Step 4: Verify Connection

// verify.ts — run with: npx tsx verify.ts
import { instantly } from "./src/instantly";

interface Campaign {
  id: string;
  name: string;
  status: number;
}

async function verify() {
  // List campaigns — if this returns, auth is working
  const campaigns = await instantly<Campaign[]>("/campaigns?limit=1");
  console.log("Auth verified. Campaigns found:", campaigns.length >= 0);

  // List email accounts
  const accounts = await instantly<{ email: string }[]>("/accounts?limit=1");
  console.log("Accounts accessible:", accounts.length >= 0);

  console.log("Instantly API v2 connection is working.");
}

verify().catch((err) => {
  console.error("Auth failed:", err.message);
  process.exit(1);
});

Output

  • .env file with INSTANTLY_API_KEY and INSTANTLY_BASE_URL
  • Reusable API client wrapper (src/instantly.ts or instantly_client.py)
  • Verified connection to Instantly API v2

Error Handling

ErrorCauseSolution
401 UnauthorizedInvalid or expired API keyRegenerate key in Settings > Integrations
403 ForbiddenKey missing required scopeEdit key scopes or create new key with correct permissions
429 Too Many RequestsRate limit exceededImplement exponential backoff (see instantly-rate-limits)
ECONNREFUSEDNetwork/firewall issueEnsure outbound HTTPS to api.instantly.ai is allowed
API key not foundKey was revokedGenerate a new key from the dashboard

Resources

Next Steps

After successful auth, proceed to instantly-hello-world for your first API call.