---
title: "List orders"
description: "List the orders Filemonk delivers files for, newest first by ordered_at (when the buyer placed the order; sort=created_at desc orders by when Filemonk recorded it), paginated (page, per_page up to 200). meta.total_count "
url: https://docs.filemonk.io/v2/api-reference/orders/list-orders/
api: "API v2 reference"
method: GET
path: "/orders"
---

# List orders

`GET https://app.filemonk.io/api/v2/external/orders`

List the orders Filemonk delivers files for, newest first by ordered_at (when the buyer placed the order; sort=created_at desc orders by when Filemonk recorded it), paginated (page, per_page up to 200). meta.total_count is the number of orders. search matches the order name, email or phone the way the Orders page search does. financial_status filters by Shopify financial status; access by Filemonk's access state (active, revoked, partially_revoked, expired); email, customer_id, shopify_product_id and digital_product_id narrow to one buyer or one product; created_at_min / created_at_max (or from / to) are ISO 8601 bounds on when Filemonk recorded the order. Deleted orders are left out.

## Query parameters

- `financial_status` (string) One of: `pending`, `authorized`, `partially_paid`, `paid`, `partially_refunded`, `refunded`, `voided`.
- `access` (string) One of: `active`, `revoked`, `partially_revoked`, `expired`.
- `sort` (string) One of: `ordered_at desc`, `ordered_at asc`, `created_at desc`, `created_at asc`, `name asc`, `name desc`, `email asc`, `email desc`, `notified_at asc`, `notified_at desc`.
- `page` (integer): 1-based page number.
- `per_page` (integer): Rows per page, max 200.
- `search` (string)
- `email` (string)
- `customer_id` (string)
- `shopify_product_id` (string)
- `digital_product_id` (string)
- `created_at_min` (string)
- `created_at_max` (string)
- `from` (string)
- `to` (string)

## Returns

- `data` (array of objects, required)
  - `id` (string, nullable, required): e.g. `3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f`
  - `shopify_order_id` (string, nullable, required): e.g. `gid://shopify/Order/7555375595815`
  - `name` (string, nullable, required): e.g. `#1077`
  - `ordered_at` (string, nullable, required): e.g. `2026-10-26T14:19:15Z`
  - `customer` (object, required)
    - `email` (string, nullable, required): e.g. `shopper@example.com`
    - `first_name` (string, nullable, required): e.g. `Jane`
    - `last_name` (string, nullable, required): e.g. `Doe`
  - `total` (object, required)
    - `amount` (string, nullable, required): e.g. `1142.89`
    - `currency` (string, nullable, required): e.g. `INR`
  - `status` (object, required)
    - `financial` (string, nullable, required): e.g. `paid`
    - `flagged_as_fraud` (boolean, nullable, required): e.g. `false`
  - `access` (object, required)
    - `state` (string, nullable, required): e.g. `active`
    - `downloads_count` (integer, nullable, required): e.g. `0`
  - `delivery` (object, required)
    - `email_sent_at` (string, nullable, required): e.g. `2026-10-30T22:34:30Z`
  - `line_items_count` (integer, nullable, required): e.g. `2`
  - `created_at` (string, nullable, required): e.g. `2026-10-26T14:19:29Z`
- `currency` (string, nullable, required): e.g. `INR`
- `meta` (object, required): Paging of a list (`page`, `per_page` query params).
  - `total_count` (integer, required): Rows across all pages.
  - `page` (integer, required): 1-based page number.
  - `per_page` (integer, required): Rows per page, max 200.
  - `total_pages` (integer, required): e.g. `1`

Rate limit: this call costs 1 point ([rate limits](https://docs.filemonk.io/v2/errors-and-rate-limits/)).

## Examples

### List orders

```sh
curl "https://app.filemonk.io/api/v2/external/orders" \
  -H "X-Auth-Token: $FILEMONK_API_KEY"
```

### List orders filtered by financial_status, access and sort

```sh
curl "https://app.filemonk.io/api/v2/external/orders?financial_status=pending&access=active&sort=ordered_at%20desc" \
  -H "X-Auth-Token: $FILEMONK_API_KEY"
```

## 200

Success: one page of rows.

```json
{
  "data": [
    {
      "id": "3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f",
      "shopify_order_id": "gid://shopify/Order/7555375595815",
      "name": "#1077",
      "ordered_at": "2026-10-26T14:19:15Z",
      "customer": {
        "email": "shopper@example.com",
        "first_name": "Jane",
        "last_name": "Doe"
      },
      "total": {
        "amount": "1142.89",
        "currency": "INR"
      },
      "status": {
        "financial": "paid",
        "flagged_as_fraud": false
      },
      "access": {
        "state": "active",
        "downloads_count": 0
      },
      "delivery": {
        "email_sent_at": "2026-10-30T22:34:30Z"
      },
      "line_items_count": 2,
      "created_at": "2026-10-26T14:19:29Z"
    }
  ],
  "currency": "INR",
  "meta": {
    "total_count": 48,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}
```

## 401

Missing or invalid API key.

```json
{
  "errors": [
    "Invalid API key"
  ]
}
```

## 422

The request failed validation, or sent a key the action does not take (`code: &quot;unknown_parameters&quot;` with `unknown` and `accepted`). Nothing was saved.

```json
{
  "errors": [
    "access.download_limit_count must be an integer of at least 0"
  ],
  "field_errors": {
    "access.download_limit_count": [
      "must be an integer of at least 0"
    ]
  }
}
```

## 429

Rate limited. Cost-weighted per API key, shared with API v1: a read costs 1 point, a write 2, 40 points per fixed 60-second window. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix time the window ends); a 429 adds `Retry-After` (seconds), `retry_after`, `retryable: true` and a `next_step` in the body. A 429 did nothing: wait `retry_after` seconds, then send the same request again. The budget is per key, so every tool or script using the key shares it; prefer one list call with `per_page` over many single reads.

```json
{
  "errors": [
    "You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
  ],
  "code": "rate_limited",
  "retry_after": 12,
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
}
```

