# GET /api/v1/inboxes/:id/threads?limit=20

Auth: Bearer

HTML: https://cooperemail.com/docs/reference/list-threads

## Summary

List conversations in one inbox, newest activity first. A thread is computed from messages that share a thread_id. limit is 1–100 (default 20). before and after are ISO-8601 bounds on updated_at. ascending=true reverses the order. page_token is the base64url of updated_at and thread_id. A bad token returns 400 invalid_page_token. Each thread includes subject (first message), preview (latest), senders, recipients (distinct to and cc), message_count, labels (union), attachment_count, received_at, and sent_at.

## Query

```json
?limit=20&ascending=false
```

## Response

The OpenAPI document does not declare a JSON response schema for this call. The summary is the contract.

## Errors

- HTTP 400 invalid_page_token

The live `message` is the sentence for that code. Branch on `code`.

```json
{
  "error": {
    "type": "invalid_request",
    "code": "invalid_page_token",
    "docs_url": "https://cooperemail.com/docs#invalid_page_token"
  }
}
```

## Idempotency

This route does not document Idempotency-Key or client_id.
