List products with stock
curl --request GET \
--url https://api.cubbo.com/v1/inventory \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cubbo.com/v1/inventory"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cubbo.com/v1/inventory', 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.cubbo.com/v1/inventory",
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.cubbo.com/v1/inventory"
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.cubbo.com/v1/inventory")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cubbo.com/v1/inventory")
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{
"products": [
{
"id": 12345,
"name": "Widget Pro Black",
"billing_name": "Widget Pro - Black Edition",
"description": "<p>A professional-grade widget.</p>",
"has_imei": false,
"is_fragile": false,
"is_kit": false,
"bar_code": "7501234567890",
"is_dropshipping": false,
"has_expiration": true,
"freshness": 180,
"is_scannable": true,
"price": "99.99",
"weight": 2.5,
"weight_unit": "kg",
"length": "10.0",
"width": "8.0",
"height": "5.0",
"dimension_unit": "cm",
"stock": {
"IN_WAREHOUSE": 250,
"AVAILABLE": 188,
"AVAILABLE_NOT_EXTERNALLY_CONFIRMED": 0,
"AVAILABLE_EXTERNALLY_CONFIRMED": 188,
"UNAVAILABLE": 22,
"RECEPTION-INCOMING-SELL-AHEAD": 0,
"INCOMING-SELL-AHEAD": 0,
"RESERVED-RECEPTION-INCOMING-SELL-AHEAD": 0,
"RESERVED-INCOMING-SELL-AHEAD": 0,
"DAMAGED": 2,
"RECEPTION": 0,
"OUT_OF_STOCK": 0,
"RESERVED": 40,
"RESERVED_BY_ORDERS": 40,
"RESERVED_BY_RETURNS": 0,
"ACTIVE": 188,
"RESERVED-WITHOUT-SELL-AHEAD": 40,
"EXPIRED": 20,
"HOLDED": 20,
"BUFFER_STOCK": 0,
"LOST": 1,
"DAMAGED_BY_SOURCE": {
"STORAGE": 2
},
"LOST_BY_SOURCE": {
"RETURN": 1
}
},
"units": [
{
"status": "DAMAGED",
"damaged_source": "STORAGE"
},
{
"status": "DAMAGED",
"damaged_source": "STORAGE"
},
{
"status": "LOST",
"lost_source": "RETURN"
}
],
"lots": [
{
"unique_code": "SKU-RED-M-L2026-04",
"expiration_date": "2026-12-31",
"status": "ACTIVE",
"quantities": {
"ACTIVE": 120,
"RESERVED": 30,
"DAMAGED": 2
}
},
{
"unique_code": "SKU-RED-M-L2026-02",
"expiration_date": "2026-06-30",
"status": "HOLDED",
"quantities": {
"HOLDED": 20
}
}
],
"store": {
"id": 1234,
"name": "Example Store"
},
"product_codes": [
{
"id": 9001,
"sku": "SKU-RED-M"
}
],
"kit_childs": []
},
{
"id": 33000,
"name": "Starter Bundle",
"billing_name": null,
"description": null,
"has_imei": false,
"is_fragile": false,
"is_kit": true,
"bar_code": "7508888888888",
"is_dropshipping": false,
"has_expiration": false,
"freshness": null,
"is_scannable": true,
"price": "149.00",
"weight": null,
"weight_unit": null,
"length": null,
"width": null,
"height": null,
"dimension_unit": "cm",
"stock": {
"IN_WAREHOUSE": 0,
"AVAILABLE": 10,
"AVAILABLE_NOT_EXTERNALLY_CONFIRMED": 0,
"AVAILABLE_EXTERNALLY_CONFIRMED": 10,
"UNAVAILABLE": 0,
"RECEPTION-INCOMING-SELL-AHEAD": 0,
"INCOMING-SELL-AHEAD": 0,
"RESERVED-RECEPTION-INCOMING-SELL-AHEAD": 0,
"RESERVED-INCOMING-SELL-AHEAD": 0,
"DAMAGED": 0,
"RECEPTION": 0,
"OUT_OF_STOCK": 0,
"RESERVED": 0,
"RESERVED_BY_ORDERS": 0,
"RESERVED_BY_RETURNS": 0,
"ACTIVE": 10,
"RESERVED-WITHOUT-SELL-AHEAD": 0,
"EXPIRED": 0,
"HOLDED": 0,
"BUFFER_STOCK": 0,
"LOST": 0,
"DAMAGED_BY_SOURCE": {},
"LOST_BY_SOURCE": {}
},
"store": {
"id": 1234,
"name": "Example Store"
},
"product_codes": [
{
"id": 9300,
"sku": "SKU-BUNDLE-01"
}
],
"kit_childs": [
{
"id": 501,
"quantity": 2,
"price_per_item": "49.50",
"kit_product": {
"id": 12345,
"name": "Widget Pro Black",
"product_codes": [
{
"id": 9001,
"sku": "SKU-RED-M"
}
]
}
}
]
}
],
"meta": {
"current_page": 1,
"next_page": 2,
"prev_page": null,
"total_pages": 12,
"first_page": true,
"last_page": false,
"per_page": 10,
"total_count": 118
}
}Inventory
List products with stock
Returns the catalog of one store with the current stock of every product. Each product
carries an aggregate stock breakdown (available, reserved, damaged, lost, expired, on hold,
sell-ahead buckets, and per-source splits of damaged and lost units), an optional per-unit
units detail and an optional per-lot lots detail. Use it to sync your catalog and stock
levels; use GET /lots when you need one product’s lots filtered or paginated.
- Results are paginated and ordered by product creation date, newest first. Default page size is 10, maximum 200.
- Pass
skus[]to restrict the page to products that carry any of the given SKUs (exact match on the SKU). unitsis present only when the product has something to report: unit-code (IMEI/serial) products list every active, reserved, damaged and lost unit with its unit code; other products list only their damaged and lost units, without a unit code.lotsis present only on products that have at least one lot. Lots are listed in creation order, not by expiration date.kit_childslists the components of a kit (bundle) with their quantity and the component product’s id, name and SKUs. It is an empty array for non-kit products.- The response is read from a replica, so very recent movements can lag a few seconds.
GET
/
inventory
List products with stock
curl --request GET \
--url https://api.cubbo.com/v1/inventory \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cubbo.com/v1/inventory"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cubbo.com/v1/inventory', 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.cubbo.com/v1/inventory",
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.cubbo.com/v1/inventory"
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.cubbo.com/v1/inventory")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cubbo.com/v1/inventory")
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{
"products": [
{
"id": 12345,
"name": "Widget Pro Black",
"billing_name": "Widget Pro - Black Edition",
"description": "<p>A professional-grade widget.</p>",
"has_imei": false,
"is_fragile": false,
"is_kit": false,
"bar_code": "7501234567890",
"is_dropshipping": false,
"has_expiration": true,
"freshness": 180,
"is_scannable": true,
"price": "99.99",
"weight": 2.5,
"weight_unit": "kg",
"length": "10.0",
"width": "8.0",
"height": "5.0",
"dimension_unit": "cm",
"stock": {
"IN_WAREHOUSE": 250,
"AVAILABLE": 188,
"AVAILABLE_NOT_EXTERNALLY_CONFIRMED": 0,
"AVAILABLE_EXTERNALLY_CONFIRMED": 188,
"UNAVAILABLE": 22,
"RECEPTION-INCOMING-SELL-AHEAD": 0,
"INCOMING-SELL-AHEAD": 0,
"RESERVED-RECEPTION-INCOMING-SELL-AHEAD": 0,
"RESERVED-INCOMING-SELL-AHEAD": 0,
"DAMAGED": 2,
"RECEPTION": 0,
"OUT_OF_STOCK": 0,
"RESERVED": 40,
"RESERVED_BY_ORDERS": 40,
"RESERVED_BY_RETURNS": 0,
"ACTIVE": 188,
"RESERVED-WITHOUT-SELL-AHEAD": 40,
"EXPIRED": 20,
"HOLDED": 20,
"BUFFER_STOCK": 0,
"LOST": 1,
"DAMAGED_BY_SOURCE": {
"STORAGE": 2
},
"LOST_BY_SOURCE": {
"RETURN": 1
}
},
"units": [
{
"status": "DAMAGED",
"damaged_source": "STORAGE"
},
{
"status": "DAMAGED",
"damaged_source": "STORAGE"
},
{
"status": "LOST",
"lost_source": "RETURN"
}
],
"lots": [
{
"unique_code": "SKU-RED-M-L2026-04",
"expiration_date": "2026-12-31",
"status": "ACTIVE",
"quantities": {
"ACTIVE": 120,
"RESERVED": 30,
"DAMAGED": 2
}
},
{
"unique_code": "SKU-RED-M-L2026-02",
"expiration_date": "2026-06-30",
"status": "HOLDED",
"quantities": {
"HOLDED": 20
}
}
],
"store": {
"id": 1234,
"name": "Example Store"
},
"product_codes": [
{
"id": 9001,
"sku": "SKU-RED-M"
}
],
"kit_childs": []
},
{
"id": 33000,
"name": "Starter Bundle",
"billing_name": null,
"description": null,
"has_imei": false,
"is_fragile": false,
"is_kit": true,
"bar_code": "7508888888888",
"is_dropshipping": false,
"has_expiration": false,
"freshness": null,
"is_scannable": true,
"price": "149.00",
"weight": null,
"weight_unit": null,
"length": null,
"width": null,
"height": null,
"dimension_unit": "cm",
"stock": {
"IN_WAREHOUSE": 0,
"AVAILABLE": 10,
"AVAILABLE_NOT_EXTERNALLY_CONFIRMED": 0,
"AVAILABLE_EXTERNALLY_CONFIRMED": 10,
"UNAVAILABLE": 0,
"RECEPTION-INCOMING-SELL-AHEAD": 0,
"INCOMING-SELL-AHEAD": 0,
"RESERVED-RECEPTION-INCOMING-SELL-AHEAD": 0,
"RESERVED-INCOMING-SELL-AHEAD": 0,
"DAMAGED": 0,
"RECEPTION": 0,
"OUT_OF_STOCK": 0,
"RESERVED": 0,
"RESERVED_BY_ORDERS": 0,
"RESERVED_BY_RETURNS": 0,
"ACTIVE": 10,
"RESERVED-WITHOUT-SELL-AHEAD": 0,
"EXPIRED": 0,
"HOLDED": 0,
"BUFFER_STOCK": 0,
"LOST": 0,
"DAMAGED_BY_SOURCE": {},
"LOST_BY_SOURCE": {}
},
"store": {
"id": 1234,
"name": "Example Store"
},
"product_codes": [
{
"id": 9300,
"sku": "SKU-BUNDLE-01"
}
],
"kit_childs": [
{
"id": 501,
"quantity": 2,
"price_per_item": "49.50",
"kit_product": {
"id": 12345,
"name": "Widget Pro Black",
"product_codes": [
{
"id": 9001,
"sku": "SKU-RED-M"
}
]
}
}
]
}
],
"meta": {
"current_page": 1,
"next_page": 2,
"prev_page": null,
"total_pages": 12,
"first_page": true,
"last_page": false,
"per_page": 10,
"total_count": 118
}
}