---
title: "Campaign analysis export"
method: GET
path: "/campaigns/{id}/export"
tags: ["Campaigns"]
---

# Campaign analysis export

`GET /campaigns/{id}/export`

## Request

- Base URL: `https://sending.dev/api/v1`
- URL: `https://sending.dev/api/v1/campaigns/{id}/export`
- Auth: HTTP bearer

Everything needed to analyze a campaign in a single document: overview, daily trend, clicked links with their role, recipients row by row with their behavior, unsubscribe reasons and attributed conversions. Each table is CSV, with its definition next to it: 'opens' without saying they are human ones, and 'clicks' without saying they exclude the logo, are numbers an analyst reads at random.

Without `dataset` you get a single text file with all tables; with `dataset` you get that raw CSV. Recipients are cut at 10,000 rows and the cut is declared in the file name and in the document, never silently.

Email addresses appear **only** if the key also carries `contacts:read`: `campaigns:read` alone returns no personal data anywhere else. Without it, rows stay identified by `contact_id`. Required scope: `campaigns:read`.

## Path parameters

- `id` string, required: Campaign ID.

## Query parameters

- `dataset` 'overview' | 'daily' | 'links' | 'recipients' | 'unsubscribes' | 'unsubscribe_comments' | 'conversions': A single table, as raw CSV.

## Response `200`

Analysis export.

## Other responses

- `401`: Missing or invalid token.
- `403`: Insufficient scope.
- `404`: Resource not found.

---

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