# List Managed Mailboxes

> Every managed mailbox in the workspace.

Requires an API key with the `read` scope.

A flat list across all orders, oldest first. There is no pagination.

## Response

<ResponseField name="data" type="object">
  Result.

  <Expandable title="data">
    <ResponseField name="items" type="array">
      Mailboxes.

      <Expandable title="items">
        <ResponseField name="id" type="string">Mailbox identifier.</ResponseField>
        <ResponseField name="email" type="string">Mailbox address.</ResponseField>
        <ResponseField name="firstName" type="string">First name on the mailbox.</ResponseField>
        <ResponseField name="lastName" type="string">Last name on the mailbox.</ResponseField>
        <ResponseField name="platform" type="string">`GOOGLE` or `MICROSOFT`.</ResponseField>
        <ResponseField name="status" type="string">Provisioning status of the mailbox.</ResponseField>
        <ResponseField name="connectState" type="string">`pending`, `connected`, `failed` or `detached`.</ResponseField>
        <ResponseField name="emailAccountId" type="string">The connected email account in FoxReach, or `null` until connected.</ResponseField>
        <ResponseField name="monthlyCents" type="integer">Monthly price in US cents.</ResponseField>
        <ResponseField name="failureMessage" type="string">Why provisioning failed, or `null`.</ResponseField>
        <ResponseField name="lastConnectError" type="string">Last error while connecting the mailbox, or `null`.</ResponseField>
        <ResponseField name="connectedAt" type="string">ISO 8601 timestamp, or `null`.</ResponseField>
        <ResponseField name="cancelledAt" type="string">ISO 8601 timestamp, or `null`.</ResponseField>
        <ResponseField name="orderId" type="string">The order the mailbox belongs to.</ResponseField>
        <ResponseField name="domainName" type="string">The mailbox's domain.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
```bash cURL
curl -X GET "https://api.foxreach.io/api/v1/managed-inboxes/mailboxes" \
  -H "X-API-Key: otr_your_key"
```

```python Python SDK (beta)
from foxreach import FoxReach

client = FoxReach(api_key="otr_your_key")
mailboxes = client.managed_inboxes.list_mailboxes()
```

```typescript TypeScript SDK (beta)
import { FoxReach } from "foxreach";

const client = new FoxReach({ apiKey: "otr_your_key" });
const mailboxes = await client.managedInboxes.listMailboxes();
```
</RequestExample>

<ResponseExample>
```json
{
  "data": {
    "items": [
      {
        "id": "mbx_abc123",
        "email": "jane@yourbrand-mail.com",
        "firstName": "Jane",
        "lastName": "Doe",
        "platform": "GOOGLE",
        "status": "active",
        "connectState": "connected",
        "emailAccountId": "cea_abc123",
        "monthlyCents": 400,
        "failureMessage": null,
        "lastConnectError": null,
        "connectedAt": "2026-10-20T09:45:00+00:00",
        "cancelledAt": null,
        "orderId": "ord_abc123",
        "domainName": "yourbrand-mail.com"
      }
    ]
  }
}
```
</ResponseExample>

## Errors

| Status | Description |
|--------|-------------|
| `401` | Missing, invalid, revoked or expired API key |
| `403` | API key does not have the required scope: `read` |
| `404` | Not found while managed mailboxes are switched off on this environment (`{"detail": "Not found"}`) |

## Rate Limit

- **100 requests per minute, per API key.** Fixed 60-second window.
- Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (unix epoch seconds).
- A `429` response includes a `Retry-After` header (seconds until the bucket resets).

For client-side patterns (`Retry-After`, exponential backoff, monitoring `X-RateLimit-Remaining`), see [Rate Limiting](/rate-limiting).
