List the company's orders
Cursor-paginated index of the authenticated company’s orders.
An unsearched request with no sort, or on the created_at,
sale_date or id sorts, is answered from the database for
companies that have opted in, so a new or changed order is listed
on the next request; it carries no meta.pagination.total_count — fetch the
total from GET /api/v202604/orders/count. A request with
search, or on the customer, amount or status sorts, is
answered from the search index and does carry total_count.
Two deliberate differences from GET /api/v202506/orders:
- No stats block. The response
metacarries pagination only. Aggregate figures (total and average CV, total and average amount, fulfilled count) come fromGET /api/v202506/orders/stats, which is cached and built for them. Computing a whole-set aggregation on every page of a list endpoint is what made the v2025-06 index expensive. - No fallback for search. If the search index cannot answer a
request it serves, this endpoint returns
503. Requests the database serves do not depend on the index.
Cursors are opaque and tied to the source and sort that produced them:
echo meta.pagination.next_cursor back as page[cursor] to walk
forward and prev_cursor to walk back. They are not
interchangeable with the v2025-06 Rotulus cursors. Start again from
the first page whenever search or sort changes. A cursor the
server can tell belongs to another query — one from the other
source, or a database cursor sent with a different sort —
returns 422.
Visibility follows the authenticated credential, never a parameter: a company admin sees the company’s orders, and a rep sees only the orders they hold volume credit on plus their own purchases.
Unlike GET /api/v202506/orders, this surface does not accept
customer JWTs — a customer token is rejected with 401. Customers
read their own orders from
GET /api/checkout/v2026-04/customers/me/orders.
curl --request GET \
--url https://api.fluid.app/api/v202604/orders \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202604/orders"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202604/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/v202604/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/v202604/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fluid.app/api/v202604/orders")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202604/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"id": 48213,
"order_number": "F148213",
"token": "ord_7Kq2mZr9TvXw4bLp",
"order_status": "completed",
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"status": "completed",
"sale_date": "2026-09-14T15:42:08Z",
"created_at": "2026-09-14T15:41:55Z",
"updated_at": "2026-09-16T09:12:30Z",
"email": "holly.flax@dundermifflin.com",
"first_name": "Holly",
"last_name": "Flax",
"external_id": null,
"source": "web",
"currency_code": "USD",
"currency_symbol": "$",
"amount": "64.94",
"amount_in_base": "64.94",
"total_display_amount": "$64.94",
"total_cv": "50.0",
"total_qv": "50.0",
"items_count": 1,
"quantity_count": 1,
"customer": {
"id": 30577,
"full_name": "Holly Flax",
"email": "holly.flax@dundermifflin.com"
},
"first_item": {
"title": "Dunder Mifflin 20lb Copy Paper",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper.jpg"
},
"subscription": {
"subscription_token": "sub_3HfX9wPq2LmN8vRt",
"status": "active"
}
},
{
"id": 48197,
"order_number": "F148197",
"token": "ord_Qm4Rt8YpW2nZx6Jc",
"order_status": "processing",
"financial_status": "paid",
"fulfillment_status": "unfulfilled",
"status": "processing",
"sale_date": "2026-09-12T18:05:41Z",
"created_at": "2026-09-12T18:05:29Z",
"updated_at": "2026-09-12T18:06:02Z",
"email": "jan.levinson@gmail.com",
"first_name": "Jan",
"last_name": "Levinson",
"external_id": null,
"source": "web",
"currency_code": "USD",
"currency_symbol": "$",
"amount": "24.00",
"amount_in_base": "24.00",
"total_display_amount": "$24.00",
"total_cv": "15.0",
"total_qv": "15.0",
"items_count": 1,
"quantity_count": 2,
"customer": {
"id": 30612,
"full_name": "Jan Levinson",
"email": "jan.levinson@gmail.com"
},
"first_item": {
"title": "Scranton Branch Mug",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/scranton-branch-mug.jpg"
},
"subscription": null
}
],
"status": 200,
"meta": {
"request_id": "3f9c2a7e-5b1d-4e8a-9c6f-2d7b8e4a1c05",
"timestamp": "2026-09-18T14:03:27Z",
"pagination": {
"cursor": null,
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJ2IjpbMTc4OTMyNzk0MTAwMCw0ODE5N10sImQiOiJhZnRlciJ9",
"total_count": 137
}
}
}{
"message": "Invalid credentials."
}{
"message": "Not authorized."
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer token authentication. Accepts company tokens, partner tokens,
public tokens, droplet installation tokens, and user_company tokens.
The authenticated credential determines editor_type and editor_id
on the resulting order-edit audit records — the payload never carries
either field.
Query Parameters
Free-text search. Matches substrings, so a partial value finds the
row — pasting 4821 finds order number F148217.
Searches, in one pass:
- the order's
order_number,email,first_name,last_name,phoneandexternal_id - the buyer's full name and the owning member's full name and email
- the order's numeric id, its
numbersequence, and the customer's legacy id
Every term must match, and all of them must match within a single
one of those fields. Full names are indexed joined for exactly
this reason, so jane smith finds an order whose first and last
name columns hold one word each.
A cart token instead finds the orders placed from that cart, an exact match. A token that matches no order of the company is searched as free text.
Sort key. A leading - reverses the direction. Defaults to
-sale_date (newest first by effective sale date, which is the
order's sale_date falling back to created_at).
sale_date, -sale_date, created_at, -created_at, id, -id, order_status, -order_status, status, -status, customer_name, -customer_name, customer, -customer, amount, -amount Opaque cursor from a previous response's
meta.pagination.next_cursor or prev_cursor. Omit for the
first page. A malformed cursor returns 422. Start again from the
first page whenever search or sort changes; a cursor from the
other source, or a database cursor sent with a different sort,
returns 422.
Page size. Defaults to 25, capped at 100.
1 <= x <= 100Restrict to one order status. The sentinel all imposes no
constraint and is equivalent to omitting the filter.
all, draft, pending, pending_review, processing, completed, cancelled, archived Restrict to one order class.
sample_order, customer_order, member_order, enrollment_order, autoship_order Exact match on the human-facing order number.
Restrict to orders whose originating cart carried this source value.
Restrict to orders placed from the cart with this exact token. A token that matches no cart of the company returns no orders.
Restrict to one customer's orders, matched on either the owning member or a legacy customer id carried on order metadata.
Restrict to orders a given rep holds volume credit on, addressed by legacy UserCompany id.
Restrict to orders belonging to one subscription.
Comma-separated ISO-2 country codes; matches the order's own country, not the shipping address.
Inclusive lower bound on the effective sale date, as a calendar
date resolved through filter[timezone].
Inclusive upper bound on the effective sale date, as a calendar
date resolved through filter[timezone].
IANA timezone used to resolve filter[start_date] and
filter[end_date] to day boundaries, so a day means the caller's
day. Defaults to UTC; Etc/Unknown is treated as absent. An
unrecognised zone returns 422.
Response
A page of orders, newest first unless sort says otherwise.
A page of orders. meta carries pagination only — this surface
publishes no stats block; see GET /api/v202506/orders/stats.
curl --request GET \
--url https://api.fluid.app/api/v202604/orders \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202604/orders"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202604/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/v202604/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/v202604/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fluid.app/api/v202604/orders")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202604/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"id": 48213,
"order_number": "F148213",
"token": "ord_7Kq2mZr9TvXw4bLp",
"order_status": "completed",
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"status": "completed",
"sale_date": "2026-09-14T15:42:08Z",
"created_at": "2026-09-14T15:41:55Z",
"updated_at": "2026-09-16T09:12:30Z",
"email": "holly.flax@dundermifflin.com",
"first_name": "Holly",
"last_name": "Flax",
"external_id": null,
"source": "web",
"currency_code": "USD",
"currency_symbol": "$",
"amount": "64.94",
"amount_in_base": "64.94",
"total_display_amount": "$64.94",
"total_cv": "50.0",
"total_qv": "50.0",
"items_count": 1,
"quantity_count": 1,
"customer": {
"id": 30577,
"full_name": "Holly Flax",
"email": "holly.flax@dundermifflin.com"
},
"first_item": {
"title": "Dunder Mifflin 20lb Copy Paper",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper.jpg"
},
"subscription": {
"subscription_token": "sub_3HfX9wPq2LmN8vRt",
"status": "active"
}
},
{
"id": 48197,
"order_number": "F148197",
"token": "ord_Qm4Rt8YpW2nZx6Jc",
"order_status": "processing",
"financial_status": "paid",
"fulfillment_status": "unfulfilled",
"status": "processing",
"sale_date": "2026-09-12T18:05:41Z",
"created_at": "2026-09-12T18:05:29Z",
"updated_at": "2026-09-12T18:06:02Z",
"email": "jan.levinson@gmail.com",
"first_name": "Jan",
"last_name": "Levinson",
"external_id": null,
"source": "web",
"currency_code": "USD",
"currency_symbol": "$",
"amount": "24.00",
"amount_in_base": "24.00",
"total_display_amount": "$24.00",
"total_cv": "15.0",
"total_qv": "15.0",
"items_count": 1,
"quantity_count": 2,
"customer": {
"id": 30612,
"full_name": "Jan Levinson",
"email": "jan.levinson@gmail.com"
},
"first_item": {
"title": "Scranton Branch Mug",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/scranton-branch-mug.jpg"
},
"subscription": null
}
],
"status": 200,
"meta": {
"request_id": "3f9c2a7e-5b1d-4e8a-9c6f-2d7b8e4a1c05",
"timestamp": "2026-09-18T14:03:27Z",
"pagination": {
"cursor": null,
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJ2IjpbMTc4OTMyNzk0MTAwMCw0ODE5N10sImQiOiJhZnRlciJ9",
"total_count": 137
}
}
}{
"message": "Invalid credentials."
}{
"message": "Not authorized."
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}