Retrieve products
API v2 is in public beta: endpoints and fields can change before general availability. See the changelog
/preorders/reports/productsCosts 1 rate-limit point · Rate limits
Preorder units, orders, line revenue and last order date per variant (or product), as the dashboard's products table.
Counts preorder line items only (ordinary items in a mixed cart are excluded). revenue is line revenue. group_by=product rolls variants up to their product. range=all_time is the dashboard's All time. image_url is the variant's stored image, else the product's (null if none is stored).
Also searched asper-product reportproduct performancewhich products are preorderingreport by productper-variant reportreport by varianttop preorder products
Query parameters
rangestringgroup_bystringOne ofvariantproductfromstringtostringsort_bystringdirectionstringpagestringper_pagestring
Returns
windowobjectShow 2 child attributesHide child attributes
fromstringExample:2026-05-26T00:00:00ZtostringExample:2026-06-25T23:59:59Z
group_bystringExample:variantsort_bystringExample:revenuedirectionstringExample:desccurrencystringExample:USDrowsarray of objectsShow 9 child attributesHide child attributes
shopify_product_idstringExample:gid://shopify/Product/8784906035384product_titlestringExample:Classic Sneakershopify_variant_idstringExample:gid://shopify/ProductVariant/47284734423096variant_titlestringExample:Blue / MediumskustringExample:CS-BLU-MunitsintegerExample:64ordersintegerExample:58revenuestringExample:7040.00last_order_datestringExample:2026-06-25T10:02:00Z
metaobjectShow 4 child attributesHide child attributes
total_countintegerExample:42pageintegerExample:1per_pageintegerExample:25total_pagesintegerExample:2
Errors
Missing or invalid X-Auth-Token.
The request failed validation.
Rate limited: cost-weighted per token (read 1, write 2; 360 points / 60s). Check Retry-After.
Every error has the same shape: see Errors.
curl "https://app.stoqapp.com/api/v2/external/preorders/reports/products" \
-H "X-Auth-Token: $STOQ_API_KEY"const res = await fetch("https://app.stoqapp.com/api/v2/external/preorders/reports/products", {
headers: {
"X-Auth-Token": process.env.STOQ_API_KEY,
},
});
const data = await res.json();import os
import requests
res = requests.get(
"https://app.stoqapp.com/api/v2/external/preorders/reports/products",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v2/external/preorders/reports/products")
req = Net::HTTP::Get.new(uri, "X-Auth-Token" => ENV["STOQ_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)curl "https://app.stoqapp.com/api/v2/external/preorders/reports/products?group_by=variant" \
-H "X-Auth-Token: $STOQ_API_KEY"const res = await fetch("https://app.stoqapp.com/api/v2/external/preorders/reports/products?group_by=variant", {
headers: {
"X-Auth-Token": process.env.STOQ_API_KEY,
},
});
const data = await res.json();import os
import requests
res = requests.get(
"https://app.stoqapp.com/api/v2/external/preorders/reports/products?group_by=variant",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v2/external/preorders/reports/products?group_by=variant")
req = Net::HTTP::Get.new(uri, "X-Auth-Token" => ENV["STOQ_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"window": {
"from": "2026-05-26T00:00:00Z",
"to": "2026-06-25T23:59:59Z"
},
"group_by": "variant",
"sort_by": "revenue",
"direction": "desc",
"currency": "USD",
"rows": [
{
"shopify_product_id": "gid://shopify/Product/8784906035384",
"product_title": "Classic Sneaker",
"shopify_variant_id": "gid://shopify/ProductVariant/47284734423096",
"variant_title": "Blue / Medium",
"sku": "CS-BLU-M",
"units": 64,
"orders": 58,
"revenue": "7040.00",
"last_order_date": "2026-06-25T10:02:00Z"
},
{
"shopify_product_id": "gid://shopify/Product/8784906035384",
"product_title": "Classic Sneaker",
"shopify_variant_id": "gid://shopify/ProductVariant/47284734455864",
"variant_title": "Red / Large",
"sku": "CS-RED-L",
"units": 31,
"orders": 30,
"revenue": "3410.00",
"last_order_date": "2026-06-24T18:40:00Z"
}
],
"meta": {
"total_count": 42,
"page": 1,
"per_page": 25,
"total_pages": 2
}
}{
"errors": [
"Invalid API key"
],
"code": "auth_invalid",
"details": [
{
"code": "auth_invalid",
"message": "Invalid API key",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"name is required"
],
"code": "validation_failed",
"details": [
{
"code": "validation_failed",
"message": "name is required",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"Rate limit exceeded"
],
"code": "rate_limited",
"details": [
{
"code": "rate_limited",
"message": "Rate limit exceeded",
"path": null,
"value": null,
"expected": null
}
]
}