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

# Tags and logs

> Tag your sends, find them again in the dashboard or with the list endpoint, and read the timeline of every message.

## Tags

Attach up to 10 tags of 64 characters to any send. They travel with the message: they are returned on `GET /v1/emails/{id}`, on every [webhook event](https://docs.sendbaze.com/learn/webhooks/events.md), and they filter the logs.

```json theme={"dark"}
{ "tags": ["order-shipped", "shop:za", "campaign:spring"] }
```

Use tags for the things you will search for later: the feature that sent the email, the customer segment, a campaign id. Put per-message identifiers such as an order id in a custom header (`X-Order-Id`) or in an `Idempotency-Key` instead.

## The Logs page

**Logs** in the dashboard shows every email and SMS, newest first, with search by recipient or id and filters for status, channel, tag and date. Click a row for the full timeline, the rendered subject and body, the error if any, a **Resend** button and **Copy as cURL**, which reproduces the request.

Bodies are kept for 30 days and then redacted; the timeline and metadata stay.

## List emails with the API

`GET /v1/emails` returns the same rows, newest first, cursor-paged. Items are the message object without `events`.

```bash theme={"dark"}
curl "https://api.sendbaze.com/v1/emails?status=bounced&since=2026-10-01T00:00:00Z&limit=50" \
  -H "Authorization: Bearer $SENDBAZE_API_KEY"
```

| Parameter | Meaning |
| - | - |
| `status` | `queued`, `sent`, `delivered`, `bounced`, `complained`, `failed`, `expired`, `rejected` |
| `tag` | Exact match on one tag |
| `to` | Substring of the recipient |
| `since`, `until` | ISO 8601 date-times bounding `createdAt` (inclusive, exclusive) |
| `limit` | 1 to 100, default 50 |
| `cursor` | The `nextCursor` of the previous page |

Pages stay stable while new email arrives, so you can walk the whole history for an export or a reconciliation job. See [pagination](https://docs.sendbaze.com/api-reference/pagination.md).

## The message timeline

Every message carries `events`, oldest first. Each has a `type`, an `occurredAt` and, when useful, a `detail` object with provider ids, error codes or attempt numbers.

| Event | Meaning |
| - | - |
| `queued` | Accepted and waiting for a worker |
| `attempt_failed` | One send attempt failed and will be retried; `detail` has the reason and attempt number |
| `sent` | Accepted by Amazon SES or the mobile network |
| `delivery_delayed` | The provider is still trying (soft bounce or greylisting); status unchanged |
| `delivered` | The receiving server or handset confirmed delivery |
| `bounced`, `complained` | Email only; both suppress the address |
| `failed` | Permanent failure after retries |
| `expired` | SMS only; the network could not deliver in time |
| `rejected` | Blocked before sending |
| `unsubscribed` | The recipient used the unsubscribe link on a marketing email |


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