> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keebai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/email/sends/:id

> Status and counters of an email send: sent, delivered, opened, failed, and pending.

Returns the status of a send created by [`POST /v1/email/send`](https://docs.keebai.com/dev/endpoints/email-send).

## Endpoint

```
GET https://api.keebai.com/v1/email/sends/{id}
```

## Required scope

`messages:bulk`

## Headers

| Header | Required | Value |
| - | - | - |
| `Authorization` | Yes | `Bearer kbai_pk_<token>` |

## Path parameters

| Field | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The `broadcast_id` returned when the send was created. |

## Example request

```bash curl theme={"system"}
curl https://api.keebai.com/v1/email/sends/6652d3e4f5a6b7c8d9e0f1a2 \
  -H "Authorization: Bearer kbai_pk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

```js JavaScript theme={"system"}
const response = await fetch(
  `https://api.keebai.com/v1/email/sends/${broadcastId}`,
  { headers: { Authorization: `Bearer ${process.env.KEEBAI_API_TOKEN}` } },
);
const { broadcast_status, metrics } = await response.json();
```

```python Python theme={"system"}
import os, requests

resp = requests.get(
    f"https://api.keebai.com/v1/email/sends/{broadcast_id}",
    headers={"Authorization": f"Bearer {os.environ['KEEBAI_API_TOKEN']}"},
    timeout=10,
)
resp.raise_for_status()
metrics = resp.json()["metrics"]
```

## Response

### 200 OK

```json theme={"system"}
{
  "broadcast_id": "6652d3e4f5a6b7c8d9e0f1a2",
  "name": "Novedades de noviembre",
  "broadcast_status": "completed",
  "scheduled_at": null,
  "metrics": {
    "sent": 1480,
    "delivered": 1462,
    "read": 611,
    "failed": 18,
    "pending": 2,
    "total": 1500
  }
}
```

| Field | Type | Description |
| - | - | - |
| `broadcast_id` | `string` | Same id you requested. |
| `name` | `string` | Name of the send in the portal. |
| `broadcast_status` | `string` | Status of the broadcast. |
| `scheduled_at` | `string \| null` | When the send was scheduled for. `null` if it went out right away. |
| `metrics.sent` | `number` | Emails sent. |
| `metrics.delivered` | `number` | Emails delivered. |
| `metrics.read` | `number` | Emails opened. |
| `metrics.failed` | `number` | Emails that failed. |
| `metrics.pending` | `number` | Emails still in queue. |
| `metrics.total` | `number` | Total recipients of the send. |

### 401 Unauthorized

Missing, invalid, revoked, or expired token.

### 403 Forbidden

The token does not have the `messages:bulk` scope.

### 404 Not Found

No email send with that id in your company. A WhatsApp broadcast id also returns `404` here; read those with [`GET /v1/messages/bulk/{id}`](https://docs.keebai.com/dev/endpoints/messages-bulk-status).

### 502 Bad Gateway

The messaging service could not answer.

## Operational notes

* **`read` counts opens.** Opens are tracked with a pixel, so a mail client that blocks images does not count as an open even when the person read it. Treat `read` as a lower bound.


## OpenAPI

````yaml GET /v1/email/sends/{id}
openapi: 3.0.0
info:
  title: Keebai Public API
  description: Superficie pública REST autenticada con Personal Access Tokens (PAT).
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.keebai.com
    description: Production
security: []
tags: []
paths:
  /v1/email/sends/{id}:
    get:
      tags:
        - email
      summary: Get an email send
      description: 'Status and counts: sent, delivered, read (opened), failed and pending.'
      operationId: PublicEmailController_status
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      security:
        - PAT: []
components:
  securitySchemes:
    PAT:
      scheme: bearer
      bearerFormat: kbai_pk_<hex>
      type: http
      description: >-
        Personal Access Token con prefijo `kbai_pk_`. Generar desde el portal
        con permiso `developer.manage_tokens`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.