# Legacy campaigns

> The routes of the previous Emelia campaign system, email only or LinkedIn only. Deprecated, still working for existing integrations.

Source: https://docs.emelia.io/docs/campaigns/legacy

> **Deprecated.** These routes belong to the previous campaign system, where a campaign was either email only or LinkedIn only. They keep working for existing integrations, but they are not developed any more. Every new integration should use the [Campaigns](https://docs.emelia.io/docs/campaigns.md) routes (`/advanced/...`): every campaign of the current app is multichannel.

| Legacy system                                         | Routes                                                                                            | Replaced by                                      |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Email campaigns](https://docs.emelia.io/docs/campaigns/legacy/email.md)       | `/emails/campaigns...`, `/emails/campaign/contacts`, `/emails/contacts`, `/emails/test`, `/stats` | [Campaigns](https://docs.emelia.io/docs/campaigns.md) with `EMAIL` steps  |
| [LinkedIn campaigns](https://docs.emelia.io/docs/campaigns/legacy/linkedin.md) | `/linkedin/campaigns...`, `/linkedin/campaign/contacts`, `/stats/linkedin`                        | [Campaigns](https://docs.emelia.io/docs/campaigns.md) with LinkedIn steps |

The legacy campaigns are separate objects: a legacy campaign id does not work on the `/advanced/...` routes, and the other way round.

## What differs from the current routes

* **Envelopes.** The contact listings answer `{ "success": true, "list": [...], "count": 42 }`, with a `page` that starts at 0.
* **Statistics.** `GET /stats` and `GET /stats/linkedin` answer a flat summary by default, and `{ global, steps }` with `detailed=true` (the string). An unknown campaign answers `401`, not `400`.
* **Sequences.** The steps are an ordered array, not a tree, and every step after the first needs a `delay.amount` above 0.
* **Intervals.** `minInterval` and `maxInterval` of the email schedule are in seconds. `days` goes from 0 (Monday) to 6 (Sunday), as everywhere.
* **Errors.** Most errors are plain sentences with a `400`, like on the rest of the main API.

The [blacklist](https://docs.emelia.io/docs/blacklist.md) routes also start with `/emails/` but are not legacy: they apply to every campaign.
