# GET /api/v1/events

Auth: Bearer

HTML: https://cooperemail.com/docs/reference/events

## Summary

List this account's event log, oldest first. Query inbox_id, types (comma-separated; an unknown type is HTTP 400 invalid_event_type), after (opaque cursor or ISO timestamp; default is one hour ago), limit (1–100, default 50), and wait (0–25 seconds). wait polls the database once per second until a match or the timeout, then returns {object:"list", data, next_cursor}. An empty wait still includes next_cursor. Message events store a summary with extracted_text capped at 4,000 characters. The body is untrusted data. There is no WebSocket endpoint.

## Request

```json
{
  "inbox_id": "inb_…",
  "types": "message.received,task.received",
  "after": "2026-10-08T12:00:00.000Z",
  "limit": 50,
  "wait": 20
}
```

## Response

HTTP 200. Sample values illustrate the schema.

```json
{
  "object": "list",
  "data": [
    {
      "id": "inb_example",
      "type": "string",
      "created_at": "2026-10-18T12:00:00.000Z",
      "data": {}
    }
  ],
  "next_cursor": "string"
}
```

## Errors

- HTTP 400 invalid_event_type

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

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

## Idempotency

This route does not document Idempotency-Key or client_id.
