Analytics Endpoints
This document covers the analytics endpoints: sales summaries, product and category performance, and inventory and fulfillment indicators for your account, over a date range you choose. Analytics are read-only, are computed from your account's orders, payments, and stock records, and match what the Seller Center reports for the same period.
Access through the developer API is issued by the Company and is limited by seller type: manufacturer and supplier accounts receive API access for importing data, under the Developer Agreement and the API Access Tiers. Nothing in this document grants broader access.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /analytics/summary | Headline measures for a period: sales, orders, refunds, average order value |
| GET | /analytics/sales | Sales by day for a period |
| GET | /analytics/products | Sales and returns by product and variant for a period |
| GET | /analytics/categories | Sales by marketplace category for a period |
| GET | /analytics/inventory | Current stock health: low-stock and out-of-stock variants |
| GET | /analytics/fulfillment | Fulfillment performance: time to ship, delivery outcomes |
All paths are relative to the base URL https://www.aapawz.com/api. Every period endpoint takes the same query parameters
| Parameter | Required | Meaning |
|---|---|---|
period_start | yes | First day of the period, YYYY-MM-DD |
period_end | yes | Last day of the period, inclusive, YYYY-MM-DD |
currency | no | Currency for monetary measures; defaults to your account currency |
Periods are computed in UTC and may span at most 366 days; a longer range fails with 422 and code period_too_long. Collections paginate as specified in Pagination and Filtering (Pagination & Filtering). Monetary measures are decimal strings with a currency field; field definitions are in Data Types and Enums.
The summary response
GET /analytics/summary?period_start=2026-10-01&period_end=2026-10-14
Authorization: Bearer <your-api-key>
{
"period_start": "2026-10-01",
"period_end": "2026-10-14",
"currency": "USD",
"gross_sales": "12840.19",
"refunds": "312.45",
"net_sales": "12527.74",
"orders": 412,
"units_sold": 537,
"average_order_value": "30.41",
"returns": 18
}
Definitions
gross_salesis the sum of order totals for orders placed in the period, before refunds.refundsis the value refunded in the period, whenever the original order was placed.net_salesisgross_salesminusrefunds.average_order_valueisgross_salesdivided byorders, rounded to two decimal places.- A measure for a period with no activity is
"0.00"or0, never null. A day with no sales appears in/analytics/saleswith zero values, so a time series has no gaps.
Product and category performance
GET /analytics/products returns one row per variant sold in the period
{
"data": [
{
"product_id": "prod_8f3ka9",
"variant_id": "var_51hd02",
"seller_sku": "ACME-DOGFOOD-10LB",
"title": "Acme Grain-Free Dog Food, 10 lb",
"units_sold": 96,
"gross_sales": "2399.04",
"refunds": "24.99",
"returns": 1
}
],
"next_cursor": null,
"currency": "USD"
}
Rows sort by gross_sales descending unless you pass sort. GET /analytics/categories returns the same measures grouped by category. Figures reconcile with the orders and payments records: the sum of product gross_sales for a period equals the summary gross_sales for that period, subject to the rounding of individual lines.
Inventory and fulfillment indicators
GET /analytics/inventory is a snapshot, not a period report: it returns the variants currently below your low-stock threshold and those out of stock, with quantity_available and days of stock at the recent sales rate where that rate can be computed. GET /analytics/fulfillment reports, for orders shipped in the period, the median and 90th-percentile hours from order confirmation to shipment, the share delivered on or before the promised date, and counts of shipments by final status. Use these to run your own reorder and carrier reviews; the underlying records remain Inventory Endpoints and Fulfillment Endpoints.
Rules and errors
- Analytics describe your account only. There is no cross-account, marketplace-wide, or competitor reporting through the API.
- Figures are as current as the underlying records at the time of the request. A refund or cancellation recorded later changes a re-run of the same period; for closed accounting periods, reconcile against statements (Payments Endpoints), which do not change once issued.
- Cache responses on your side for repeated reporting rather than re-requesting identical periods; rate limits are in Rate Limit Headers.
| Status | Code | Cause |
|---|---|---|
| 422 | period_too_long | The range exceeds 366 days |
| 422 | invalid_period | period_end is before period_start, or a date is malformed |
Error bodies follow Error Codes.