> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Instantly

The Instantly connector lets your AI agent act in each user's Instantly account. Each user connects their own Instantly access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 94 tools.

**Authentication:** Bearer Token
**Categories:** Marketing, CRM & Sales
**Tools:** 94: 40 read, 43 write, 11 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=INSTANTLY)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Instantly connection

   In **AgentKit > Connections**, create an Instantly connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'instantly'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Instantly:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'instantly_accounts_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "instantly"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Instantly:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="instantly_accounts_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Instantly credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'instantly_account_campaigns_list',
  toolInput: {
    email: 'john@acme-mail.com',
  },
  connector: 'instantly',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="instantly_account_campaigns_list",
    tool_input={
        "email": "john@acme-mail.com",
    },
    connection_name="instantly",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `instantly_account_campaigns_list`

List Campaigns for Account · Read-only

List the campaigns that use a given sending account.
Returns campaign IDs, names and statuses, plus next_starting_after.
Use instantly_account_campaigns_list before pausing or deleting an account.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".
- `limit` (`number`, optional): Number of campaigns to return per page. Example: 25.
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_account_get`

Get Sending Account · Read-only

Get one sending account by its email address.
Returns the account's name, status, provider, warmup settings and score, daily limit, sending gap, signature and tracking domain.
Use instantly_account_get for one account's settings. Use instantly_accounts_list to list accounts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_account_tracking_domain_status_get`

Get Tracking Domain Status · Read-only

Check whether a custom tracking domain is set up correctly.
Returns success plus the domain's CNAME and SSL check results.
Use instantly_account_tracking_domain_status_get before assigning a tracking domain with instantly_account_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `host` (`string`, required): Custom tracking domain host to check. Example: "track.acme-mail.com".

Example input: `{"host":"track.acme-mail.com"}`

### `instantly_accounts_analytics_daily_get`

Get Daily Account Analytics · Read-only

Get the number of emails sent per day by each sending account over a date range of up to 31 days.
Returns one row per account and date with sent, bounced, contacted, opened, replied and clicked counts.
Use instantly_accounts_analytics_daily_get to track sending volume. Use instantly_accounts_warmup_analytics_get for warmup health.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `emails` (`array`, required): Sending accounts to include (up to 200). Instantly requires this filter. Example: ["john@acme-mail.com"].
- `end_date` (`string`, optional): End of the period. Defaults to today. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-31".
- `start_date` (`string`, optional): Start of the period. Defaults to 30 days before end_date; the range can be up to 31 days. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-01".

Example input: `{"emails":["john@acme-mail.com"]}`

### `instantly_accounts_list`

List Sending Accounts · Read-only

List the email sending accounts connected to the workspace, optionally filtered by status, provider, tag or text.
Returns accounts with email, name, status, provider, warmup status and score, daily limit and tracking domain, plus next_starting_after.
Use instantly_accounts_list to find sending accounts for campaigns. Use instantly_account_get for one account.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_tags` (`boolean`, optional): Set true to include each account's tags in the response. Example: true.
- `limit` (`integer`, optional): Number of accounts to return per page, from 1 to 100. Example: 25.
- `provider_code` (`number`, optional): Only accounts on this provider: 1 = Custom IMAP/SMTP, 2 = Google, 3 = Microsoft, 4 = AWS, 8 = AirMail, 11 = Airmail Instant. Example: 2. One of: `1`, `2`, `3`, `4`, `8`, `11`.
- `search` (`string`, optional): Search text matched against account email addresses. Example: "Q4 outreach".
- `sort_by` (`string`, optional): Sort by timestamp_created, email, stat_warmup_score or status. Example: "stat_warmup_score". One of: `timestamp_created`, `email`, `stat_warmup_score`, `status`.
- `sort_order` (`string`, optional): asc or desc (desc by default when sort_by is set). Example: "desc". One of: `asc`, `desc`.
- `starting_after` (`string`, optional): Pagination cursor: the next_starting_after value from the previous response. Leave empty for the first page. Example: "2026-01-15T10:00:00.000Z&john@acme-mail.com".
- `status` (`number`, optional): Only accounts with this status: 1 = Active, 2 = Paused, 3 = Temporarily paused for maintenance, -1 = Connection Error, -2 = Soft Bounce Error, -3 = Sending Error. Example: 1. One of: `1`, `2`, `3`, `-1`, `-2`, `-3`.
- `tag_ids` (`string`, optional): Comma-separated tag IDs; returns accounts with any of these tags. Example: "0199a4b2-b16d-7f8c-8e75-901234567890".

Example input: `{}`

### `instantly_accounts_vitals_test`

Test Account Vitals · Read-only

Run Instantly's vitals check (DNS records such as SPF, DKIM, DMARC and MX) on sending accounts.
Returns success and failure lists with each domain's MX, SPF, DKIM and DMARC results.
Use instantly_accounts_vitals_test to diagnose deliverability setup.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `accounts` (`array`, optional): Sending account email addresses to test. Example: ["john@acme-mail.com"].

Example input: `{}`

### `instantly_accounts_warmup_analytics_get`

Get Warmup Analytics · Read-only

Get warmup analytics for sending accounts.
Returns per-account, per-day warmup counts (sent, received, landed in inbox, landed in spam) and per-account totals with a health score.
Use instantly_accounts_warmup_analytics_get to check deliverability health. Use instantly_accounts_analytics_daily_get for campaign sending volume.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `emails` (`array`, required): Sending account email addresses to get warmup analytics for. Example: ["john@acme-mail.com"].

Example input: `{"emails":["john@acme-mail.com"]}`

### `instantly_background_job_get`

Get Background Job · Read-only

Get the status and progress of a background job, such as a lead move or warmup change.
Returns the job's type, status (pending, in-progress, success, failed and so on), progress and result data.
Use instantly_background_job_get to poll a job returned by instantly_leads_move or the warmup tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): Background job ID, from the id field of the job returned by the tool that started it. Example: "0199a4b2-f5ab-7dc0-8cb9-345678901234".
- `data_fields` (`string`, optional): Comma-separated fields to include from the job's data object. Example: "success_count,failed_count".

Example input: `{"id":"0199a4b2-f5ab-7dc0-8cb9-345678901234"}`

### `instantly_background_jobs_list`

List Background Jobs · Read-only

List background jobs, filtered by type, entity or status.
Returns jobs with id, type, status, progress and timestamps, plus next_starting_after.
Use instantly_background_jobs_list to find recent jobs. Use instantly_background_job_get to poll one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `entity_id` (`string`, optional): Comma-separated entity IDs. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `entity_type` (`string`, optional): Only jobs on this kind of entity, for example list or campaign. Example: "campaign". One of: `list`, `campaign`, `workspace`, `broadcast`, `subscriber-group-sync`, `subscriber-group`, `journey`.
- `limit` (`integer`, optional): Number of jobs to return per page, from 1 to 100. Example: 25.
- `sort_column` (`string`, optional): Sort by created_at or updated_at. Example: "created_at". One of: `created_at`, `updated_at`.
- `sort_order` (`string`, optional): asc or desc. Example: "desc". One of: `asc`, `desc`.
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `status` (`string`, optional): Comma-separated statuses: pending, in-progress, success, failed, draining, paused, cancelled. Example: "in-progress".
- `type` (`string`, optional): Only jobs of this type, for example move-leads, import-leads, export-leads or update-warmup-accounts. Example: "move-leads". One of: `move-leads`, `import-leads`, `export-leads`, `update-warmup-accounts`, `rename-variable`, `broadcast-ai-generate`, `broadcast-website-scrape`, `import-subscribers-from-crm`, `resync-subscriber-crm-tags`, `journey-ai-build`.

Example input: `{}`

### `instantly_block_list_entries_list`

List Block List Entries · Read-only

List the emails and domains on the workspace block list.
Returns entries with id, bl_value and is_domain, plus next_starting_after.
Use instantly_block_list_entries_list to check whether an address is blocked. Use instantly_block_list_entry_create to block one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domains_only` (`boolean`, optional): Set true to return only domain entries. Example: false.
- `limit` (`integer`, optional): Number of entries to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Text to search entries by. Example: "acme.com".
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{}`

### `instantly_block_list_entry_get`

Get Block List Entry · Read-only

Get one block list entry by ID.
Returns the blocked email or domain.
Use instantly_block_list_entry_get for one entry. Use instantly_block_list_entries_list to search.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the block list entry. Get it from the id field returned by instantly_block_list_entries_list. Example: "0199a4b2-d38f-7bae-8a97-123456789012".

Example input: `{"id":"0199a4b2-d38f-7bae-8a97-123456789012"}`

### `instantly_campaign_analytics_daily_get`

Get Daily Campaign Analytics · Read-only

Get day-by-day campaign analytics for one campaign or all campaigns.
Returns one row per date with sent, opened, replied, clicked and opportunity counts.
Use instantly_campaign_analytics_daily_get for trends over time. Use instantly_campaign_analytics_get for totals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, optional): Campaign ID. Leave empty for all campaigns. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `campaign_status` (`number`, optional): Only include campaigns with this status: 0 = Draft, 1 = Active, 2 = Paused, 3 = Completed, 4 = Running Subsequences, -1 = Accounts Unhealthy, -2 = Bounce Protect, -99 = Account Suspended. Example: 1. One of: `0`, `1`, `2`, `3`, `4`, `-1`, `-2`, `-99`.
- `end_date` (`string`, optional): End of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-31".
- `start_date` (`string`, optional): Start of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-01".

Example input: `{}`

### `instantly_campaign_analytics_get`

Get Campaign Analytics · Read-only

Get per-campaign analytics for one campaign, several campaigns or all campaigns, optionally within a date range.
Returns one row per campaign with leads count, contacted, emails sent, opens, replies, link clicks, bounces, unsubscribes and opportunities.
Use instantly_campaign_analytics_get for per-campaign totals. Use instantly_campaign_analytics_overview_get for combined totals and instantly_campaign_analytics_daily_get for a day-by-day series.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `end_date` (`string`, optional): End of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-31".
- `exclude_total_leads_count` (`boolean`, optional): Set true to leave out the total leads count, which makes the response much faster. Example: true.
- `id` (`string`, optional): One campaign ID to get analytics for. Leave empty (and ids empty) for all campaigns. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `ids` (`array`, optional): Several campaign IDs to get analytics for. Example: ["0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"].
- `start_date` (`string`, optional): Start of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-01".

Example input: `{}`

### `instantly_campaign_analytics_overview_get`

Get Campaign Analytics Overview · Read-only

Get combined analytics totals for one campaign, several campaigns or all campaigns.
Returns totals for emails sent, opens, replies, clicks, bounces and opportunities, plus interest outcomes (interested, meeting booked, meeting completed, closed).
Use instantly_campaign_analytics_overview_get for headline numbers. Use instantly_campaign_analytics_get for a per-campaign breakdown.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_status` (`number`, optional): Only include campaigns with this status: 0 = Draft, 1 = Active, 2 = Paused, 3 = Completed, 4 = Running Subsequences, -1 = Accounts Unhealthy, -2 = Bounce Protect, -99 = Account Suspended. Example: 1. One of: `0`, `1`, `2`, `3`, `4`, `-1`, `-2`, `-99`.
- `end_date` (`string`, optional): End of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-31".
- `expand_crm_events` (`boolean`, optional): Set true to count every interest status change event instead of only the first per contact. Example: false.
- `id` (`string`, optional): One campaign ID. Leave empty (and ids empty) for all campaigns. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `ids` (`array`, optional): Several campaign IDs. Example: ["0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"].
- `start_date` (`string`, optional): Start of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-01".

