---
title: "Export lists as CSV"
method: POST
path: "/lists/list/export"
tags: ["Lists"]
---

# Export lists as CSV

`POST /lists/list/export`

## Request

- Base URL: `https://api.emelia.io`
- URL: `https://api.emelia.io/lists/list/export`
- Auth: API key in header `Authorization`

Exports one list as a CSV file, or several lists as a ZIP archive with one CSV per list.

CSV format: UTF-8 with BOM, comma separator, CRLF line endings. Columns: `First Name`, `Last Name`, `Full Name`, `Email`, `Phone`, `Mobile Phone`, `Job Title`, `LinkedIn URL`, `Bio`, `Company`, `Website`, `LinkedIn Page`, `Company Size`, `Industry`, `Country`, `Region`, `City`, `Status`, `Handle`, then one column per custom variable of the account (display name), then `Lists` and `Campaigns` (one `Campaign name - STATUS` line per campaign). Company-only lists use a shorter header (`Company`, `Website`, `LinkedIn Page`, `Company Size`, `Industry`, custom variables, `Lists`).

`leadIds`, `search`, `statuses` and `filters` only apply when exactly one list is exported; they are ignored for a multi-list ZIP. List ids that are not yours are silently skipped.

**Large exports**: send `async: true`. If the export covers more than 5,000 contacts, the response is `202` with a `jobId`: poll `GET /lists/list/export/jobs/{jobId}` until `status` is `done`, then download the file. At or under 5,000 contacts the file is returned directly (200) even with `async: true`, so handle both responses. With `async: true`, an export above 100,000 contacts is refused (422). Only one asynchronous export runs per account: while one is queued or running, a new request returns that existing job (it may concern other lists). Without `async`, the file is always streamed synchronously, whatever its size, and the connection may be cut after 120 seconds of silence.

## Request body

- ListsExportRequest
  - `listIds` string[], required: Lists to export, in the order of the ZIP. Invalid ids and lists that are not yours are skipped.
  - `leadIds` string[]: Export only these contacts (single-list export only).
  - `search` string: Same as `search` of the rows route (single-list export only).
  - `statuses` string[]: Engagement statuses, `NO_ACTIVITY` included (single-list export only).
  - `filters` ListsFilterRule[]: Column filters (single-list export only).
    - `column` string, required: Contact columns: `firstName`, `lastName`, `fullName`, `jobTitle`, `email`, `secondaryEmail`, `phone`, `mobilePhone`, `linkedinUrlProfile`, `twitterUrl`, `country`, `city`, `seniority`, `department`, `bio`, `gender`, `emailVerified`. Company columns: `companyName`, `companyDomain`, `websiteUrl`, `industry`, `linkedinCompanyUrl`, `companyCountry`, `companyCity`. Custom variables: `custom<TechnicalName>`.
    - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'empty' | 'not_empty', required
    - `value` string: Required except for `empty` and `not_empty`.
  - `async` boolean: Allow an asynchronous job (202) when the export covers more than 5,000 contacts.

## Response `200`

The file: `text/csv; charset=utf-8` named after the list for one list, `application/zip` named `emelia-lists-export.zip` for several lists. Sent as an attachment (`Content-Disposition`).

## Other responses

- `202`: Asynchronous export accepted (only with `async: true` and more than 5,000 contacts). `total` is the number of contacts of this request; if an export was already running, `jobId` and `status` are those of that running export.
- `400`: No valid list id.
- `401`: Missing, unknown or disabled API key, or the account of the key no longer exists. Note the body shape: `error` and `code`, not `message`.
- `404`: None of the requested lists is yours.
- `422`: Invalid `filters`, or export too large (with `async: true`).
- `500`: Export failed before the file started.
- `503`: Asynchronous export temporarily unavailable (job storage down). Retry later.

---

[API](https://skmtc.dev/emelia/apis/emelia-api.md) · [All operations](https://skmtc.dev/emelia/apis/emelia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emelia/apis/emelia-api/revisions/8c0cb435f2c4?raw)
