Orders placed by AI agents over a date range
Returns paid orders and revenue over the range, split by how Fluid knows the agent that placed each order, and the named agents behind them.
Only verified orders, whose agent signed its requests with a key
Fluid checked, count as confirmed agent sales. declared and
inferred are separate rows because an agent’s name or a
headless browser can be faked or mistaken, and unattributed
holds every other order: human shoppers and agents that check out
like a shopper alike. Add the rows to total, never to each
other’s confirmed figure.
The agent on an order is recorded shortly after checkout, so an
order placed moments ago can read as unattributed until then.
Agents were first recorded in November 2026; recorded_since
gives the company’s first recorded day.
Orders, revenue and dates follow the Home dashboard cards: paid
statuses, the effective sale date, money in the company’s
currency or the selected country’s. Agent identity is for company
admins: a token acting as another role answers 403. The report’s
queries have a time limit of a few seconds; a report that runs
past it answers 422.
curl --request GET \
--url https://api.fluid.app/api/v202604/analytics/agent-sales \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202604/analytics/agent-sales"
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/analytics/agent-sales', 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/analytics/agent-sales",
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/analytics/agent-sales"
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/analytics/agent-sales")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202604/analytics/agent-sales")
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{
"from": "2026-10-16",
"to": "2026-11-14",
"time_zone": "America/Denver",
"currency": "USD",
"total": {
"orders_count": 480,
"revenue": "52310.0",
"orders_share": "100.0",
"revenue_share": "100.0"
},
"classifications": [
{
"classification": "verified",
"confirmed": true,
"orders_count": 12,
"revenue": "1480.0",
"orders_share": "2.5",
"revenue_share": "2.8"
},
{
"classification": "declared",
"confirmed": false,
"orders_count": 7,
"revenue": "690.0",
"orders_share": "1.5",
"revenue_share": "1.3"
},
{
"classification": "inferred",
"confirmed": false,
"orders_count": 3,
"revenue": "210.0",
"orders_share": "0.6",
"revenue_share": "0.4"
},
{
"classification": "unattributed",
"confirmed": false,
"orders_count": 458,
"revenue": "49930.0",
"orders_share": "95.4",
"revenue_share": "95.4"
}
],
"recorded_since": "2026-11-03",
"agents": [
{
"agent": "chatgpt.com",
"classification": "verified",
"orders_count": 12,
"revenue": "1480.0",
"orders_share": "2.5",
"revenue_share": "2.8"
},
{
"agent": "muse",
"classification": "declared",
"orders_count": 7,
"revenue": "690.0",
"orders_share": "1.5",
"revenue_share": "1.3"
}
]
}{
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"request_id": "<string>",
"request_uuid": "<string>"
}
}{
"message": "<string>"
}{
"message": "<string>",
"error": "<string>"
}{
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"request_id": "<string>",
"request_uuid": "<string>"
}
}Authorizations
Query Parameters
IANA timezone name (e.g. America/Denver) or Rails-style
alias (Eastern Time (US & Canada)) used to anchor
"today" boundaries and hour-of-day bucketing. The
frontend sends
Intl.DateTimeFormat().resolvedOptions().timeZone.
Unknown or malformed values silently fall back to UTC —
callers omit the param when the endpoint doesn't need
wall-clock alignment (see CURRENT-3077).
"America/Denver"
ISO alpha-2 code of one of the requesting company's configured
countries (see GET /countries). When present, every service
on this endpoint filters its data to that country and reports
money in the country's own currency. Omit (or send "all")
for the aggregate-across-countries view, which is the default
and matches pre-Phase-004 behavior. Unknown ISO codes or ones
the company is not configured for return 400.
"US"
Response
Agent sales payload
curl --request GET \
--url https://api.fluid.app/api/v202604/analytics/agent-sales \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202604/analytics/agent-sales"
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/analytics/agent-sales', 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/analytics/agent-sales",
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/analytics/agent-sales"
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/analytics/agent-sales")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202604/analytics/agent-sales")
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{
"from": "2026-10-16",
"to": "2026-11-14",
"time_zone": "America/Denver",
"currency": "USD",
"total": {
"orders_count": 480,
"revenue": "52310.0",
"orders_share": "100.0",
"revenue_share": "100.0"
},
"classifications": [
{
"classification": "verified",
"confirmed": true,
"orders_count": 12,
"revenue": "1480.0",
"orders_share": "2.5",
"revenue_share": "2.8"
},
{
"classification": "declared",
"confirmed": false,
"orders_count": 7,
"revenue": "690.0",
"orders_share": "1.5",
"revenue_share": "1.3"
},
{
"classification": "inferred",
"confirmed": false,
"orders_count": 3,
"revenue": "210.0",
"orders_share": "0.6",
"revenue_share": "0.4"
},
{
"classification": "unattributed",
"confirmed": false,
"orders_count": 458,
"revenue": "49930.0",
"orders_share": "95.4",
"revenue_share": "95.4"
}
],
"recorded_since": "2026-11-03",
"agents": [
{
"agent": "chatgpt.com",
"classification": "verified",
"orders_count": 12,
"revenue": "1480.0",
"orders_share": "2.5",
"revenue_share": "2.8"
},
{
"agent": "muse",
"classification": "declared",
"orders_count": 7,
"revenue": "690.0",
"orders_share": "1.5",
"revenue_share": "1.3"
}
]
}{
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"request_id": "<string>",
"request_uuid": "<string>"
}
}{
"message": "<string>"
}{
"message": "<string>",
"error": "<string>"
}{
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"request_id": "<string>",
"request_uuid": "<string>"
}
}