Example input: `{}`

### `instantly_campaign_analytics_steps_get`

Get Campaign Step Analytics · Read-only

Get analytics broken down by sequence step and variant for one campaign or all campaigns.
Returns sent, opened, replied and clicked counts per step and variant, and optionally opportunities.
Use instantly_campaign_analytics_steps_get to compare A/B variants or find the step that gets replies.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, optional): Campaign ID. Leave empty for all campaigns. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `end_date` (`string`, optional): End of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-31".
- `include_opportunities_count` (`boolean`, optional): Set true to add opportunities, unique opportunities, meetings booked and won counts per step. Example: true.
- `start_date` (`string`, optional): Start of the analytics range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-01".

Example input: `{}`

### `instantly_campaign_get`

Get Campaign · Read-only

Get one campaign by ID.
Returns the campaign's name, status, schedule, email sequences, sending accounts and settings.
Use instantly_campaign_get to read a campaign before changing it. Use instantly_campaigns_list to find the ID and instantly_campaign_analytics_get for its numbers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_campaign_sending_status_get`

Get Campaign Sending Status · Read-only

Explain why a campaign is not sending or is sending slower than expected.
Returns diagnostics (status, accounts, daily and new-lead limits, schedule, tracked issues) and a summary, with an optional AI-written summary.
Use instantly_campaign_sending_status_get to troubleshoot delivery. Use instantly_campaign_get for the campaign's configuration.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `with_ai_summary` (`boolean`, optional): Set true to include an AI-generated summary of the issues. Example: true.

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_campaigns_launched_count`

Count Launched Campaigns · Read-only

Count the campaigns that have been launched in the workspace.
Returns the launched campaign count.
Use instantly_campaigns_launched_count for a quick total. Use instantly_campaigns_list to see the campaigns.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `instantly_campaigns_list`

List Campaigns · Read-only

List campaigns in the Instantly workspace, optionally filtered by name, status or tag.
Returns campaigns with id, name, status, schedule and settings, plus next_starting_after for the next page.
Use instantly_campaigns_list to find a campaign ID. Use instantly_campaign_get for one campaign's full details and instantly_campaigns_search_by_lead to find campaigns that contain a given lead.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of campaigns to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Search text matched against campaign names. Example: "Q4 outreach".
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `status` (`number`, optional): Only return campaigns with this status: 0 = Draft, 1 = Active, 2 = Paused, 3 = Completed, 4 = Running Subsequences, -1 = Accounts Unhealthy, -2 = Bounce Protect, -99 = Account Suspended. Example: 1. One of: `0`, `1`, `2`, `3`, `4`, `-1`, `-2`, `-99`.
- `tag_ids` (`string`, optional): Comma-separated custom tag IDs; returns campaigns with any of these tags. Example: "0199a4b2-b16d-7f8c-8e75-901234567890".

Example input: `{}`

### `instantly_campaigns_search_by_lead`

Search Campaigns by Lead Email · Read-only

Find the campaigns that contain a lead with a given email address.
Returns the matching campaigns.
Use instantly_campaigns_search_by_lead to see where a contact is enrolled. Use instantly_campaigns_list to filter campaigns by name or status.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search` (`string`, optional): Lead email address to look up. Example: "jane@acme.com".

Example input: `{}`

### `instantly_custom_tag_get`

Get Custom Tag · Read-only

Get one custom tag by ID.
Returns the tag's label and description.
Use instantly_custom_tag_get for one tag. Use instantly_custom_tags_list to find the ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the custom tag. Get it from the id field returned by instantly_custom_tags_list. Example: "0199a4b2-b16d-7f8c-8e75-901234567890".

Example input: `{"id":"0199a4b2-b16d-7f8c-8e75-901234567890"}`

### `instantly_custom_tag_mappings_list`

List Custom Tag Assignments · Read-only

List which custom tags are attached to which sending accounts and campaigns.
Returns mappings with tag_id, resource_id and resource type, plus next_starting_after.
Use instantly_custom_tag_mappings_list to audit tag assignments. Use instantly_custom_tags_list for the tags themselves.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of mappings to return per page, from 1 to 100. Example: 25.
- `resource_ids` (`string`, optional): Comma-separated account or campaign IDs to filter by. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{}`

### `instantly_custom_tags_list`

List Custom Tags · Read-only

List the custom tags used to group sending accounts and campaigns.
Returns tags with id, label and description, plus next_starting_after.
Use instantly_custom_tags_list to find tag IDs for filtering accounts and campaigns. Use instantly_custom_tag_mappings_list to see which resources carry which tags.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of tags to return per page, from 1 to 100. Example: 25.
- `resource_ids` (`string`, optional): Comma-separated account or campaign IDs; returns the tags on those resources. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `search` (`string`, optional): Search text matched against tag labels. Example: "Q4 outreach".
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `tag_ids` (`string`, optional): Comma-separated tag IDs to return. Example: "0199a4b2-b16d-7f8c-8e75-901234567890".

Example input: `{}`

### `instantly_email_get`

Get Email · Read-only

Get one Unibox email by ID.
Returns the email's sender, recipients, subject, HTML and text body, thread_id, campaign, lead and timestamps.
Use instantly_email_get to read a full message. Use instantly_emails_list to find the ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the email. Get it from the id field returned by instantly_emails_list. Example: "0199a4b2-9f4b-7d6a-8c53-7e8f90123456".

Example input: `{"id":"0199a4b2-9f4b-7d6a-8c53-7e8f90123456"}`

### `instantly_email_verification_get`

Get Email Verification Status · Read-only

Get the status and result of an email verification.
Returns the email, verification_status (pending, verified or invalid), catch_all and credits used.
Use instantly_email_verification_get after instantly_email_verification_create returns pending.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Email address that was submitted for verification. Example: "jane@acme.com".

Example input: `{"email":"jane@acme.com"}`

### `instantly_emails_list`

List Emails · Read-only

