---
title: "Get a bulk send"
method: GET
path: "/mailboxes/{address}/send-batch/{id}"
tags: ["Mail"]
---

# Get a bulk send

`GET /mailboxes/{address}/send-batch/{id}`

## Request

- Base URL: `https://faivelo.com/api/v1`
- URL: `https://faivelo.com/api/v1/mailboxes/{address}/send-batch/{id}`
- Auth: HTTP bearer

The state of a batch: counts and every recipient as `queued`, `sending`, `sent`, `delivered`, `bounced`, `complained` or `failed` (with the reason). Delivery states arrive from the mail system a little after each send. Requires scope `mail:send`.

## Path parameters

- `address` string, required
- `id` string, required

## Response `200`

The batch

- object
  - `success` boolean
  - `data` SendBatch: A bulk send and the state of every recipient
    - `id` string: Pass to GET /mailboxes/{address}/send-batch/{id}
    - `mailbox` string
    - `subject` string
    - `status` 'queued' | 'sending' | 'completed' | 'failed': `failed` when the account stopped the batch (quota spent mid-batch, a pause); the per-recipient rows say which were sent
    - `replyTo` string
    - `fromName` string: The batch's own From name, when one was given
    - `hint` string: Present when the email went out with no display name, so recipients saw only the address. Says how to set one.
    - `labels` string[]
    - `counts` object
      - `total` integer
      - `queued` integer
      - `sent` integer
      - `delivered` integer
      - `bounced` integer
      - `complained` integer
      - `failed` integer
    - `recipients` object[]
      - `email` string
      - `status` 'queued' | 'sending' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'failed'
      - `messageId` string: The Message-ID of this recipient's email, once sent
      - `error` string: Why this recipient failed
      - `sentAt` string, date-time
      - `deliveredAt` string, date-time
      - `bouncedAt` string, date-time
      - `missingFields` string[]: Template fields this recipient had no value for (rendered empty)
    - `error` string: Why the batch stopped early
    - `createdAt` string, date-time
    - `completedAt` string, date-time
    - `replayed` boolean: Present and true when the idempotency key matched an earlier batch: this is that batch, nothing new was queued

## Other responses

- `401`: Missing or invalid API key
- `402`: The account's plan does not include the API (`plan_required`)
- `403`: The key lacks the required scope
- `404`: Resource not found
- `429`: Rate limit exceeded

---

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