> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Instantly

> Connect Instantly to your Atako agents — 10 read and 6 write actions.

Let your agents work in Instantly: read campaigns, analytics, leads, lead lists, sending accounts and the unified inbox, add and update leads, create lead lists, set a lead interest status, and activate or pause campaigns.

## Connection

* **Authentication**: API key (Instantly API key (version 2)).

> [!NOTE]
>
> In Instantly: Settings → Integrations → API Keys tab → pick "Version 2" → Create API Key. Name it and choose targeted scopes (they cannot be edited afterwards): campaigns:read and campaigns:update, leads:read, leads:create and leads:update, lead\_lists:read and lead\_lists:create, accounts:read, emails:read, workspaces:read. Avoid all:all. Copy the key when it is shown. API access depends on your Instantly plan: see instantly.ai/pricing.
>
> See [Instantly's documentation](https://developer.instantly.ai).

## Read actions (10)

| Action | Description |
| - | - |
| `get_campaign` | Get one campaign: status, schedule, sequences (steps and e-mail variants) and settings. id (string, UUID) comes from list\_campaigns. |
| `get_campaign_analytics` | Get sent / opened / replied / bounced counts per campaign (an array, one entry per campaign). All arguments optional: id (string, UUID of one campaign); ids (array of campaign UUID strings); both empty = all campaigns; start\_date and end\_date (strings, YYYY-MM-DD or ISO 8601 timestamp, UTC); exclude\_total\_leads\_count (boolean, faster when the total is not needed). |
| `get_campaign_analytics_overview` | Get the aggregated analytics of one, several or all campaigns (a single object: sent, opens, replies, bounces, opportunities…). All arguments optional: id (string, UUID of one campaign); ids (array of campaign UUID strings); both empty = all campaigns; start\_date and end\_date (strings, YYYY-MM-DD or ISO 8601 timestamp, UTC); campaign\_status (number, 0 Draft, 1 Active, 2 Paused, 3 Completed, 4 Running Subsequences, -99 Account Suspended, -1 Accounts Unhealthy, -2 Bounce Protect); expand\_crm\_events (boolean, true = count every occurrence of the interest events instead of the first one per contact). |
| `get_lead` | Get one lead: contact fields, campaign, list, interest status, open / click / reply counters. id (string, UUID of the lead) comes from list\_leads. |
| `get_workspace` | Get the workspace behind the API key: \{ id, name, owner, plan\_id, … }. No arguments. |
| `list_accounts` | List the sending e-mail accounts with status, daily limit and warmup score (the spec returns no SMTP / IMAP password): \{ items, next\_starting\_after }. All arguments optional: limit (integer 1 to 100); starting\_after (string, cursor); search (string, match on the e-mail address); status (number, 1 Active, 2 Paused, 3 Temporarily paused for maintenance, -1 Connection Error, -2 Soft Bounce Error, -3 Sending Error); provider\_code (number, 1 Custom IMAP/SMTP, 2 Google, 3 Microsoft, 4 AWS, 8 AirMail, 11 Airmail Instant); filter (string, one of ACC\_FILTER\_PAUSED, ACC\_FILTER\_ERROR, ACC\_FILTER\_NO\_CTD, ACC\_FILTER\_PW\_ACCOUNTS, ACC\_FILTER\_DFY, ACC\_FILTER\_DFY\_SETUP\_PENDING, ACC\_FILTER\_W\_ACTIVE, ACC\_FILTER\_W\_PAUSED, ACC\_FILTER\_W\_ERROR); sort\_by (string: timestamp\_created, email, stat\_warmup\_score or status); sort\_order (string: asc or desc); skip (integer >= 0); include\_tags (boolean). |
| `list_campaigns` | List campaigns with their status, sequences and settings: \{ items, next\_starting\_after }. All arguments optional: limit (integer 1 to 100); starting\_after (string, cursor = next\_starting\_after of the previous page); search (string, match on the campaign name); status (number, 0 Draft, 1 Active, 2 Paused, 3 Completed, 4 Running Subsequences, -99 Account Suspended, -1 Accounts Unhealthy, -2 Bounce Protect); exclude\_status (number, same values: hide those campaigns); tag\_ids (string, comma-separated tag UUIDs). |
| `list_emails` | List e-mails of the unified inbox (sent and received, with subject and body): \{ items, next\_starting\_after }. Rate limit 20 requests per minute. All arguments optional: limit (integer 1 to 100); starting\_after (string, cursor); search (string); campaign\_id and list\_id (strings, UUIDs); lead (string, e-mail of the lead); eaccount (string, sending account e-mail, comma-separated for several); company\_domain (string); email\_type (string: received, sent or manual); mode (string: emode\_focused, emode\_others or emode\_all); is\_unread, has\_reminder, scheduled\_only, marked\_as\_done, latest\_of\_thread, preview\_only (booleans); i\_status (number, interest status of the thread); sort\_order (string: asc or desc, by creation date, default desc); min\_timestamp\_created and max\_timestamp\_created (strings, ISO 8601); assigned\_to (string, user UUID). |
| `list_lead_lists` | List the lead lists: \{ items: \[\{ id, name, has\_enrichment\_task, … }], next\_starting\_after }. All arguments optional: limit (integer 1 to 100); starting\_after (string, cursor = next\_starting\_after of the previous page); search (string, match on the list name); has\_enrichment\_task (boolean). |
| `list_leads` | List or search leads (a read-only query, sent as POST by Instantly): \{ items, next\_starting\_after }. All arguments optional: campaign (string, campaign UUID); list\_id (string, lead list UUID); search (string, whole words or the start of a value among e-mail, names, company, job title; give campaign or list\_id to also match inside values); filter (string, 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); contacts (array of e-mail strings); ids (array of lead UUID strings); excluded\_ids (array of lead UUID strings); in\_campaign and in\_list (booleans); distinct\_contacts (boolean, one row per e-mail; the cursor is then an e-mail); limit (integer 1 to 100); starting\_after (string, next\_starting\_after of the previous page). Results are ordered by lead id. |

## Write actions (6)

| Action | Description |
| - | - |
| `activate_campaign` | Activate (start) or resume a campaign: it starts SENDING e-mails to its leads from the linked sending accounts. Argument: id (string, UUID of the campaign, from list\_campaigns). Reverse with pause\_campaign. |
| `create_lead` | Add a lead to a campaign or a lead list. Arguments: email (string, required here); campaign (string, campaign UUID from list\_campaigns) OR list\_id (string, lead list UUID from list\_lead\_lists); first\_name, last\_name, company\_name, job\_title, phone, website, personalization (strings); custom\_variables (object of name → string, number or boolean); lt\_interest\_status (number, 0 Out of Office, 1 Interested, 2 Meeting Booked, 3 Meeting Completed, 4 Won, -1 Not Interested, -2 Wrong Person, -3 Lost, -4 No Show); skip\_if\_in\_workspace, skip\_if\_in\_campaign, skip\_if\_in\_list (booleans, true = do not add a duplicate); verify\_leads\_on\_import (boolean, true = verify the e-mail, may spend verification credits). If the campaign is active, the lead starts receiving e-mails. |
| `create_lead_list` | Create a lead list. Arguments: name (string, required); has\_enrichment\_task (boolean, true = enrich every added lead, may spend credits; default false); owned\_by (string, UUID of the owner user; default the key owner). |
| `pause_campaign` | Pause (stop) a campaign: no more e-mails go out until activate\_campaign. Argument: id (string, UUID of the campaign, from list\_campaigns). |
| `update_lead` | Update the fields of a lead (only those given change). Arguments: id (string, UUID of the lead, from list\_leads); first\_name, last\_name, company\_name, job\_title, phone, website, personalization (strings); custom\_variables (object of name → string, number or boolean); lt\_interest\_status (number, 0 Out of Office, 1 Interested, 2 Meeting Booked, 3 Meeting Completed, 4 Won, -1 Not Interested, -2 Wrong Person, -3 Lost, -4 No Show). The e-mail cannot be changed. |
| `update_lead_interest_status` | Set the interest status of a lead, identified by its e-mail. It may stop its campaign, update opportunities and trigger automations. Arguments: lead\_email (string, e-mail of the lead); interest\_value (number, 0 Out of Office, 1 Interested, 2 Meeting Booked, 3 Meeting Completed, 4 Won, -1 Not Interested, -2 Wrong Person, -3 Lost, -4 No Show; null = reset to the neutral "Lead" status); optional campaign\_id and list\_id (strings, UUIDs, to target the lead in that campaign or list). |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](https://docs.atako.ai/integrations/permissions.md) for the grant model and [Security](https://docs.atako.ai/integrations/security.md) for how credentials are protected.

***

*Last reviewed against the provider API: October 2026.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.