> ## 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 |


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