---
title: "List messages across inboxes"
method: GET
path: "/v1/messages"
tags: ["Messages"]
---

# List messages across inboxes

`GET /v1/messages`

## Request

- Base URL: `https://api.send0.dev`
- URL: `https://api.send0.dev/v1/messages`
- Auth: HTTP bearer

Every inbox the key can see, newest first. Takes the same filters as an inbox's message list, plus `inbox_id` and `status`.

## Query parameters

- `limit` integer
- `cursor` string
- `direction` 'in' | 'out'
- `from` string
- `subject` string
- `thread_id` string
- `since` string, date-time
- `q` string
- `inbox_id` string
- `status` 'received' | 'queued' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'failed'

## Response `200`

MessageList

- MessageList
  - `object` 'list', required
  - `data` Message[], required
    - `object` 'message', required
    - `id` string, required
    - `inbox_id` string, required
    - `thread_id` string, required
    - `direction` 'in' | 'out', required
    - `status` 'received' | 'queued' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'failed', required
    - `expired` boolean, required: true once the inbox's retention period has passed: text, html, extracted_text, extracted and attachments are gone (null or empty) and the raw message can't be downloaded. Addresses, subject, status and timestamps remain until the message is deleted, 35 days after it was created.
    - `rfc_message_id` string, nullable, required
    - `in_reply_to` string[], required
    - `references` string[], required
    - `from` Mailbox, required
      - `name` string, nullable, required
      - `email` string, required
    - `to` Mailbox[], required
      - `name` string, nullable, required
      - `email` string, required
    - `cc` Mailbox[], required
      - `name` string, nullable, required
      - `email` string, required
    - `reply_to` Mailbox[], required
      - `name` string, nullable, required
      - `email` string, required
    - `subject` string, required
    - `text` string, nullable, required
    - `html` string, nullable: Only on single-message reads and threads with include_html=true
    - `extracted_text` string, nullable, required: New text only: quoted history, forwards and signatures removed
    - `extracted` object, nullable, required
      - `otp` string, nullable, required: Most likely one-time code
      - `links` string[], required
      - `action_link` string, nullable, required: Most likely verify / sign-in / reset link
    - `auth` object, nullable, required
      - `spf` string, required
      - `dkim` string, required
      - `dmarc` string, required
    - `safety` object, nullable, required
      - `prompt_injection` 'none' | 'suspected' | 'likely', required
      - `reasons` string[], required
    - `tag` string, nullable, required: Plus-address tag, e.g. task42 for bot+task42@
    - `attachments` Attachment[], required
      - `id` string, required
      - `filename` string, nullable, required
      - `content_type` string, required
      - `size` integer, required
      - `inline` boolean, required
      - `content_id` string, nullable, required
    - `size` integer, required
    - `sent_at` string, date-time, nullable, required
    - `received_at` string, date-time, nullable, required
    - `created_at` string, date-time, required
  - `next_cursor` string, nullable, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key
- `403`: Not allowed (scope, policy or account state)
- `404`: Not found, or not visible to this key
- `429`: Rate limit (`rate_limited`, see Retry-After) or daily send limit reached

---

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