curl --request GET \
--url https://api.vori.com/v1/store-products \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vori.com/v1/store-products"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vori.com/v1/store-products', 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.vori.com/v1/store-products",
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.vori.com/v1/store-products"
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.vori.com/v1/store-products")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vori.com/v1/store-products")
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{
"data": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"store_id": "<string>",
"department_id": "<string>",
"tax_rates": [
{
"id": "<string>",
"name": "<string>",
"value": "199.99"
}
],
"item_modifiers": [
{
"id": "<string>",
"name": "<string>",
"value": "199.99"
}
],
"food_modifier_categories": [
{
"id": "<string>",
"name": "<string>",
"priority": 123,
"min_selection": 123,
"max_selection": 123,
"modifiers": [
{
"id": "<string>",
"priority": 123,
"item_modifier": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"value": "199.99"
}
}
]
}
],
"additional_barcodes": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"store_id": "<string>",
"barcode": "<string>",
"store_product_id": "<string>"
}
],
"variable_weights": [
{
"id": "<string>",
"name": "<string>",
"value": "199.99"
}
],
"brand": "<string>",
"description": "<string>",
"active": true,
"name": "<string>",
"barcode": "<string>",
"target_margin": "199.99",
"case_size": 123,
"pack_size": 123,
"print_physical_tag": true,
"esl_enabled": true,
"label_last_printed_at": "2023-11-07T05:31:56Z",
"wicable": 123,
"min_customer_age": 123,
"wic_enabled": true,
"snap_enabled": true,
"ebt_enabled": true,
"ecommerce_enabled": true,
"variable_sale_price": true,
"sold_by_weight": true,
"prompt_for_quantity": true,
"manual_item": true,
"is_tippable": true,
"is_blackhawk_gift_card": true,
"is_reloadable_blackhawk_gift_card": true,
"snap_incentive_earnable": true,
"snap_incentive_redeemable": true,
"discount_restrictions": [],
"loyalty_points_per_dollar": "199.99",
"unit_volume_quantity": "199.99",
"unit_volume_uom_name": "<string>",
"unit_price": "199.99",
"retail_price": "199.99",
"minimum_retail_price": "199.99",
"maximum_retail_price": "199.99",
"retail_price_effective_at": "2023-11-07T05:31:56Z",
"retail_price_unit_of_measure": {
"id": "<string>",
"name": "<string>",
"description": "<string>"
},
"disable_pos_sync": true,
"country_of_origin": "<string>",
"sync_to_deli_scales": false,
"active_vendor": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"code": "<string>"
},
"active_vendor_product": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mutation_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"store_product": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"barcode": "<string>"
},
"store_product_id": "<string>",
"store_id": "<string>",
"store_vendor": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"code": "<string>"
},
"description": "<string>",
"barcode": "<string>",
"item_code": "<string>",
"case_size": "199.99",
"each_cost": "199.99",
"each_cost_start_time": "2023-11-07T05:31:56Z",
"case_cost": "199.99",
"case_cost_start_time": "2023-11-07T05:31:56Z",
"lb_cost": "199.99",
"lb_cost_start_time": "2023-11-07T05:31:56Z",
"brand_name": "<string>",
"unit_volume": "<string>",
"is_order_primary": true
},
"store_vendor_products": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mutation_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"store_product": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"barcode": "<string>"
},
"store_product_id": "<string>",
"store_id": "<string>",
"store_vendor": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"code": "<string>"
},
"description": "<string>",
"barcode": "<string>",
"item_code": "<string>",
"case_size": "199.99",
"each_cost": "199.99",
"each_cost_start_time": "2023-11-07T05:31:56Z",
"case_cost": "199.99",
"case_cost_start_time": "2023-11-07T05:31:56Z",
"lb_cost": "199.99",
"lb_cost_start_time": "2023-11-07T05:31:56Z",
"brand_name": "<string>",
"unit_volume": "<string>",
"is_order_primary": true
}
],
"inventory": {
"current": "199.99",
"min_par": "<string>",
"max_stock": "<string>",
"last_changed_at": "2023-11-07T05:31:56Z"
}
}
],
"rowCount": 123
}{
"error_code": "invalid_stores"
}{
"error_code": "insufficient_permissions",
"error_details": {}
}List store products
Lists store products. Use the state parameter to filter, sort, and paginate results.
curl --request GET \
--url https://api.vori.com/v1/store-products \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vori.com/v1/store-products"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vori.com/v1/store-products', 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.vori.com/v1/store-products",
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.vori.com/v1/store-products"
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.vori.com/v1/store-products")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vori.com/v1/store-products")
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{
"data": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"store_id": "<string>",
"department_id": "<string>",
"tax_rates": [
{
"id": "<string>",
"name": "<string>",
"value": "199.99"
}
],
"item_modifiers": [
{
"id": "<string>",
"name": "<string>",
"value": "199.99"
}
],
"food_modifier_categories": [
{
"id": "<string>",
"name": "<string>",
"priority": 123,
"min_selection": 123,
"max_selection": 123,
"modifiers": [
{
"id": "<string>",
"priority": 123,
"item_modifier": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"value": "199.99"
}
}
]
}
],
"additional_barcodes": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"store_id": "<string>",
"barcode": "<string>",
"store_product_id": "<string>"
}
],
"variable_weights": [
{
"id": "<string>",
"name": "<string>",
"value": "199.99"
}
],
"brand": "<string>",
"description": "<string>",
"active": true,
"name": "<string>",
"barcode": "<string>",
"target_margin": "199.99",
"case_size": 123,
"pack_size": 123,
"print_physical_tag": true,
"esl_enabled": true,
"label_last_printed_at": "2023-11-07T05:31:56Z",
"wicable": 123,
"min_customer_age": 123,
"wic_enabled": true,
"snap_enabled": true,
"ebt_enabled": true,
"ecommerce_enabled": true,
"variable_sale_price": true,
"sold_by_weight": true,
"prompt_for_quantity": true,
"manual_item": true,
"is_tippable": true,
"is_blackhawk_gift_card": true,
"is_reloadable_blackhawk_gift_card": true,
"snap_incentive_earnable": true,
"snap_incentive_redeemable": true,
"discount_restrictions": [],
"loyalty_points_per_dollar": "199.99",
"unit_volume_quantity": "199.99",
"unit_volume_uom_name": "<string>",
"unit_price": "199.99",
"retail_price": "199.99",
"minimum_retail_price": "199.99",
"maximum_retail_price": "199.99",
"retail_price_effective_at": "2023-11-07T05:31:56Z",
"retail_price_unit_of_measure": {
"id": "<string>",
"name": "<string>",
"description": "<string>"
},
"disable_pos_sync": true,
"country_of_origin": "<string>",
"sync_to_deli_scales": false,
"active_vendor": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"code": "<string>"
},
"active_vendor_product": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mutation_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"store_product": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"barcode": "<string>"
},
"store_product_id": "<string>",
"store_id": "<string>",
"store_vendor": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"code": "<string>"
},
"description": "<string>",
"barcode": "<string>",
"item_code": "<string>",
"case_size": "199.99",
"each_cost": "199.99",
"each_cost_start_time": "2023-11-07T05:31:56Z",
"case_cost": "199.99",
"case_cost_start_time": "2023-11-07T05:31:56Z",
"lb_cost": "199.99",
"lb_cost_start_time": "2023-11-07T05:31:56Z",
"brand_name": "<string>",
"unit_volume": "<string>",
"is_order_primary": true
},
"store_vendor_products": [
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mutation_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"store_product": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"barcode": "<string>"
},
"store_product_id": "<string>",
"store_id": "<string>",
"store_vendor": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"code": "<string>"
},
"description": "<string>",
"barcode": "<string>",
"item_code": "<string>",
"case_size": "199.99",
"each_cost": "199.99",
"each_cost_start_time": "2023-11-07T05:31:56Z",
"case_cost": "199.99",
"case_cost_start_time": "2023-11-07T05:31:56Z",
"lb_cost": "199.99",
"lb_cost_start_time": "2023-11-07T05:31:56Z",
"brand_name": "<string>",
"unit_volume": "<string>",
"is_order_primary": true
}
],
"inventory": {
"current": "199.99",
"min_par": "<string>",
"max_stock": "<string>",
"last_changed_at": "2023-11-07T05:31:56Z"
}
}
],
"rowCount": 123
}{
"error_code": "invalid_stores"
}{
"error_code": "insufficient_permissions",
"error_details": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Filter, sort, and paginate products with a URL-encoded JSON object:
{
"startRow": 0,
"endRow": 50,
"filterModel": { "<field>": <filter> },
"sortModel": [{ "colId": "<field>", "sort": "asc" }]
}
Any other top-level property is rejected.
Pagination — startRow and endRow select which slice of results to return: startRow defaults to 0, and endRow defaults to startRow plus 10. You can request at most 1000 rows at a time (endRow - startRow <= 1000). The response's rowCount field always reflects the total number of matching rows across the entire result set, not just the rows returned in this request.
Sorting — sortModel orders results by any filterable field except the related-entity fields, plus id. If you don't specify a sortModel, results are sorted by created_at descending (newest first).
Filtering — filterModel is an object keyed by field name, where each value describes how to match that field:
| Filter | Example | type values | Fields |
|---|---|---|---|
| Set | {"filterType": "set", "values": ["1", "2"]} |
|
|
| Boolean | {"filterType": "boolean", "values": [true]} |
|
|
| Text | {"filterType": "text", "type": "contains", "filter": "cola"} |
|
|
| Number | {"filterType": "number", "type": "greaterThan", "filter": 10} |
|
|
| Date | {"filterType": "date", "type": "greaterThan", "dateFrom": "2026-01-01", "dateTo": null} |
|
|
| Related entities | {"filterType": "set", "values": ["1"]} |
|
|
| Product group rules | {"filterType": "set", "values": ["0195f9a8-7d64-7c3a-b7f5-3e0a5a2b9c11"]} |
|
|
type is optional for set and boolean filters and defaults to in. Boolean fields also accept set filters, and date fields also accept "filterType": "datetime". Set filters must be flat — compound AND/OR conditions are rejected.
Show child attributes
Show child attributes
Comma-separated list of related data to include on each product:
active_vendor— Populatesactive_vendorwith the product's primary vendor.active_vendor_product— Populatesactive_vendor_productwith the primary vendor's catalog entry, including costs.inventory— Populatesinventorywith on-hand quantity data.store_vendor_products— Populatesstore_vendor_productswith every vendor's catalog entry for the product.
active_vendor, active_vendor_product, inventory, store_vendor_products Related topics
List store product historyList processed store product rulesBuild Your Product List (APL) From Scratch – For New StoresWas this page helpful?