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

# API v1 to v2 migration

> Endpoint mapping and migration guide for moving from API v1 to API v2.

# API v1 to API v2 migration

<Warning>API v1 was deprecated on **January 19, 2026**. Use API v2 for all new integrations.</Warning>

The first version of the API is available [here](https://app.theneo.io/instantly-ai/instantlyapidocs/introduction).

API v2 comes with significantly more endpoints than v1, offering expanded functionality for managing your campaigns, leads, and accounts. This guide covers the migration paths for existing v1 endpoints.

## Integrations using API v1

**Integrations using API v1, like Zapier, Make, etc., will keep working without any disruptions.**

## API v2 API key

Get an API v2 key by following the [getting started guide](/getting-started/getting-started).

## API v1 to API v2 endpoint mapping

### Campaign endpoints

| API v1 endpoint                 | API v2 endpoint                        | Method | Notes                                                         |
| ------------------------------- | -------------------------------------- | ------ | ------------------------------------------------------------- |
| `GET /campaign/list`            | `GET /api/v2/campaigns`                | GET    | Now supports pagination with `starting_after`                 |
| `GET /campaign/get/name`        | `GET /api/v2/campaigns/{id}`           | GET    | Campaign name is in the response object                       |
| `GET /campaign/get/status`      | `GET /api/v2/campaigns/{id}`           | GET    | Status is in the response object                              |
| `POST /campaign/set/name`       | `PATCH /api/v2/campaigns/{id}`         | PATCH  | Use PATCH with `{"name": "New Name"}`                         |
| `GET /campaign/get/accounts`    | `GET /api/v2/campaigns/{id}`           | GET    | Accounts are in the response object in the `email_list` array |
| `POST /campaign/set/accounts`   | `PATCH /api/v2/campaigns/{id}`         | PATCH  | Update with `email_list` array                                |
| `POST /campaign/add-account`    | `PATCH /api/v2/campaigns/{id}`         | PATCH  | Add to accounts array                                         |
| `POST /campaign/remove-account` | `PATCH /api/v2/campaigns/{id}`         | PATCH  | Remove from accounts array                                    |
| `POST /campaign/set/schedule`   | `PATCH /api/v2/campaigns/{id}`         | PATCH  | Update `campaign_schedule` object                             |
| `POST /campaign/launch`         | `POST /api/v2/campaigns/{id}/activate` | POST   | Dedicated activate endpoint                                   |
| `POST /campaign/pause`          | `POST /api/v2/campaigns/{id}/pause`    | POST   | Dedicated pause endpoint                                      |

### Analytics endpoints

| API v1 endpoint                   | API v2 endpoint                            | Method | Notes                                |
| --------------------------------- | ------------------------------------------ | ------ | ------------------------------------ |
| `GET /analytics/campaign/summary` | `GET /api/v2/campaigns/analytics`          | GET    | Pass campaign ID as query param `id` |
| `GET /analytics/campaign/count`   | `GET /api/v2/campaigns/analytics/overview` | GET    | Overview endpoint                    |

### Lead endpoints

| API v1 endpoint              | API v2 endpoint             | Method | Notes                                   |
| ---------------------------- | --------------------------- | ------ | --------------------------------------- |
| `POST /lead/add`             | `POST /api/v2/leads`        | POST   | Can add to campaign or lead list        |
| `GET /lead/get`              | `POST /api/v2/leads/list`   | POST   | Now POST for complex filtering          |
| `POST /lead/delete`          | `DELETE /api/v2/leads/{id}` | DELETE | Delete by lead ID                       |
| `POST /lead/update-status`   | `PATCH /api/v2/leads/{id}`  | PATCH  | Update `interest_status` field          |
| `POST /lead/variable/update` | `PATCH /api/v2/leads/{id}`  | PATCH  | Update `payload` object                 |
| `POST /lead/variable/set`    | `PATCH /api/v2/leads/{id}`  | PATCH  | Set fields in `payload` object          |
| `POST /lead/variable/delete` | `PATCH /api/v2/leads/{id}`  | PATCH  | Update `payload` without deleted fields |

### Account endpoints

| API v1 endpoint               | API v2 endpoint                        | Method | Notes                                     |
| ----------------------------- | -------------------------------------- | ------ | ----------------------------------------- |
| `GET /account/list`           | `GET /api/v2/accounts`                 | GET    | Supports filtering and limiting           |
| `POST /account/check-vitals`  | `POST /api/v2/accounts/test/vitals`    | POST   | Same behavior                             |
| `GET /account/get/status`     | `GET /api/v2/accounts/{email}`         | GET    | Get by email address                      |
| `POST /account/warmup/enable` | `POST /api/v2/accounts/warmup/enable`  | POST   | Returns background job                    |
| `POST /account/warmup/pause`  | `POST /api/v2/accounts/warmup/disable` | POST   | Note: endpoint is `/disable` not `/pause` |
| `POST /account/delete`        | `DELETE /api/v2/accounts/{email}`      | DELETE | Delete by email                           |

### Blocklist endpoints

| API v1 endpoint          | API v2 endpoint                           | Method | Notes              |
| ------------------------ | ----------------------------------------- | ------ | ------------------ |
| `POST /blocklist/add`    | `POST /api/v2/block-lists-entries`        | POST   | Add entries        |
| `POST /blocklist/remove` | `DELETE /api/v2/block-lists-entries/{id}` | DELETE | Delete by entry ID |

### Unibox (email) endpoints

| API v1 endpoint                   | API v2 endpoint                                        | Method | Notes                                      |
| --------------------------------- | ------------------------------------------------------ | ------ | ------------------------------------------ |
| `GET /unibox/emails/list`         | `GET /api/v2/emails`                                   | GET    | List with filtering                        |
| `GET /unibox/emails/unread/count` | `GET /api/v2/emails/unread/count`                      | GET    | Dedicated count endpoint                   |
| `POST /unibox/threads/mark-read`  | `POST /api/v2/emails/threads/{thread_id}/mark-as-read` | PATCH  | Mark emails as read by updating the status |
| `POST /unibox/reply`              | `POST /api/v2/emails/reply`                            | POST   | Reply with `reply_to_uuid` in body         |

### Tags endpoints

| API v1 endpoint      | API v2 endpoint                            | Method | Notes                |
| -------------------- | ------------------------------------------ | ------ | -------------------- |
| `POST /tag/create`   | `POST /api/v2/custom-tags`                 | POST   | Create tag           |
| `GET /tag/get`       | `GET /api/v2/custom-tags/{id}`             | GET    | Get by ID            |
| `GET /tag/list`      | `GET /api/v2/custom-tags`                  | GET    | List all             |
| `PATCH /tag/update`  | `PATCH /api/v2/custom-tags/{id}`           | PATCH  | Update by ID         |
| `DELETE /tag/delete` | `DELETE /api/v2/custom-tags/{id}`          | DELETE | Delete by ID         |
| `POST /tag/assign`   | `POST /api/v2/custom-tags/toggle-resource` | POST   | Assign/unassign tags |

### Email verification endpoints

| API v1 endpoint            | API v2 endpoint                          | Method | Notes                       |
| -------------------------- | ---------------------------------------- | ------ | --------------------------- |
| `POST /verify/email`       | `POST /api/v2/email-verification`        | POST   | Verify single email         |
| `GET /verify/email/result` | `GET /api/v2/email-verification/{email}` | GET    | Get result by email address |

### Custom tracking domain endpoints

| API v1 endpoint               | API v2 endpoint                   | Method | Notes                             |
| ----------------------------- | --------------------------------- | ------ | --------------------------------- |
| `GET /tracking-domain/status` | `GET /api/v2/accounts/ctd-status` | GET    | Get custom tracking domain status |
