# List Orders

> The workspace's managed mailbox orders.

Requires an API key with the `read` scope.

Returns up to the 100 most recent orders, newest first, each with its domains and mailboxes. There is no pagination.

## Response

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

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

      <Expandable title="items">
        <ResponseField name="id" type="string">Order identifier.</ResponseField>
        <ResponseField name="status" type="string">`pending_payment`, `paid`, `provisioning`, `active`, `partially_failed`, `failed`, `past_due` or `cancelled`.</ResponseField>
        <ResponseField name="redirectUrl" type="string">Where the domains forward to.</ResponseField>
        <ResponseField name="oneTimeCents" type="integer">One-time cost in US cents (domain registration).</ResponseField>
        <ResponseField name="monthlyCents" type="integer">Monthly cost in US cents (mailboxes).</ResponseField>
        <ResponseField name="domainCount" type="integer">Domains in the order.</ResponseField>
        <ResponseField name="mailboxCount" type="integer">Mailboxes in the order.</ResponseField>
        <ResponseField name="failureMessage" type="string">Why the order failed, or `null`.</ResponseField>
        <ResponseField name="createdAt" type="string">ISO 8601 timestamp.</ResponseField>
        <ResponseField name="paidAt" type="string">ISO 8601 timestamp, or `null`.</ResponseField>
        <ResponseField name="provisionedAt" type="string">ISO 8601 timestamp, or `null`.</ResponseField>
        <ResponseField name="cancelledAt" type="string">ISO 8601 timestamp, or `null`.</ResponseField>
        <ResponseField name="domains" type="array">
          Domains in the order.

          <Expandable title="domains">
            <ResponseField name="id" type="string">Domain identifier.</ResponseField>
            <ResponseField name="name" type="string">Domain name.</ResponseField>
            <ResponseField name="platform" type="string">`GOOGLE` or `MICROSOFT`.</ResponseField>
            <ResponseField name="status" type="string">Domain status.</ResponseField>
            <ResponseField name="priceCents" type="integer">Registration price in US cents.</ResponseField>
            <ResponseField name="renewalDate" type="string">ISO 8601 timestamp, or `null`.</ResponseField>
            <ResponseField name="renewalPriceCents" type="integer">Renewal price in US cents, or `null`.</ResponseField>
            <ResponseField name="autoRenew" type="boolean">Whether the domain renews automatically.</ResponseField>
            <ResponseField name="renewalState" type="string">Renewal state, or `null`.</ResponseField>
            <ResponseField name="failureMessage" type="string">Why the domain failed, or `null`.</ResponseField>
            <ResponseField name="mailboxes" type="array">Mailboxes on the domain (same fields as List Mailboxes, without `orderId` and `domainName`).</ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

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

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

client = FoxReach(api_key="otr_your_key")
orders = client.managed_inboxes.list_orders()
```

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

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

<ResponseExample>
```json
{
  "data": {
    "items": [
  {
      "id": "ord_abc123",
      "status": "active",
      "redirectUrl": "https://yourcompany.com",
      "oneTimeCents": 1400,
      "monthlyCents": 800,
      "domainCount": 1,
      "mailboxCount": 2,
      "failureMessage": null,
      "createdAt": "2026-10-20T09:00:00+00:00",
      "paidAt": "2026-10-20T09:02:00+00:00",
      "provisionedAt": "2026-10-20T09:40:00+00:00",
      "cancelledAt": null,
      "domains": [
        {
          "id": "dom_abc123",
          "name": "yourbrand-mail.com",
          "platform": "GOOGLE",
          "status": "active",
          "priceCents": 1400,
          "renewalDate": "2027-10-20T00:00:00+00:00",
          "renewalPriceCents": 1800,
          "autoRenew": true,
          "renewalState": null,
          "failureMessage": null,
          "mailboxes": [
            {
              "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
            }
          ]
        }
      ]
    }
    ]
  }
}
```
</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"}`) |

<Note>
  There is no API route to place an order, buy a mailbox or cancel one. Managed mailboxes are ordered and paid for in the dashboard; the API reads them and quotes prices.
</Note>

## 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).
