Get products in demand report
API v1 is the older API. It still works, but new integrations should use API v2. Migrating from v1 to v2
/external/intents/products_in_demandCosts 1 rate-limit point · Rate limits
Retrieve a paginated list of product variants with demand metrics based on customer intents. Returns aggregated data showing total intents, pending intents, and last requested date for each variant. Results can be filtered by date range and sorted by different metrics.
Query parameters
start_datestringFilter by start date (YYYY-MM-DD). Filters based on last_requested_at field.
end_datestringFilter by end date (YYYY-MM-DD). Filters based on last_requested_at field.
sort_bystringSort results by pending intents, total intents, or last requested date
One ofpendingtotallast_requested_atDefault"pending"directionstringSort direction (ascending or descending)
One ofascdescDefault"desc"pageintegerPage number for pagination
Default1per_pageintegerNumber of items per page (maximum 500)
Default25intent_typestringFilter by intent type (used when loading product data)
Headers
X-Auth-TokenstringRequiredAPI key for authentication
Returns
product_variants_in_demandarray of objectsShow 8 child attributesHide child attributes
shopify_variant_idintegerShopify variant identifier
shopify_product_idintegerShopify product identifier
shopify_inventory_item_idinteger, nullableShopify inventory item identifier
totalintegerTotal number of intents (both pending and sent) for this variant
pendingintegerNumber of pending (unsent) intents for this variant
last_requested_atstring, nullableTimestamp of the most recent intent created for this variant
product_dataobject, nullableShopify product data including variants
Show 4 child attributesHide child attributes
idintegerShopify product ID
titlestringProduct title
vendorstringProduct vendor/brand
variantsarray of objectsArray of product variants
Show 3 child attributesHide child attributes
idintegerShopify variant ID
titlestringVariant title (e.g., "Medium / Red")
skustringVariant SKU
variant_dataobject, nullableSpecific variant data for this demand entry
Show 3 child attributesHide child attributes
idintegerShopify variant ID
titlestringVariant title (e.g., "Medium / Red")
skustringVariant SKU
pageintegerCurrent page number
per_pageintegerNumber of items per page
has_next_pagebooleanWhether there is a next page
has_prev_pagebooleanWhether there is a previous page
Errors
Bad request - invalid parameters
Unauthorized
curl "https://app.stoqapp.com/api/v1/external/intents/products_in_demand" \
-H "X-Auth-Token: $STOQ_API_KEY"const res = await fetch("https://app.stoqapp.com/api/v1/external/intents/products_in_demand", {
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/v1/external/intents/products_in_demand",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v1/external/intents/products_in_demand")
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/v1/external/intents/products_in_demand?sort_by=pending&direction=desc" \
-H "X-Auth-Token: $STOQ_API_KEY"const res = await fetch("https://app.stoqapp.com/api/v1/external/intents/products_in_demand?sort_by=pending&direction=desc", {
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/v1/external/intents/products_in_demand?sort_by=pending&direction=desc",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v1/external/intents/products_in_demand?sort_by=pending&direction=desc")
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){
"product_variants_in_demand": [
{
"shopify_variant_id": 43900910010503,
"shopify_product_id": 7891234567890,
"total": 42,
"pending": 37,
"last_requested_at": "2026-06-24T09:12:00Z",
"variant_data": {
"id": 43900910010503,
"title": "Medium / Red",
"sku": "TSHIRT-M-RED"
},
"product_data": {
"id": 7891234567890,
"title": "Classic T-Shirt",
"vendor": "Acme"
}
}
],
"page": 1,
"per_page": 25,
"has_next_page": true,
"has_prev_page": false
}