---
title: "Search or list emails (v2)"
method: GET
path: "/v2/agenda/email/messages"
tags: ["agenda"]
---

# Search or list emails (v2)

`GET /v2/agenda/email/messages`

Email search and listing across ALL of the authenticated user's connected mail accounts, fetched live from the providers (Google / Microsoft) — Dex stores no message content. Omit `searchQuery` to list newest-first; pass it to match subject, body, and participants as plain text (provider search operators are neutralized). `folder=inbox` restricts to received mail (the default spans the whole mailbox, including sent). Optional `limit` (default 25) and `dateRange.{start,end}` scope the window, defaulting to roughly the last 6 months; `cursor` (the previous response's `pagination.nextCursor`) continues a listing. Returns `{ data: { email_messages, pagination } }` with sender, participants, subject, snippet, and a provider deep link per message.

## Query parameters

- `limit` integer
- `searchQuery` string
- `folder` 'inbox' | 'all'
- `cursor` string
- `dateRange` object
  - `start` string, date-time
  - `end` string, date-time

## Response `200`

Successful response

- object
  - `data` object, required
    - `email_messages` object[], required
      - `providerId` string, required
      - `threadId` string, nullable
      - `type` 'EMAIL' | 'CALENDAR', required
      - `subjectOrTitle` string, required
      - `snippet` string, nullable
      - `dateTime` union, required
        - string, date-time
        - unknown
      - `from` object, nullable
        - `email` string, required
        - `name` string, nullable
      - `participants` object[], required
        - `email` string, required
        - `name` string, nullable
      - `providerLink` string, nullable
      - `email` string, required
      - `provider` string, nullable
    - `pagination` object
      - `nextCursor` string, nullable
      - `count` integer

## Other responses

- `400` — Request body failed validation.
- `401` — Missing or invalid API key.
- `403` — Valid key, insufficient permission.
- `404` — Resource does not exist.
- `409` — Request conflicts with the current state of the resource.
- `429` — Rate limit exceeded.
- `500` — Unexpected server error.

## Changes

- **2026-09-01** `c8f9981e9e54` — 1 breaking, 2 info
  - for the `query` request parameter `limit`, the max was decreased from `9007199254740991.00` to `100.00`
  - added the new optional `query` request parameter `cursor`
  - added the new optional `query` request parameter `folder`
- **2026-08-27** `a2f71a243839` — 1 info
  - api operation id `listEmailMessagesV2` was added
- **2026-07-26** `07a79f0ff879` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/getdex/apis/dex-public-api/changes/v2/agenda/email/messages/get.md)

---

[API](https://skmtc.dev/getdex/apis/dex-public-api.md) · [All operations](https://skmtc.dev/getdex/apis/dex-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getdex/dex-public-api/revisions/ed85707623a8/schema)
