---
title: "List what happened to each row"
method: GET
path: "/mailmerge/campaigns/{campaign_id}/recipients"
tags: ["Mail merge"]
---

# List what happened to each row

`GET /mailmerge/campaigns/{campaign_id}/recipients`

## Request

- Base URL: `https://api.podpdf.com`
- URL: `https://api.podpdf.com/mailmerge/campaigns/{campaign_id}/recipients`
- Auth: API key in header `X-API-Key`

## Query parameters

- `status` 'rendering' | 'sending' | 'sent' | 'failed' | 'rejected' | 'unconfirmed' | 'skipped'
- `limit` integer
- `cursor` string

## Response `200`

One page of rows, in row order

- object
  - `campaign_id` string
  - `recipients` MailMergeRecipient[]
    - `row_index` integer
    - `row` integer
    - `email` string
    - `status` 'rendering' | 'sending' | 'sent' | 'failed' | 'rejected' | 'unconfirmed' | 'skipped': `unconfirmed`: the connection dropped after the message went out; it may have been delivered and is not sent again.
    - `error_code` string, nullable
    - `error_message` string, nullable
    - `message_id` string, nullable
    - `pages` integer, nullable
    - `attempts` integer
    - `finished_at` string, date-time, nullable
  - `cursor` string, nullable

## Other responses

- `400`: The request was invalid
- `401`: Missing or invalid API key
- `403`: `INSUFFICIENT_CREDITS`, `CONVERSION_TYPE_NOT_ENABLED`, `PDF_TOOLS_NOT_ENABLED`, `RATE_LIMIT_EXCEEDED` or `ACCOUNT_NOT_FOUND`. Note that a plan's rate limit is a 403, not a 429.
- `404`: No such resource for this account

---

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