List emails in the Instantly Unibox (sent and received), filtered by campaign, list, lead, sending account, thread, read state or date.
Returns emails with id, thread_id, from, to, subject, body, timestamps and lead details, plus next_starting_after. This endpoint allows 20 requests per minute.
Use instantly_emails_list to read conversations and find an email ID to reply to. Use instantly_email_get for one email.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `assigned_to` (`string`, optional): Only emails whose lead is assigned to this user ID. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `campaign_id` (`string`, optional): Only emails from this campaign. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `company_domain` (`string`, optional): Only emails with leads at this company domain. Example: "acme.com".
- `eaccount` (`string`, optional): Only emails sent or received by these sending accounts (comma-separated). Example: "john@acme-mail.com".
- `email_type` (`string`, optional): Only this type of email: received, sent or manual. Example: "received". One of: `received`, `sent`, `manual`.
- `has_reminder` (`boolean`, optional): Set true for only emails with a reminder. Example: false.
- `is_unread` (`boolean`, optional): Set true for only unread emails. Example: true.
- `latest_of_thread` (`boolean`, optional): Set true to return only the latest email in each thread. Example: true.
- `lead` (`string`, optional): Only emails with this lead email address. Example: "jane@acme.com".
- `limit` (`integer`, optional): Number of emails to return per page, from 1 to 100. Example: 25.
- `list_id` (`string`, optional): Only emails for leads in this lead list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `marked_as_done` (`boolean`, optional): Set true for only emails marked as done. Example: false.
- `max_timestamp_created` (`string`, optional): Only emails created before this ISO 8601 time. Example: "2026-01-31T23:59:59Z".
- `min_timestamp_created` (`string`, optional): Only emails created after this ISO 8601 time. Example: "2026-01-01T00:00:00Z".
- `mode` (`string`, optional): Unibox view: emode_focused (primary), emode_others or emode_all. Example: "emode_all". One of: `emode_focused`, `emode_others`, `emode_all`.
- `preview_only` (`boolean`, optional): Set true to return a short preview instead of the full body. Example: true.
- `scheduled_only` (`boolean`, optional): Set true for only scheduled emails. Example: false.
- `search` (`string`, optional): A lead email address, or "thread:" followed by a thread ID to get one thread. Example: "thread:0199a4b3-06bc-7ed1-9dca-456789012345".
- `sort_order` (`string`, optional): Sort by creation time: asc or desc (default desc). Example: "desc". One of: `asc`, `desc`.
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{}`

### `instantly_emails_unread_count`

Count Unread Emails · Read-only

Count unread emails in the Unibox.
Returns the unread count.
Use instantly_emails_unread_count to check for new replies. Use instantly_emails_list with is_unread true to read them.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `instantly_lead_get`

Get Lead · Read-only

Get one lead by ID.
Returns the lead's email, name, company, campaign or list, status, interest status, engagement counts and custom variables.
Use instantly_lead_get for a lead's details. Use instantly_leads_list to find the lead ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead. Get it from the id field returned by instantly_leads_list. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".

Example input: `{"id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"}`

### `instantly_lead_label_get`

Get Lead Label · Read-only

Get one custom lead label by ID.
Returns the label text, sentiment, description and interest status value.
Use instantly_lead_label_get for one label. Use instantly_lead_labels_list to find the ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead label. Get it from the id field returned by instantly_lead_labels_list. Example: "0199a4b2-c27e-7a9d-9f86-012345678901".

Example input: `{"id":"0199a4b2-c27e-7a9d-9f86-012345678901"}`

### `instantly_lead_labels_list`

List Lead Labels · Read-only

List the custom lead labels (custom interest statuses) in the workspace.
Returns labels with id, label text, sentiment (positive, neutral or negative) and interest status value, plus next_starting_after.
Use instantly_lead_labels_list to find custom interest status values for instantly_lead_interest_status_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `interest_status` (`string`, optional): Only labels with this sentiment: positive, neutral or negative. Example: "positive". One of: `positive`, `neutral`, `negative`.
- `limit` (`integer`, optional): Number of lead labels to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Search text matched against lead label names. Example: "Q4 outreach".
- `starting_after` (`string`, optional): Pagination cursor: the next_starting_after value from the previous response. Example: "2026-01-15T10:00:00.000Z".

Example input: `{}`

### `instantly_lead_list_get`

Get Lead List · Read-only

Get one lead list by ID.
Returns the list's name, owner, enrichment setting and creation time.
Use instantly_lead_list_get for list details. Use instantly_lead_lists_list to find the ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead list. Get it from the id field returned by instantly_lead_lists_list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".

Example input: `{"id":"0199a4b2-8e3a-7c5f-9b42-6d7e8f901234"}`

### `instantly_lead_list_verification_stats_get`

Get Lead List Verification Stats · Read-only

Get email verification statistics for the leads in a lead list.
Returns total_leads and counts of leads by verification result: verified, invalid, risky, catch-all, job change and pending.
Use instantly_lead_list_verification_stats_get to check list quality before sending.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead list. Get it from the id field returned by instantly_lead_lists_list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".

Example input: `{"id":"0199a4b2-8e3a-7c5f-9b42-6d7e8f901234"}`

### `instantly_lead_lists_list`

List Lead Lists · Read-only

List the lead lists in the workspace, optionally filtered by name.
Returns lists with id, name, owner, enrichment setting and creation time, plus next_starting_after for the next page.
Use instantly_lead_lists_list to find a list ID. Use instantly_leads_list with list_id to see the leads in a list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `has_enrichment_task` (`boolean`, optional): Set true for only lists that enrich every added lead, false for only lists that do not. Example: false.
- `limit` (`integer`, optional): Number of lead lists to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Search text matched against lead list names. Example: "Q4 outreach".
- `starting_after` (`string`, optional): Pagination cursor: the next_starting_after value from the previous response. Leave empty for the first page. Example: "2026-01-15T10:00:00.000Z".

Example input: `{}`

### `instantly_leads_list`

List Leads · Read-only

List or search leads, filtered by campaign, lead list, state, IDs or email addresses.
Returns leads with id, email, name, company, status, interest status and custom variables, plus next_starting_after for the next page.
Use instantly_leads_list to find leads. Use instantly_lead_get for one lead and instantly_campaigns_search_by_lead to find a lead's campaigns.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, optional): Only return leads in this campaign. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `contacts` (`array`, optional): Only return leads with these email addresses. Example: ["jane@acme.com"].
- `distinct_contacts` (`boolean`, optional): Set true to return each contact (email) once even if it is in several campaigns or lists. Paginate with the email as the cursor. Example: false.
- `excluded_ids` (`array`, optional): Leave out these lead IDs. Example: ["0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"].
- `filter` (`string`, optional): Only return leads in this state, for example FILTER_VAL_CONTACTED, FILTER_VAL_NOT_CONTACTED, FILTER_LEAD_INTERESTED, FILTER_LEAD_MEETING_BOOKED, FILTER_VAL_BOUNCED or FILTER_VAL_REPLIED. Example: "FILTER_VAL_REPLIED". One of: `FILTER_VAL_CONTACTED`, `FILTER_VAL_NOT_CONTACTED`, `FILTER_VAL_COMPLETED`, `FILTER_VAL_UNSUBSCRIBED`, `FILTER_VAL_ACTIVE`, `FILTER_LEAD_INTERESTED`, `FILTER_LEAD_NOT_INTERESTED`, `FILTER_LEAD_MEETING_BOOKED`, `FILTER_LEAD_MEETING_COMPLETED`, `FILTER_LEAD_CLOSED`, `FILTER_LEAD_OUT_OF_OFFICE`, `FILTER_LEAD_WRONG_PERSON`, `FILTER_LEAD_LOST`, `FILTER_LEAD_NO_SHOW`, `FILTER_LEAD_CUSTOM_LABEL_POSITIVE`, `FILTER_LEAD_CUSTOM_LABEL_NEGATIVE`, `FILTER_VAL_BOUNCED`, `FILTER_VAL_SKIPPED`, `FILTER_VAL_RISKY`, `FILTER_VAL_INVALID`, `FILTER_VAL_VALID`, `FILTER_VAL_CATCH_ALL`, `FILTER_VAL_NOT_VERIFIED`, `FILTER_VAL_IN_SUBSEQUENCE`, `FILTER_VAL_OPENED_NO_REPLY`, `FILTER_VAL_COMPLETED_NO_REPLY`, `FILTER_VAL_NO_OPENS`, `FILTER_VAL_REPLIED`, `FILTER_VAL_LINK_CLICKED`.
- `ids` (`array`, optional): Only return these lead IDs. Example: ["0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"].
- `in_campaign` (`boolean`, optional): Set true to return only leads that are in a campaign, false for only leads that are not. Example: true.
- `in_list` (`boolean`, optional): Set true to return only leads that are in a lead list, false for only leads that are not. Example: false.
- `limit` (`integer`, optional): Number of leads to return per page, from 1 to 100. Example: 25.
- `list_id` (`string`, optional): Only return leads in this lead list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `search` (`string`, optional): Text matched against the lead's email and profile fields (name, company, job title). Matches whole words or the start of a value. Example: "jane@acme.com".
- `starting_after` (`string`, optional): Pagination cursor: the next_starting_after value from the previous response (a lead ID, or an email when distinct_contacts is true). Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".

Example input: `{}`

### `instantly_subsequence_analytics_steps_get`

Get Subsequence Step Analytics · Read-only

Get engagement metrics by step and variant for one subsequence, excluding its parent campaign.
Returns per step and variant sent, opened, replied and clicked counts.
Use instantly_subsequence_analytics_steps_get to compare subsequence variants.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".
- `end_date` (`string`, optional): Inclusive end of the range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-31".
- `start_date` (`string`, optional): Inclusive start of the range. Accepts a date (YYYY-MM-DD, read as UTC midnight) or a full ISO 8601 timestamp. Example: "2026-01-01".

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_subsequence_get`

Get Subsequence · Read-only

Get one subsequence by ID.
Returns its name, parent campaign, trigger conditions, schedule, email steps and limits.
Use instantly_subsequence_get before editing a subsequence.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_subsequence_sending_status_get`

Get Subsequence Sending Status · Read-only

Explain why a subsequence is not sending or is sending slower than expected.
Returns diagnostics (status, accounts, limits, schedule, tracked issues) and a summary, with an optional AI-written summary.
Use instantly_subsequence_sending_status_get to troubleshoot a subsequence.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".
- `with_ai_summary` (`boolean`, optional): Set true to include an AI-generated summary. Example: true.

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_subsequences_analytics_get`

Get Subsequence Analytics · Read-only

