---
title: "GET /v1/workspaces/{workspaceId}/logs"
method: GET
path: "/v1/workspaces/{workspaceId}/logs"
---

# GET /v1/workspaces/{workspaceId}/logs

`GET /v1/workspaces/{workspaceId}/logs`

## Request

- Base URL: `https://api.bangermail.com`
- URL: `https://api.bangermail.com/v1/workspaces/{workspaceId}/logs`
- Auth: HTTP bearer

## Query parameters

- `cursor` string
- `limit` integer
- `direction` 'all' | 'out' | 'in'
- `origin` 'journey' | 'broadcast' | 'mailbox' | 'api' | 'agent' | 'smtp'
- `mailbox_id` string, uuid
- `status` 'queued' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'opened' | 'clicked' | 'replied' | 'received' | 'failed' | 'rejected'
- `from` string, date
- `to` string, date
- `query` string

## Response `200`

Cursor page from the merged sent and received timeline, with SMTP attempts Banger refused as `rejected` rows. `query` also finds a refusal by its `smtp_` reference or the `bgr_` key prefix it used.

- LogPage
  - `data` LogEntry[], required
    - `id` string, uuid, required
    - `direction` 'out' | 'in', required
    - `at` string, date-time, required
    - `mailbox_id` string, uuid, nullable, required: Null for sends that leave through no mailbox, such as the API and SMTP.
    - `thread_id` string, uuid
    - `send_intent_id` string, uuid
    - `traffic_class` 'mailbox' | 'product' | 'broadcast'
    - `from` string, required
    - `to` string[], required
    - `recipient_count` integer, required
    - `subject` string, required
    - `origin` LogOrigin, required
      - `kind` 'journey' | 'broadcast' | 'mailbox' | 'api' | 'agent' | 'smtp', required
      - `id` string
      - `name` string
    - `status` 'queued' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'opened' | 'clicked' | 'replied' | 'received' | 'failed' | 'rejected', required
    - `rejection` LogRejection: Why Banger refused an SMTP attempt, and the reply the client received.
      - `ref` string, required
      - `kind` 'login_failed' | 'recipient_refused' | 'message_rejected', required
      - `reply` string, required: The full SMTP reply, e.g. `550 5.7.1 ...`.
      - `reply_code` integer, required
      - `enhanced_code` string, required
      - `reason` string, required
      - `message` string, required
      - `key_prefix` string, required: The public `bgr_` prefix of the API key the client used.
      - `client_ip` string
      - `port` integer
      - `tls` string
      - `attempts` integer, required: Failed logins on one key collapse into one row per ten minutes.
      - `last_at` string, date-time, required
    - `detail` object
  - `page` object, required
    - `has_more` boolean, required
    - `next_cursor` string

---

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