# Logs

> Every email has a per-email event timeline — sent, delivered, bounced, complained, opened, clicked, delivery_delayed — in the dashboard, via GET /emails/:id, and forwarded to webhooks.

Every email you send through the API gets a **per-email event timeline**. As the message moves through MailBlastr’s sending infrastructure and reaches the recipient, MailBlastr records each event against the email’s `id`, giving you a complete delivery and engagement history.

## Event types

| Event | Meaning |
| --- | --- |
| `sent` | MailBlastr accepted the email for delivery. |
| `delivered` | The receiving mail server confirmed it accepted the message. |
| `bounced` | The message could not be delivered (e.g. unknown mailbox or a hard rejection). |
| `complained` | The recipient marked the message as spam. |
| `opened` | The recipient’s mail client loaded the tracking pixel (requires [open tracking](https://www.mailblastr.com/docs/domains/tracking)). |
| `clicked` | The recipient clicked a tracked link (requires [click tracking](https://www.mailblastr.com/docs/domains/tracking)). |
| `delivery_delayed` | Delivery was temporarily deferred and is being retried. |

## Where to find the timeline

- In the **dashboard** — open an email to see its full event timeline.
- Via the **API** — fetch the email with [`GET /emails/:id`](https://www.mailblastr.com/docs/api/emails-get) to read its current status and events.
- Via **webhooks** — each event is also forwarded to your configured webhook endpoints in real time. See [Webhooks](https://www.mailblastr.com/docs/webhooks/overview).

> **Note:** Open and click events only appear when the sending domain has the corresponding tracking toggle enabled. See [Open and click tracking](https://www.mailblastr.com/docs/domains/tracking).

## API request logs

Separately from the per-email timeline, MailBlastr records a log of the **API requests** your keys make. This is useful for monitoring activity and troubleshooting integration issues. Each log entry shows:

- **Endpoint** — the API endpoint called (e.g. `/domains`, `/api-keys`, `/contacts`).
- **Status** — the HTTP response status code (`200`, `201`, etc.).
- **Method** — the HTTP method used (`GET`, `POST`, `DELETE`, etc.).
- **Created** — when the request was made (shown as relative time).

### Searching and filtering

Use the search bar to find a specific request. You can filter the list by response status to surface issues quickly:

- **All Statuses** — view all logs.
- **Successes** — only successful requests (2xx).
- **Errors** — only failed requests (4xx and 5xx).
- **Specific codes** — select one or more exact status codes (e.g. `200`, `201`, `403`, `429`); you can combine codes into a custom filter.

You can also narrow by **Date range** (e.g. last 15 days), **User Agent** (the client used), and **API Key**.

### Log details

Open any log entry to see the full request body, HTTP method, endpoint, and User-Agent, alongside the complete response body, status code, and timestamp. For supported error types, a **Help me fix** action opens troubleshooting guidance with the raw response, step-by-step instructions, relevant documentation links, and contextual data such as your current rate limits and verified domains.

## Exporting data

Admins can export team data as CSV for Emails, Campaigns, Contacts, Segments, Domains, Logs, and API keys. Apply filters to your data, click **Export**, and confirm. Exports of 1,000 items or fewer download immediately; larger exports are emailed as a download link.

> **Note:** Exports are limited to **admin** users. All admins can access a created export for **7 days**, after which it is marked **Expired**. Every team member can see the list of exports, but only admins can download the data.
