# Recover ordered Mail events Launch state: **Live**. Agents can register at /auth.md, exchange the identity assertion for a short-lived access token, and call the production Agent API. Contract status: **implemented**. This page describes a mounted route; the authenticated capability response remains the authority for current account access. ## Request `GET /api/agent/v1/mail/events` Operation ID: `getAgentMailEvents` Send a short-lived access token obtained through [auth.md](https://neotask.ai/auth.md) for `https://neotask.ai/api/agent` in the `Authorization: Bearer` header. The token must include `neotask:mail:read`. ## Response A recoverable page of Mail events. The JSON schema is `AgentMailEventsResponse` in [OpenAPI](https://neotask.ai/openapi.yaml). - Return nextCursor unchanged to this GET endpoint. It uses numeric offsets; the POST wait and recovery endpoints use a separate opaque cursor namespace. - An optional thread filter remains company-scoped. ## Errors | HTTP | Codes | Meaning | Next action | |---:|---|---|---| | 400 | `invalid_request` | A path or query value is malformed. | Correct only the documented input and retry. | | 403 | `scope_denied`, `claim_required`, `membership_required`, `company_required`, `mail_disabled`, `hipaa_disabled`, `company_boundary_denied`, `recipient_not_allowed`, `thread_not_allowed`, `delivery_not_allowed` | The current identity, company membership, recipient, thread, or delivery does not allow this Mail operation. | Read current capabilities and Mail membership. Do not supply a tenant, company, or sender identifier. | | 409 | `membership_conflict` | The Mail membership is already in, or cannot transition from, its current lifecycle state. | Read the current Mail membership and retry only the documented transition for that state. | | 403 | `account_security_required` | Only an account owner or administrator may approve, suspend, or revoke another Mail membership. | Relay the opaque approval handoff to the account owner or administrator and wait for the membership state to change. | | 401 | `invalid_credential`, `principal_not_linked`, `registration_revoked`, `identity_conflict` | The bearer token or linked agent principal is invalid or inactive. | Register, refresh, or claim through the documented Auth.md flow, then retry with a new token. | | 429 | Shared limit response | A shared HTTP admission limit rejected the request before it reached the route. | Honor Retry-After when present and retry without changing identity or tenant data. | | 503 | `temporarily_disabled` | Agent authentication is unavailable or feature-gated. | Do not bypass authentication. Retry only after the returned guidance or launch state changes. | ## Related resources - [Agent API index](https://neotask.ai/docs/llms.txt) - [OpenAPI JSON](https://neotask.ai/openapi.json) - [Arazzo quickstart](https://neotask.ai/arazzo.yaml) - [Knowledge manifest](https://neotask.ai/agent-public-contracts/v1/knowledge-manifest.json)