Get engagement totals for each subsequence of a campaign.
Returns per-subsequence emails sent, unique opens and unique replies.
Use instantly_subsequences_analytics_get to compare subsequences. Use instantly_subsequence_analytics_steps_get for one subsequence by step.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, required): Campaign whose subsequences to report on. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{"campaign_id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_subsequences_list`

List Subsequences · Read-only

List campaign subsequences (follow-up sequences triggered by lead status or activity), optionally for one campaign.
Returns subsequences with id, name, parent_campaign, status and conditions, plus next_starting_after.
Use instantly_subsequences_list to find a subsequence ID. Use instantly_subsequence_get for its full sequence.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Number of subsequences to return per page, from 1 to 100. Example: 25.
- `parent_campaign` (`string`, optional): Only subsequences of this campaign. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `search` (`string`, optional): Search text matched against subsequence names. Example: "Q4 outreach".
- `starting_after` (`string`, optional): Pagination cursor. Pass the next_starting_after value from the previous response to get the next page. Leave empty for the first page. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{}`

### `instantly_workspace_get`

Get Workspace · Read-only

Get the workspace that the connected API key belongs to.
Returns the workspace id, name, owner, plan IDs and settings.
Use instantly_workspace_get to confirm which workspace the connection uses.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `instantly_account_mark_fixed`

Mark Account as Fixed · Write

Set a sending account back to active and clear leftover error details after you fix its connection problem.
Returns the updated account.
Use instantly_account_mark_fixed after fixing a connection or sending error. Use instantly_account_resume for an account you paused.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_account_pause`

Pause Sending Account · Write

Pause one sending account so it stops sending.
Returns the updated account.
Use instantly_account_pause for one account, instantly_accounts_pause for up to 100, and instantly_account_resume to restart it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_account_resume`

Resume Sending Account · Write

Resume a paused sending account.
Returns the updated account.
Use instantly_account_resume after instantly_account_pause. Use instantly_account_mark_fixed for an account in an error state.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_account_update`

Update Sending Account · Write

Update a sending account's name, daily limit, sending gap, signature, reply-to, tracking domain or warmup settings. Only the fields you provide change.
Returns the updated account.
Use instantly_account_update to tune an account. Use instantly_accounts_warmup_enable or instantly_accounts_warmup_disable to switch warmup on or off.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".
- `daily_limit` (`number`, optional): Maximum emails this account sends per day. Example: 40.
- `enable_slow_ramp` (`boolean`, optional): Set true to ramp the sending limit up gradually. Example: true.
- `first_name` (`string`, optional): Sender first name. Example: "John".
- `inbox_placement_test_limit` (`number`, optional): Limit for inbox placement tests on this account. Example: 5.
- `last_name` (`string`, optional): Sender last name. Example: "Smith".
- `reply_to` (`string`, optional): Custom reply-to address for this account. Example: "sales@acme.com".
- `sending_gap` (`number`, optional): Minimum minutes between emails from this account across campaigns. Example: 10.
- `signature` (`string`, optional): Email signature (HTML allowed). Example: "John Smith<br/>Acme Inc".
- `tracking_domain_name` (`string`, optional): Custom tracking domain for open and click tracking. Example: "track.acme-mail.com".
- `warmup` (`object`, optional): Warmup settings: limit (warmup emails per day), increment ("disabled" or "0"-"4", daily ramp toward the limit), reply_rate (percent), warmup_custom_ftag (custom tag), and advanced options such as weekday_only, read_emulation, open_rate and spam_save_rate. Example: {"limit": 20, "increment": "1", "reply_rate": 30, "advanced": {"weekday_only": true}}.

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_accounts_pause`

Pause Sending Accounts · Write

Pause up to 100 sending accounts at once.
Returns paused_emails and failed_emails lists.
Use instantly_accounts_pause for several accounts. Use instantly_account_pause for one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `emails` (`array`, required): Account email addresses to pause (up to 100). Example: ["john@acme-mail.com", "jane@acme-mail.com"].

Example input: `{"emails":["john@acme-mail.com","jane@acme-mail.com"]}`

### `instantly_accounts_warmup_disable`

Disable Warmup · Write

Turn off warmup for the listed sending accounts, or for all accounts.
Returns a background job; poll instantly_background_job_get with its id.
Use instantly_accounts_warmup_disable to stop warming accounts. Use instantly_accounts_warmup_enable to start.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `emails` (`array`, optional): Sending account email addresses to change. Example: ["john@acme-mail.com"].
- `excluded_emails` (`array`, optional): Accounts to leave out when include_all_emails is true. Example: ["jane@acme-mail.com"].
- `include_all_emails` (`boolean`, optional): Set true to apply to every account in the workspace instead of the emails list. Example: false.
- `search` (`string`, optional): When include_all_emails is true, only apply to accounts matching this text. Example: "acme-mail.com".

Example input: `{}`

### `instantly_accounts_warmup_enable`

Enable Warmup · Write

Turn on warmup for the listed sending accounts, or for all accounts.
Returns a background job; poll instantly_background_job_get with its id.
Use instantly_accounts_warmup_enable to start warming accounts. Use instantly_accounts_warmup_disable to stop.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `emails` (`array`, optional): Sending account email addresses to change. Example: ["john@acme-mail.com"].
- `excluded_emails` (`array`, optional): Accounts to leave out when include_all_emails is true. Example: ["jane@acme-mail.com"].
- `include_all_emails` (`boolean`, optional): Set true to apply to every account in the workspace instead of the emails list. Example: false.
- `search` (`string`, optional): When include_all_emails is true, only apply to accounts matching this text. Example: "acme-mail.com".

Example input: `{}`

### `instantly_block_list_entries_create`

Block Emails or Domains in Bulk · Write

Add many email addresses or domains to the block list at once.
Returns the created entries with valid and invalid counts.
Use instantly_block_list_entries_create for bulk blocking. Use instantly_block_list_entry_create for one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bl_values` (`array`, required): Emails or domains to block. Example: ["competitor.com", "noreply@acme.com"].

Example input: `{"bl_values":["competitor.com","noreply@acme.com"]}`

### `instantly_block_list_entry_create`

Block Email or Domain · Write

Add an email address or a whole domain to the workspace block list so Instantly never emails it.
Returns the created entry.
Use instantly_block_list_entry_create for one value. Use instantly_block_list_entries_create for many.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bl_value` (`string`, required): Email address or domain to block. Example: "competitor.com".

Example input: `{"bl_value":"competitor.com"}`

### `instantly_block_list_entry_update`

Update Block List Entry · Write

Change the email or domain of a block list entry.
Returns the updated entry.
Use instantly_block_list_entry_update to correct an entry.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the block list entry. Get it from the id field returned by instantly_block_list_entries_list. Example: "0199a4b2-d38f-7bae-8a97-123456789012".
- `bl_value` (`string`, optional): New email or domain to block. Example: "competitor.io".

Example input: `{"id":"0199a4b2-d38f-7bae-8a97-123456789012"}`

### `instantly_campaign_activate`

Activate Campaign · Write

Start a draft campaign or resume a paused one, so it begins sending on its schedule.
Returns the campaign with its updated status.
Use instantly_campaign_activate once the campaign has leads, sending accounts and a sequence. Use instantly_campaign_pause to stop it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_campaign_create`

Create Campaign · Write

Create a new email campaign with a sending schedule, optional email sequence and sending settings.
Returns the created campaign with its id and status 0 (Draft).
Use instantly_campaign_create to set up outreach, then add leads with instantly_leads_add and start it with instantly_campaign_activate.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_schedule` (`object`, required): When the campaign may send. Give a schedules array with one or more windows; each window has a name, timing.from and timing.to in 24-hour HH:MM, a days object whose keys "0" to "6" are days of the week set to true or false, and a timezone. Instantly accepts only its own list of timezone names (for example America/Chicago, America/Detroit, Europe/Helsinki, Asia/Kolkata, Australia/Melbourne); America/New_York and UTC are not on that list. Optional start_date and end_date are YYYY-MM-DD in the campaign's timezone. Example: {"schedules": [{"name": "Weekdays", "timing": {"from": "09:00", "to": "17:00"}, "days": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "timezone": "America/Chicago"}], "start_date": "2026-11-01"}.
- `name` (`string`, required): Name of the campaign. Example: "Q4 SaaS founders".
- `allow_risky_contacts` (`boolean`, optional): Set true to send to leads whose email verified as risky. Example: false.
- `bcc_list` (`array`, optional): Email addresses to BCC on every campaign email. Example: ["crm@acme.com"].
- `cc_list` (`array`, optional): Email addresses to CC on every campaign email. Example: ["manager@acme.com"].
- `daily_limit` (`number`, optional): Maximum emails the campaign sends per day across all accounts. Example: 50.
- `daily_max_leads` (`integer`, optional): Maximum new leads the campaign contacts per day. Example: 20.
- `disable_bounce_protect` (`boolean`, optional): Set true to turn off Instantly's bounce protection for this campaign. Example: false.
- `email_gap` (`number`, optional): Minutes to wait between emails sent by the campaign. Example: 10.
- `email_list` (`array`, optional): Sending account email addresses to send this campaign from. They must be accounts connected to the workspace (see instantly_accounts_list). Example: ["john@acme-mail.com", "jane@acme-mail.com"].
- `email_tag_list` (`array`, optional): Account tag IDs; every sending account with one of these tags is used. Get tag IDs from instantly_custom_tags_list. Example: ["0199a4b2-b16d-7f8c-8e75-901234567890"].
- `first_email_text_only` (`boolean`, optional): Set true to send only the first email of the sequence as plain text. Example: true.
- `insert_unsubscribe_header` (`boolean`, optional): Set true to add a List-Unsubscribe header to emails. Example: true.
- `is_evergreen` (`boolean`, optional): Set true to make the campaign evergreen so it keeps accepting and sending to new leads. Example: false.
- `link_tracking` (`boolean`, optional): Set true to track link clicks. Example: false.
- `match_lead_esp` (`boolean`, optional): Set true to match each lead with a sending account on the same email provider (Google to Google, Microsoft to Microsoft). Example: false.
- `open_tracking` (`boolean`, optional): Set true to track email opens. Example: false.
- `owned_by` (`string`, optional): User ID of the campaign owner. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `pl_value` (`number`, optional): Value assigned to each positive lead, used in analytics. Example: 500.
- `prioritize_new_leads` (`boolean`, optional): Set true to contact new leads before follow-ups. Example: false.
- `random_wait_max` (`number`, optional): Upper bound, in minutes, of a random extra wait added between emails. Example: 5.
- `sequences` (`array`, optional): The email copy, as an array with exactly one sequence object (Instantly uses only the first). The sequence has a steps array; each step has type "email", a delay before the next step (delay_unit minutes, hours or days; days by default) and a variants array of one or more {subject, body} emails for A/B testing. Bodies are HTML; use <br/> for line breaks and {{firstName}}-style variables for personalization. Set v_disabled true on a variant to switch it off. Example: [{"steps": [{"type": "email", "delay": 2, "delay_unit": "days", "variants": [{"subject": "Quick question, {{firstName}}", "body": "Hi {{firstName}},<br/><br/>Are you the right person to talk to about outbound?"}]}, {"type": "email", "delay": 3, "variants": [{"subject": "Re: Quick question", "body": "Just following up."}]}]}].
- `stop_for_company` (`boolean`, optional): Set true to stop the campaign for every lead at the same company domain when one lead replies. Example: false.
- `stop_on_auto_reply` (`boolean`, optional): Set true to also stop when the reply is an automatic reply such as out of office. Example: false.
- `stop_on_reply` (`boolean`, optional): Set true to stop sending to a lead once they reply. Example: true.
- `text_only` (`boolean`, optional): Set true to send every email as plain text. Example: false.

Example input: `{"campaign_schedule":{},"name":"Q4 SaaS founders"}`

### `instantly_campaign_duplicate`

Duplicate Campaign · Write

Make a copy of a campaign with its sequence and settings.
Returns the new campaign.
Use instantly_campaign_duplicate to reuse a working campaign as a template. Use instantly_campaign_create to start from scratch.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `name` (`string`, optional): Name for the copy. Defaults to the original name followed by (copy). Example: "Q4 SaaS founders - EU".

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_campaign_pause`

Pause Campaign · Write

Pause (stop) a running campaign so it sends no more emails until it is activated again.
Returns the campaign with its updated status.
Use instantly_campaign_pause to halt sending. Use instantly_campaign_activate to resume.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_campaign_update`

Update Campaign · Write

Update a campaign's name, schedule, email sequence or sending settings. Only the fields you provide change.
Returns the updated campaign.
Use instantly_campaign_update to edit a campaign. Use instantly_campaign_activate or instantly_campaign_pause to start or stop sending.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `allow_risky_contacts` (`boolean`, optional): Set true to send to leads whose email verified as risky. Example: false.
- `bcc_list` (`array`, optional): Email addresses to BCC on every campaign email. Example: ["crm@acme.com"].
- `campaign_schedule` (`object`, optional): When the campaign may send. Give a schedules array with one or more windows; each window has a name, timing.from and timing.to in 24-hour HH:MM, a days object whose keys "0" to "6" are days of the week set to true or false, and a timezone. Instantly accepts only its own list of timezone names (for example America/Chicago, America/Detroit, Europe/Helsinki, Asia/Kolkata, Australia/Melbourne); America/New_York and UTC are not on that list. Optional start_date and end_date are YYYY-MM-DD in the campaign's timezone. Example: {"schedules": [{"name": "Weekdays", "timing": {"from": "09:00", "to": "17:00"}, "days": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "timezone": "America/Chicago"}], "start_date": "2026-11-01"}. Sending this replaces the whole schedule.
- `cc_list` (`array`, optional): Email addresses to CC on every campaign email. Example: ["manager@acme.com"].
- `daily_limit` (`number`, optional): Maximum emails the campaign sends per day across all accounts. Example: 50.
- `daily_max_leads` (`integer`, optional): Maximum new leads the campaign contacts per day. Example: 20.
- `disable_bounce_protect` (`boolean`, optional): Set true to turn off Instantly's bounce protection for this campaign. Example: false.
- `email_gap` (`number`, optional): Minutes to wait between emails sent by the campaign. Example: 10.
- `email_list` (`array`, optional): Sending account email addresses to send this campaign from. They must be accounts connected to the workspace (see instantly_accounts_list). Example: ["john@acme-mail.com", "jane@acme-mail.com"].
- `email_tag_list` (`array`, optional): Account tag IDs; every sending account with one of these tags is used. Get tag IDs from instantly_custom_tags_list. Example: ["0199a4b2-b16d-7f8c-8e75-901234567890"].
- `first_email_text_only` (`boolean`, optional): Set true to send only the first email of the sequence as plain text. Example: true.
- `insert_unsubscribe_header` (`boolean`, optional): Set true to add a List-Unsubscribe header to emails. Example: true.
- `is_evergreen` (`boolean`, optional): Set true to make the campaign evergreen so it keeps accepting and sending to new leads. Example: false.
- `link_tracking` (`boolean`, optional): Set true to track link clicks. Example: false.
- `match_lead_esp` (`boolean`, optional): Set true to match each lead with a sending account on the same email provider (Google to Google, Microsoft to Microsoft). Example: false.
- `name` (`string`, optional): New name of the campaign. Example: "Q4 SaaS founders v2".
- `open_tracking` (`boolean`, optional): Set true to track email opens. Example: false.
- `owned_by` (`string`, optional): User ID of the campaign owner. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `pl_value` (`number`, optional): Value assigned to each positive lead, used in analytics. Example: 500.
- `prioritize_new_leads` (`boolean`, optional): Set true to contact new leads before follow-ups. Example: false.
- `random_wait_max` (`number`, optional): Upper bound, in minutes, of a random extra wait added between emails. Example: 5.
- `sequences` (`array`, optional): The email copy, as an array with exactly one sequence object (Instantly uses only the first). The sequence has a steps array; each step has type "email", a delay before the next step (delay_unit minutes, hours or days; days by default) and a variants array of one or more {subject, body} emails for A/B testing. Bodies are HTML; use <br/> for line breaks and {{firstName}}-style variables for personalization. Set v_disabled true on a variant to switch it off. Example: [{"steps": [{"type": "email", "delay": 2, "delay_unit": "days", "variants": [{"subject": "Quick question, {{firstName}}", "body": "Hi {{firstName}},<br/><br/>Are you the right person to talk to about outbound?"}]}, {"type": "email", "delay": 3, "variants": [{"subject": "Re: Quick question", "body": "Just following up."}]}]}]. Sending this replaces the whole sequence.
- `stop_for_company` (`boolean`, optional): Set true to stop the campaign for every lead at the same company domain when one lead replies. Example: false.
- `stop_on_auto_reply` (`boolean`, optional): Set true to also stop when the reply is an automatic reply such as out of office. Example: false.
- `stop_on_reply` (`boolean`, optional): Set true to stop sending to a lead once they reply. Example: true.
- `text_only` (`boolean`, optional): Set true to send every email as plain text. Example: false.

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_campaign_variables_add`

Add Campaign Variables · Write

Add custom variable names to a campaign so they can be used as {{variable}} in its emails and filled per lead.
Returns the updated campaign.
Use instantly_campaign_variables_add before writing emails that use new variables. Set the values per lead with instantly_lead_update custom_variables.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `variables` (`array`, required): Variable names to add. Example: ["industry", "pain_point"].

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90","variables":["industry","pain_point"]}`

### `instantly_custom_tag_create`

Create Custom Tag · Write

Create a custom tag for grouping sending accounts and campaigns.
Returns the created tag with its id.
Use instantly_custom_tag_create, then attach it with instantly_custom_tags_assign.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `label` (`string`, required): Tag label, unique in the workspace. Example: "EU senders".
- `description` (`string`, optional): What the tag is for. Example: "Accounts on EU domains.".

Example input: `{"label":"EU senders"}`

### `instantly_custom_tag_update`

Update Custom Tag · Write

Rename a custom tag or change its description.
Returns the updated tag.
Use instantly_custom_tag_update to edit a tag.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the custom tag. Get it from the id field returned by instantly_custom_tags_list. Example: "0199a4b2-b16d-7f8c-8e75-901234567890".
- `description` (`string`, optional): New description. Example: "Accounts on EU domains.".
- `label` (`string`, optional): New tag label, unique in the workspace. Example: "EU senders 2026".

Example input: `{"id":"0199a4b2-b16d-7f8c-8e75-901234567890"}`

### `instantly_custom_tags_assign`

Assign or Unassign Custom Tags · Write

Attach custom tags to, or detach them from, sending accounts or campaigns.
Returns a success flag.
Use instantly_custom_tags_assign to group accounts or campaigns. Use instantly_custom_tag_mappings_list to see current assignments.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `assign` (`boolean`, required): true attaches the tags; false detaches them. Example: true.
- `resource_type` (`number`, required): Kind of resource: 1 = sending account, 2 = campaign, 3 = workspace. Example: 2. One of: `1`, `2`, `3`.
- `tag_ids` (`array`, required): Tag IDs to attach or detach. Example: ["0199a4b2-b16d-7f8c-8e75-901234567890"].
- `excluded_resource_ids` (`array`, optional): Resource IDs to leave out when selected_all is true. Example: ["0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"].
- `resource_ids` (`array`, optional): Account or campaign IDs to change. Required unless selected_all is true. Example: ["0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"].
- `selected_all` (`boolean`, optional): Set true to apply to every resource of this type. Example: false.

Example input: `{"assign":true,"resource_type":2,"tag_ids":["0199a4b2-b16d-7f8c-8e75-901234567890"]}`

### `instantly_email_forward`

Forward Email · Write

Forward an existing email to other recipients from a connected sending account, optionally with the original message appended.
Returns the sent email.
Use instantly_email_forward to share a conversation. Use instantly_email_reply to answer the lead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `eaccount` (`string`, required): Sending account email address to send from. It must be an account connected to the workspace (see instantly_accounts_list). Example: "john@acme-mail.com".
- `reply_to_uuid` (`string`, required): ID of the existing email, from the id field of instantly_emails_list or instantly_email_get. Example: "0199a4b2-9f4b-7d6a-8c53-7e8f90123456".
- `subject` (`string`, required): Subject line of the forwarded email. Example: "Fwd: Quick question".
- `to_address_email_list` (`string`, required): Comma-separated recipient email addresses. Example: "ae@acme.com".
- `assigned_to` (`string`, optional): User ID to assign the lead to. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `bcc_address_email_list` (`string`, optional): Comma-separated email addresses to BCC. Example: "crm@acme.com".
- `body_html` (`string`, optional): Optional HTML note to send; it goes above the original email when include_original_body is true. Use <br/> for line breaks. Example: "FYI - warm lead below.".
- `body_text` (`string`, optional): Optional plain-text note to send. Example: "FYI - warm lead below.".
- `cc_address_email_list` (`string`, optional): Comma-separated email addresses to CC. Example: "manager@acme.com,ops@acme.com".
- `include_original_body` (`boolean`, optional): Set true to append the original email's headers and content after your note. Defaults to false. Example: true.
- `reply_to` (`string`, optional): Reply-to address recipients should answer to. Example: "sales@acme.com".

Example input: `{"eaccount":"john@acme-mail.com","reply_to_uuid":"0199a4b2-9f4b-7d6a-8c53-7e8f90123456","subject":"Fwd: Quick question","to_address_email_list":"ae@acme.com"}`

### `instantly_email_reply`

Reply to Email · Write

Send a reply in an existing email thread from a connected sending account.
Returns the sent email.
Use instantly_email_reply to answer a lead. Use instantly_email_forward to send the email to someone else and instantly_email_test_send for a preview that is not tied to a thread.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `eaccount` (`string`, required): Sending account email address to send from. It must be an account connected to the workspace (see instantly_accounts_list). Example: "john@acme-mail.com".
- `reply_to_uuid` (`string`, required): ID of the existing email, from the id field of instantly_emails_list or instantly_email_get. Example: "0199a4b2-9f4b-7d6a-8c53-7e8f90123456".
- `subject` (`string`, required): Subject line of the reply. Example: "Re: Quick question".
- `additional_recipients` (`array`, optional): Extra recipient email addresses besides the original sender. Example: ["cto@acme.com"].
- `assigned_to` (`string`, optional): User ID to assign the lead to. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `bcc_address_email_list` (`string`, optional): Comma-separated email addresses to BCC. Example: "crm@acme.com".
- `body_html` (`string`, optional): HTML body of the email. Use <br/> for line breaks. Example: "Hi Jane,<br/><br/>Thanks for getting back to me.". Provide body_html, body_text or both.
- `body_text` (`string`, optional): Plain-text body of the email. Example: "Hi Jane, thanks for getting back to me.". Provide body_html, body_text or both.
- `cc_address_email_list` (`string`, optional): Comma-separated email addresses to CC. Example: "manager@acme.com,ops@acme.com".
- `reminder_ts` (`string`, optional): ISO 8601 time to show a reminder for this email in the Unibox. Example: "2026-02-01T09:00:00Z".

Example input: `{"eaccount":"john@acme-mail.com","reply_to_uuid":"0199a4b2-9f4b-7d6a-8c53-7e8f90123456","subject":"Re: Quick question"}`

### `instantly_email_test_send`

Send Test Email · Write

Send a preview or test email from a connected sending account without creating a Unibox email. Limited to 10 requests per minute per workspace.
Returns an empty success response.
Use instantly_email_test_send to check how an email renders. Use instantly_email_reply to answer a real thread.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body_html` (`string`, required): HTML body of the test email. Use <br/> for line breaks. Example: "Hi {{firstName}},<br/><br/>Testing the copy.".
- `eaccount` (`string`, required): Sending account email address to send from. It must be an account connected to the workspace (see instantly_accounts_list). Example: "john@acme-mail.com".
- `subject` (`string`, required): Subject line of the test email. Example: "Test: Quick question".
- `to_address_email_list` (`string`, required): Comma-separated recipients of the test email. Example: "me@acme.com".

Example input: `{"body_html":"Hi {{firstName}},<br/><br/>Testing the copy.","eaccount":"john@acme-mail.com","subject":"Test: Quick question","to_address_email_list":"me@acme.com"}`

### `instantly_email_thread_mark_read`

Mark Thread as Read · Write

Mark every email in a Unibox thread as read.
Returns a success flag.
Use instantly_email_thread_mark_read after handling a conversation. Use instantly_email_update for one email.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `thread_id` (`string`, required): Thread ID, from the thread_id field of instantly_emails_list. Example: "0199a4b3-06bc-7ed1-9dca-456789012345".

Example input: `{"thread_id":"0199a4b3-06bc-7ed1-9dca-456789012345"}`

### `instantly_email_update`

Update Email · Write

Mark a Unibox email as read or unread, or set its reminder.
Returns the updated email.
Use instantly_email_update for one email. Use instantly_email_thread_mark_read to mark a whole thread read.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the email. Get it from the id field returned by instantly_emails_list. Example: "0199a4b2-9f4b-7d6a-8c53-7e8f90123456".
- `is_unread` (`number`, optional): 1 marks the email unread, 0 marks it read. Example: 0. One of: `0`, `1`.
- `reminder_ts` (`string`, optional): ISO 8601 time for a Unibox reminder on this email. Example: "2026-02-01T09:00:00Z".

Example input: `{"id":"0199a4b2-9f4b-7d6a-8c53-7e8f90123456"}`

### `instantly_email_verification_create`

Verify Email Address · Write

Verify whether an email address is deliverable. Results that take over 10 seconds come back as pending.
Returns the email, verification_status (pending, verified or invalid), catch_all and credits used.
Use instantly_email_verification_create to start a check. Use instantly_email_verification_get to fetch a pending result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `email` (`string`, required): Email address to verify. Example: "jane@acme.com".
- `webhook_url` (`string`, optional): URL that receives the result if verification takes longer than 10 seconds. Example: "https://example.com/hooks/verify".

Example input: `{"email":"jane@acme.com"}`

### `instantly_lead_create`

Create Lead · Write

Create a single lead and optionally add it to a campaign or lead list.
Returns the created lead with its id.
Use instantly_lead_create for one lead. Use instantly_leads_add to import up to 1000 leads at once.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `assigned_to` (`string`, optional): User ID to assign the lead to. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `blocklist_id` (`string`, optional): Block list ID to check the lead against. Leave empty to use the workspace default block list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `campaign_id` (`string`, optional): Campaign to add the lead to. Use campaign_id or list_id. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `company_name` (`string`, optional): Lead's company name. Example: "Acme Inc".
- `custom_variables` (`object`, optional): Custom fields for the lead as key-value pairs, usable as {{variable}} in emails. Values should be strings, numbers, booleans or null. The campaign gains these variables for all its leads. Example: {"industry": "SaaS", "seats": 40}.
- `email` (`string`, optional): Lead's email address. Required when adding to a campaign. Example: "jane@acme.com".
- `first_name` (`string`, optional): Lead's first name. Example: "Jane".
- `job_title` (`string`, optional): Lead's job title. Example: "Head of Sales".
- `last_name` (`string`, optional): Lead's last name. Example: "Doe".
- `list_id` (`string`, optional): Lead list to add the lead to. Use campaign_id or list_id. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `lt_interest_status` (`number`, optional): Lead interest status: 1 = Interested, 2 = Meeting Booked, 3 = Meeting Completed, 4 = Won, 0 = Out of Office, -1 = Not Interested, -2 = Wrong Person, -3 = Lost, -4 = No Show. A custom lead label's interest status value also works. Example: 1.
- `personalization` (`string`, optional): Personalized opening line for the lead, available as the {{personalization}} variable in emails. Example: "Loved your talk at SaaStr."
- `phone` (`string`, optional): Lead's phone number. Example: "+14155550123".
- `pl_value_lead` (`string`, optional): Potential deal value of the lead. Example: "1500".
- `skip_if_in_campaign` (`boolean`, optional): Set true to skip the lead if it already exists in any campaign. Example: false.
- `skip_if_in_list` (`boolean`, optional): Set true to skip the lead if it already exists in any lead list. Example: false.
- `skip_if_in_workspace` (`boolean`, optional): Set true to skip the lead if it already exists anywhere in the workspace. Overrides the other skip flags. Example: true.
- `verify_leads_on_import` (`boolean`, optional): Set true to verify the email address in a background job after import. Example: false.
- `website` (`string`, optional): Lead's website. Example: "https://acme.com".

Example input: `{}`

### `instantly_lead_interest_status_update`

Update Lead Interest Status · Write

Set or reset a lead's interest status (for example Interested, Meeting Booked or Not Interested) by the lead's email address.
Returns a message confirming the update was accepted (HTTP 202).
Use instantly_lead_interest_status_update to mark outcomes from a conversation. Use instantly_lead_update to edit other lead fields.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `interest_value` (`number`, required): New interest status: 1 = Interested, 2 = Meeting Booked, 3 = Meeting Completed, 4 = Won, 0 = Out of Office, -1 = Not Interested, -2 = Wrong Person, -3 = Lost, -4 = No Show. A custom lead label's interest status value also works. Send null to reset the lead to the plain Lead status. Example: 2.
- `lead_email` (`string`, required): Email address of the lead. Example: "jane@acme.com".
- `ai_interest_value` (`number`, optional): AI-suggested interest value to record for the lead. Example: 1.
- `campaign_id` (`string`, optional): Limit the update to the lead in this campaign. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `disable_auto_interest` (`boolean`, optional): Set true together with ai_interest_value to suppress Instantly's automatic handling of AI interest changes. Example: false.
- `list_id` (`string`, optional): Limit the update to the lead in this lead list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".

Example input: `{"interest_value":2,"lead_email":"jane@acme.com"}`

### `instantly_lead_label_create`

Create Lead Label · Write

Create a custom lead label (a custom interest status) with a sentiment.
Returns the created label with its id and interest status value.
Use instantly_lead_label_create to track outcomes beyond the built-in statuses.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `interest_status_label` (`string`, required): Sentiment of the label: positive, negative or neutral. Example: "positive". One of: `positive`, `negative`, `neutral`.
- `label` (`string`, required): Display text of the label. Example: "Asked for pricing".
- `description` (`string`, optional): What the label means. Example: "Lead asked about pricing or plans.".
- `use_with_ai` (`boolean`, optional): Set true to let Instantly's AI apply this label. Example: true.

Example input: `{"interest_status_label":"positive","label":"Asked for pricing"}`

### `instantly_lead_label_update`

Update Lead Label · Write

Update a custom lead label's text, sentiment, description or AI setting. Only the fields you provide change.
Returns the updated label.
Use instantly_lead_label_update to edit a label.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead label. Get it from the id field returned by instantly_lead_labels_list. Example: "0199a4b2-c27e-7a9d-9f86-012345678901".
- `description` (`string`, optional): What the label means. Example: "Lead asked about pricing.".
- `interest_status_label` (`string`, optional): Sentiment: positive, negative or neutral. Example: "neutral". One of: `positive`, `negative`, `neutral`.
- `label` (`string`, optional): New display text. Example: "Pricing question".
- `use_with_ai` (`boolean`, optional): Set true to let Instantly's AI apply this label. Example: false.

Example input: `{"id":"0199a4b2-c27e-7a9d-9f86-012345678901"}`

### `instantly_lead_list_create`

Create Lead List · Write

Create a new lead list.
Returns the created list with its id.
Use instantly_lead_list_create to hold leads outside a campaign, then add leads with instantly_leads_add.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the lead list. Example: "Conference leads 2026".
- `has_enrichment_task` (`boolean`, optional): Set true to run enrichment on every lead added to the list. Example: false.
- `owned_by` (`string`, optional): User ID of the list owner. Defaults to the user who creates it. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".

Example input: `{"name":"Conference leads 2026"}`

### `instantly_lead_list_update`

Update Lead List · Write

Rename a lead list or change its owner or enrichment setting. Only the fields you provide change.
Returns the updated list.
Use instantly_lead_list_update to edit a list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead list. Get it from the id field returned by instantly_lead_lists_list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `has_enrichment_task` (`boolean`, optional): Set true to run enrichment on every added lead. Example: false.
- `name` (`string`, optional): New name of the lead list. Example: "Conference leads 2026 - EU".
- `owned_by` (`string`, optional): User ID of the new owner. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".

Example input: `{"id":"0199a4b2-8e3a-7c5f-9b42-6d7e8f901234"}`

### `instantly_lead_subsequence_move`

Move Lead to Subsequence · Write

Move a lead into a campaign subsequence so it receives that follow-up sequence.
Returns the updated lead.
Use instantly_lead_subsequence_move to route a lead manually. Use instantly_lead_subsequence_remove to take it out.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".
- `subsequence_id` (`string`, required): ID of the subsequence. Get it from instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".

Example input: `{"lead_id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012","subsequence_id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_lead_subsequence_remove`

Remove Lead from Subsequence · Write

Remove a lead from the subsequence it is in.
Returns the updated lead.
Use instantly_lead_subsequence_remove to stop a lead's subsequence emails. Use instantly_lead_subsequence_move to add a lead to one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".

Example input: `{"lead_id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"}`

### `instantly_lead_update`

Update Lead · Write

Update a lead's profile fields, interest status, owner or custom variables. Only the fields you provide change.
Returns the updated lead.
Use instantly_lead_update to edit a lead. Use instantly_lead_interest_status_update to change interest status by email address.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead. Get it from the id field returned by instantly_leads_list. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".
- `assigned_to` (`string`, optional): User ID to assign the lead to. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `company_name` (`string`, optional): Lead's company name. Example: "Acme Inc".
- `custom_variables` (`object`, optional): Custom fields for the lead as key-value pairs, usable as {{variable}} in emails. Values should be strings, numbers, booleans or null. The campaign gains these variables for all its leads. Example: {"industry": "SaaS", "seats": 40}.
- `first_name` (`string`, optional): Lead's first name. Example: "Jane".
- `job_title` (`string`, optional): Lead's job title. Example: "Head of Sales".
- `last_name` (`string`, optional): Lead's last name. Example: "Doe".
- `lt_interest_status` (`number`, optional): Lead interest status: 1 = Interested, 2 = Meeting Booked, 3 = Meeting Completed, 4 = Won, 0 = Out of Office, -1 = Not Interested, -2 = Wrong Person, -3 = Lost, -4 = No Show. A custom lead label's interest status value also works. Example: 1.
- `personalization` (`string`, optional): Personalized opening line for the lead, available as the {{personalization}} variable in emails. Example: "Loved your talk at SaaStr."
- `phone` (`string`, optional): Lead's phone number. Example: "+14155550123".
- `pl_value_lead` (`string`, optional): Potential deal value of the lead. Example: "1500".
- `website` (`string`, optional): Lead's website. Example: "https://acme.com".

Example input: `{"id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"}`

### `instantly_leads_add`

Add Leads in Bulk · Write

Add up to 1000 leads to a campaign or a lead list in one call, with email validation and block list and duplicate checks.
Returns counts of leads uploaded, skipped and invalid, with the created leads.
Use instantly_leads_add to import many leads. Use instantly_lead_create for a single lead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `leads` (`array`, required): Lead objects to add (up to 1000). With campaign_id every lead needs an email; with list_id each lead needs an email, or a first name or last name together with a company name or website. Lead objects take the same profile fields as instantly_lead_create, such as email, first_name, last_name, company_name, job_title, website, personalization and custom_variables. Example: [{"email": "jane@acme.com", "first_name": "Jane", "company_name": "Acme Inc"}].
- `assigned_to` (`string`, optional): User ID to assign every imported lead to. Defaults to the campaign owner, or the requesting user for a list. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `blocklist_id` (`string`, optional): Block list ID to check the lead against. Leave empty to use the workspace default block list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `campaign_id` (`string`, optional): Campaign to add the leads to. Provide campaign_id or list_id, not both. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `list_id` (`string`, optional): Lead list to add the leads to. Provide campaign_id or list_id, not both. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `skip_if_in_campaign` (`boolean`, optional): Set true to skip the lead if it already exists in any campaign. Example: false.
- `skip_if_in_list` (`boolean`, optional): Set true to skip the lead if it already exists in any lead list. Example: false.
- `skip_if_in_workspace` (`boolean`, optional): Set true to skip the lead if it already exists anywhere in the workspace. Overrides the other skip flags. Example: true.
- `verify_leads_on_import` (`boolean`, optional): Set true to verify the email address in a background job after import. Example: false.

Example input: `{"leads":[{"email":"jane@acme.com","first_name":"Jane","company_name":"Acme Inc"}]}`

### `instantly_leads_assign`

Assign Leads to Users · Write

Assign leads, selected by campaign, list, IDs, search or filter, to one or more workspace users.
Returns a status and message confirming the assignment was accepted (HTTP 202).
Use instantly_leads_assign to hand leads to sales reps. Use instantly_lead_update to change one lead's owner.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `organization_user_ids` (`array`, required): User IDs to assign the leads to; leads are spread across them. Example: ["0199a4b2-e49a-7cbf-9ba8-234567890123"].
- `campaign_id` (`string`, optional): Only select leads in this campaign. Get the ID from instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `filter` (`string`, optional): Only select leads in this state, for example FILTER_VAL_CONTACTED, FILTER_LEAD_INTERESTED, FILTER_VAL_BOUNCED or FILTER_VAL_REPLIED. Example: "FILTER_LEAD_INTERESTED". One of: `FILTER_VAL_CONTACTED`, `FILTER_VAL_NOT_CONTACTED`, `FILTER_VAL_COMPLETED`, `FILTER_VAL_UNSUBSCRIBED`, `FILTER_VAL_ACTIVE`, `FILTER_LEAD_INTERESTED`, `FILTER_LEAD_NOT_INTERESTED`, `FILTER_LEAD_MEETING_BOOKED`, `FILTER_LEAD_MEETING_COMPLETED`, `FILTER_LEAD_CLOSED`, `FILTER_LEAD_OUT_OF_OFFICE`, `FILTER_LEAD_WRONG_PERSON`, `FILTER_LEAD_LOST`, `FILTER_LEAD_NO_SHOW`, `FILTER_LEAD_CUSTOM_LABEL_POSITIVE`, `FILTER_LEAD_CUSTOM_LABEL_NEGATIVE`, `FILTER_VAL_BOUNCED`, `FILTER_VAL_SKIPPED`, `FILTER_VAL_RISKY`, `FILTER_VAL_INVALID`, `FILTER_VAL_VALID`, `FILTER_VAL_CATCH_ALL`, `FILTER_VAL_NOT_VERIFIED`, `FILTER_VAL_IN_SUBSEQUENCE`, `FILTER_VAL_OPENED_NO_REPLY`, `FILTER_VAL_COMPLETED_NO_REPLY`, `FILTER_VAL_NO_OPENS`, `FILTER_VAL_REPLIED`, `FILTER_VAL_LINK_CLICKED`.
- `ids` (`array`, optional): Specific lead IDs to select. Provide campaign_id or list_id together with this. Example: ["0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"].
- `limit` (`integer`, optional): Maximum number of leads to assign. Example: 100.
- `list_id` (`string`, optional): Only select leads in this lead list. Get the ID from instantly_lead_lists_list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `search` (`string`, optional): Only select leads whose name or email matches this text. Example: "acme.com".

Example input: `{"organization_user_ids":["0199a4b2-e49a-7cbf-9ba8-234567890123"]}`

### `instantly_leads_merge`

Merge Leads · Write

Merge one lead into another, so the destination lead keeps the combined record.
Returns the merged lead.
Use instantly_leads_merge to clean up duplicate leads.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `destination_lead_id` (`string`, required): ID of the lead that remains after the merge. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9013".
- `lead_id` (`string`, required): ID of the lead to merge away. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".

Example input: `{"destination_lead_id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9013","lead_id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"}`

### `instantly_leads_move`

Move Leads · Write

Move or copy leads from a campaign or list to another campaign or list, selected by IDs, search or filter.
Returns a background job; poll instantly_background_job_get with its id for progress.
Use instantly_leads_move to reorganize leads. Use instantly_leads_add to import new leads.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `assigned_to` (`string`, optional): User ID to assign the moved leads to. Example: "0199a4b2-e49a-7cbf-9ba8-234567890123".
- `campaign_id` (`string`, optional): Only select leads in this campaign. Get the ID from instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `check_duplicates` (`boolean`, optional): Set true to skip leads that already exist in the destination. Example: true.
- `check_duplicates_in_campaigns` (`boolean`, optional): Set true to also skip leads that exist in other campaigns. Example: false.
- `contacts` (`array`, optional): Only move leads with these email addresses. Example: ["jane@acme.com"].
- `copy_leads` (`boolean`, optional): Set true to copy the leads instead of moving them. Example: false.
- `excluded_ids` (`array`, optional): Lead IDs to leave out. Example: ["0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"].
- `filter` (`string`, optional): Only select leads in this state, for example FILTER_VAL_CONTACTED, FILTER_LEAD_INTERESTED, FILTER_VAL_BOUNCED or FILTER_VAL_REPLIED. Example: "FILTER_LEAD_INTERESTED". One of: `FILTER_VAL_CONTACTED`, `FILTER_VAL_NOT_CONTACTED`, `FILTER_VAL_COMPLETED`, `FILTER_VAL_UNSUBSCRIBED`, `FILTER_VAL_ACTIVE`, `FILTER_LEAD_INTERESTED`, `FILTER_LEAD_NOT_INTERESTED`, `FILTER_LEAD_MEETING_BOOKED`, `FILTER_LEAD_MEETING_COMPLETED`, `FILTER_LEAD_CLOSED`, `FILTER_LEAD_OUT_OF_OFFICE`, `FILTER_LEAD_WRONG_PERSON`, `FILTER_LEAD_LOST`, `FILTER_LEAD_NO_SHOW`, `FILTER_LEAD_CUSTOM_LABEL_POSITIVE`, `FILTER_LEAD_CUSTOM_LABEL_NEGATIVE`, `FILTER_VAL_BOUNCED`, `FILTER_VAL_SKIPPED`, `FILTER_VAL_RISKY`, `FILTER_VAL_INVALID`, `FILTER_VAL_VALID`, `FILTER_VAL_CATCH_ALL`, `FILTER_VAL_NOT_VERIFIED`, `FILTER_VAL_IN_SUBSEQUENCE`, `FILTER_VAL_OPENED_NO_REPLY`, `FILTER_VAL_COMPLETED_NO_REPLY`, `FILTER_VAL_NO_OPENS`, `FILTER_VAL_REPLIED`, `FILTER_VAL_LINK_CLICKED`.
- `ids` (`array`, optional): Specific lead IDs to select. Provide campaign_id or list_id together with this. Example: ["0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"].
- `limit` (`number`, optional): Maximum number of leads to move. Example: 100.
- `list_id` (`string`, optional): Only select leads in this lead list. Get the ID from instantly_lead_lists_list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `reset_interest_status` (`boolean`, optional): Set true to reset the leads' interest status in the destination; false keeps it. Example: false.
- `search` (`string`, optional): Only select leads whose name or email matches this text. Example: "acme.com".
- `skip_invalid_emails` (`boolean`, optional): Set true to leave behind leads whose email verified as invalid or risky. Example: true.
- `skip_leads_in_verification` (`boolean`, optional): Set true to leave behind leads whose email verification is still running. Example: false.
- `to_campaign_id` (`string`, optional): Destination campaign. Provide to_campaign_id or to_list_id. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f91".
- `to_list_id` (`string`, optional): Destination lead list. Provide to_campaign_id or to_list_id. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901235".

Example input: `{}`

### `instantly_subsequence_create`

Create Subsequence · Write

Create a subsequence on a campaign: a follow-up email sequence that leads enter when they reach a status, take an action, or reply with given text.
Returns the created subsequence with its id.
Use instantly_subsequence_create to automate follow-ups by outcome. Use instantly_lead_subsequence_move to add a lead by hand.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conditions` (`object`, required): What moves a lead into the subsequence. crm_status is a list of interest status values (1 = Interested, 2 = Meeting Booked, 3 = Meeting Completed, 4 = Won, 0 = Out of Office, -1 = Not Interested, -2 = Wrong Person, -3 = Lost, -4 = No Show, or a custom lead label's value); lead_activity is a list of 2 = email opened, 4 = link clicked, 91 = campaign completed without reply; reply_contains is text to look for in the lead's reply. Example: {"crm_status": [1, 2], "lead_activity": [91], "reply_contains": "pricing"}.
- `name` (`string`, required): Name of the subsequence. Example: "Interested - book a call".
- `parent_campaign` (`string`, required): Campaign the subsequence belongs to. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `daily_limit` (`number`, optional): Daily email limit for the subsequence. Only used when daily_limit_mode is custom. Example: 30.
- `daily_limit_mode` (`string`, optional): How the subsequence's daily limit works: inherit uses the parent campaign's limit, custom uses daily_limit, unlimited bypasses the campaign limit. Example: "inherit". One of: `inherit`, `custom`, `unlimited`.
- `ignore_account_daily_limit` (`boolean`, optional): Set true to keep sending even when the sending accounts have hit their own daily limits. Example: false.
- `sequences` (`array`, optional): The email copy, as an array with exactly one sequence object (Instantly uses only the first). The sequence has a steps array; each step has type "email", a delay before the next step (delay_unit minutes, hours or days; days by default) and a variants array of one or more {subject, body} emails for A/B testing. Bodies are HTML; use <br/> for line breaks and {{firstName}}-style variables for personalization. Set v_disabled true on a variant to switch it off. Example: [{"steps": [{"type": "email", "delay": 2, "delay_unit": "days", "variants": [{"subject": "Quick question, {{firstName}}", "body": "Hi {{firstName}},<br/><br/>Are you the right person to talk to about outbound?"}]}, {"type": "email", "delay": 3, "variants": [{"subject": "Re: Quick question", "body": "Just following up."}]}]}]. Steps may also take pre_delay and pre_delay_unit for the wait before the first subsequence email.
- `subsequence_schedule` (`object`, optional): When the subsequence may send. Give a schedules array with one or more windows; each window has a name, timing.from and timing.to in 24-hour HH:MM, a days object whose keys "0" to "6" are days of the week set to true or false, and a timezone. Instantly accepts only its own list of timezone names (for example America/Chicago, America/Detroit, Europe/Helsinki, Asia/Kolkata, Australia/Melbourne); America/New_York and UTC are not on that list. Optional start_date and end_date are YYYY-MM-DD in the campaign's timezone. Example: {"schedules": [{"name": "Weekdays", "timing": {"from": "09:00", "to": "17:00"}, "days": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "timezone": "America/Chicago"}], "start_date": "2026-11-01"}. Leave empty to use the parent campaign's schedule.

Example input: `{"conditions":{"crm_status":[1,2],"lead_activity":[91],"reply_contains":"pricing"},"name":"Interested - book a call","parent_campaign":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_subsequence_duplicate`

Duplicate Subsequence · Write

Copy a subsequence, with the same trigger conditions, into a campaign.
Returns the new subsequence.
Use instantly_subsequence_duplicate to reuse a subsequence in another campaign.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".
- `parent_campaign` (`string`, required): Campaign to copy the subsequence into. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `name` (`string`, optional): Name of the copy. Defaults to the original name. Example: "Interested - book a call (EU)".

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678","parent_campaign":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_subsequence_pause`

Pause Subsequence · Write

Pause a subsequence so it sends no more emails.
Returns the updated subsequence.
Use instantly_subsequence_pause to halt it. Use instantly_subsequence_resume to restart.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_subsequence_resume`

Resume Subsequence · Write

Resume a paused subsequence.
Returns the updated subsequence.
Use instantly_subsequence_resume after instantly_subsequence_pause.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_subsequence_update`

Update Subsequence · Write

Update a subsequence's name, trigger conditions, schedule, email steps or limits. Only the fields you provide change.
Returns the updated subsequence.
Use instantly_subsequence_update to edit a subsequence. Use instantly_subsequence_pause to stop it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".
- `conditions` (`object`, optional): What moves a lead into the subsequence. crm_status is a list of interest status values (1 = Interested, 2 = Meeting Booked, 3 = Meeting Completed, 4 = Won, 0 = Out of Office, -1 = Not Interested, -2 = Wrong Person, -3 = Lost, -4 = No Show, or a custom lead label's value); lead_activity is a list of 2 = email opened, 4 = link clicked, 91 = campaign completed without reply; reply_contains is text to look for in the lead's reply. Example: {"crm_status": [1, 2], "lead_activity": [91], "reply_contains": "pricing"}.
- `daily_limit` (`number`, optional): Daily email limit for the subsequence. Only used when daily_limit_mode is custom. Example: 30.
- `daily_limit_mode` (`string`, optional): How the subsequence's daily limit works: inherit uses the parent campaign's limit, custom uses daily_limit, unlimited bypasses the campaign limit. Example: "inherit". One of: `inherit`, `custom`, `unlimited`.
- `ignore_account_daily_limit` (`boolean`, optional): Set true to keep sending even when the sending accounts have hit their own daily limits. Example: false.
- `name` (`string`, optional): New name. Example: "Interested - book a call v2".
- `sequences` (`array`, optional): The email copy, as an array with exactly one sequence object (Instantly uses only the first). The sequence has a steps array; each step has type "email", a delay before the next step (delay_unit minutes, hours or days; days by default) and a variants array of one or more {subject, body} emails for A/B testing. Bodies are HTML; use <br/> for line breaks and {{firstName}}-style variables for personalization. Set v_disabled true on a variant to switch it off. Example: [{"steps": [{"type": "email", "delay": 2, "delay_unit": "days", "variants": [{"subject": "Quick question, {{firstName}}", "body": "Hi {{firstName}},<br/><br/>Are you the right person to talk to about outbound?"}]}, {"type": "email", "delay": 3, "variants": [{"subject": "Re: Quick question", "body": "Just following up."}]}]}]. Steps may also take pre_delay and pre_delay_unit for the wait before the first subsequence email.
- `subsequence_schedule` (`object`, optional): When the subsequence may send. Give a schedules array with one or more windows; each window has a name, timing.from and timing.to in 24-hour HH:MM, a days object whose keys "0" to "6" are days of the week set to true or false, and a timezone. Instantly accepts only its own list of timezone names (for example America/Chicago, America/Detroit, Europe/Helsinki, Asia/Kolkata, Australia/Melbourne); America/New_York and UTC are not on that list. Optional start_date and end_date are YYYY-MM-DD in the campaign's timezone. Example: {"schedules": [{"name": "Weekdays", "timing": {"from": "09:00", "to": "17:00"}, "days": {"0": true, "1": true, "2": true, "3": true, "4": true, "5": false, "6": false}, "timezone": "America/Chicago"}], "start_date": "2026-11-01"}. Leave empty to use the parent campaign's schedule.

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

### `instantly_account_delete`

Delete Sending Account · Destructive

Remove a sending account from the workspace.
Returns the deleted account.
Use instantly_account_delete to disconnect a mailbox for good. Use instantly_account_pause to stop it temporarily.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Email address of the sending account, as listed by instantly_accounts_list. Example: "john@acme-mail.com".

Example input: `{"email":"john@acme-mail.com"}`

### `instantly_block_list_entries_delete`

Delete Block List Entries in Bulk · Destructive

Remove several block list entries by ID.
Returns the deleted entries.
Use instantly_block_list_entries_delete for bulk removal. Use instantly_block_list_entry_delete for one.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `ids` (`array`, required): Block list entry IDs to delete. Example: ["0199a4b2-d38f-7bae-8a97-123456789012"].

Example input: `{"ids":["0199a4b2-d38f-7bae-8a97-123456789012"]}`

### `instantly_block_list_entry_delete`

Delete Block List Entry · Destructive

Remove one entry from the block list so the email or domain can be contacted again.
Returns the deleted entry.
Use instantly_block_list_entry_delete for one entry. Use instantly_block_list_entries_delete for several.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the block list entry. Get it from the id field returned by instantly_block_list_entries_list. Example: "0199a4b2-d38f-7bae-8a97-123456789012".

Example input: `{"id":"0199a4b2-d38f-7bae-8a97-123456789012"}`

### `instantly_campaign_delete`

Delete Campaign · Destructive

Permanently delete a campaign.
Returns the deleted campaign.
Use instantly_campaign_delete to remove a campaign for good. Use instantly_campaign_pause to stop it without deleting.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the campaign. Get it from the id field returned by instantly_campaigns_list. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".

Example input: `{"id":"0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90"}`

### `instantly_custom_tag_delete`

Delete Custom Tag · Destructive

Delete a custom tag.
Returns the deleted tag.
Use instantly_custom_tag_delete to remove a tag. Use instantly_custom_tags_assign with assign false to only detach it.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the custom tag. Get it from the id field returned by instantly_custom_tags_list. Example: "0199a4b2-b16d-7f8c-8e75-901234567890".

Example input: `{"id":"0199a4b2-b16d-7f8c-8e75-901234567890"}`

### `instantly_email_delete`

Delete Email · Destructive

Delete one email from the Unibox.
Returns the deleted email.
Use instantly_email_delete to remove an email record.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the email. Get it from the id field returned by instantly_emails_list. Example: "0199a4b2-9f4b-7d6a-8c53-7e8f90123456".

Example input: `{"id":"0199a4b2-9f4b-7d6a-8c53-7e8f90123456"}`

### `instantly_lead_delete`

Delete Lead · Destructive

Permanently delete one lead.
Returns the deleted lead.
Use instantly_lead_delete for a single lead. Use instantly_leads_delete for many leads in a campaign or list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead. Get it from the id field returned by instantly_leads_list. Example: "0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012".

Example input: `{"id":"0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"}`

### `instantly_lead_label_delete`

Delete Lead Label · Destructive

Delete a custom lead label, optionally moving its leads and emails to another interest status.
Returns the deleted label.
Use instantly_lead_label_delete to retire a label.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead label. Get it from the id field returned by instantly_lead_labels_list. Example: "0199a4b2-c27e-7a9d-9f86-012345678901".
- `reassigned_status` (`number`, optional): Interest status to move the label's leads and emails to, for example 1 = Interested or -1 = Not Interested. Example: 1.

Example input: `{"id":"0199a4b2-c27e-7a9d-9f86-012345678901"}`

### `instantly_lead_list_delete`

Delete Lead List · Destructive

Permanently delete a lead list.
Returns the deleted list.
Use instantly_lead_list_delete to remove a list you no longer need.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the lead list. Get it from the id field returned by instantly_lead_lists_list. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".

Example input: `{"id":"0199a4b2-8e3a-7c5f-9b42-6d7e8f901234"}`

### `instantly_leads_delete`

Delete Leads in Bulk · Destructive

Delete many leads from a campaign or lead list, optionally only those with a given status or ID.
Returns the number of leads deleted.
Use instantly_leads_delete for bulk cleanup. Use instantly_lead_delete for one lead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, optional): Campaign to delete leads from. Required unless list_id is set. Example: "0199a4b2-6c1e-7a3d-9f20-4b5c6d7e8f90".
- `ids` (`array`, optional): Only delete these lead IDs from the campaign or list. Example: ["0199a4b2-7d2f-7b4e-8a31-5c6d7e8f9012"].
- `limit` (`integer`, optional): Maximum number of leads to delete, from 1 to 10000. Leave empty to delete every matching lead. Example: 100.
- `list_id` (`string`, optional): Lead list to delete leads from. Required unless campaign_id is set. Example: "0199a4b2-8e3a-7c5f-9b42-6d7e8f901234".
- `status` (`number`, optional): Only delete leads with this status: 1 = Active, 2 = Paused, 3 = Completed, -1 = Bounced, -2 = Unsubscribed, -3 = Skipped. Example: -1. One of: `1`, `2`, `3`, `-1`, `-2`, `-3`.

Example input: `{}`

### `instantly_subsequence_delete`

Delete Subsequence · Destructive

Permanently delete a subsequence.
Returns the deleted subsequence.
Use instantly_subsequence_delete to remove it. Use instantly_subsequence_pause to stop it without deleting.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID (UUID) of the subsequence. Get it from the id field returned by instantly_subsequences_list. Example: "0199a4b2-a05c-7e7b-9d64-8f9012345678".

Example input: `{"id":"0199a4b2-a05c-7e7b-9d64-8f9012345678"}`

## Related

Other Marketing connectors ([all 87](/agentkit/connectors/?category=marketing)):

- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Mailchimp](/agentkit/connectors/mailchimp/): Scalekit connector, OAuth, 73 tools
- [Twitter / X](/agentkit/connectors/twitteroauth/): Scalekit connector, OAuth, 92 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
