curl --request GET \
--url https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption', 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://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption",
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://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption"
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://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption")
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": [
{}
],
"meta": {
"current_page": 123,
"from": 123,
"last_page": 123,
"per_page": 123,
"to": 123,
"total": 123
}
}{
"message": "<string>"
}Consumption report (paginated)
Aggregated or transactional consumption data. The group parameter controls the row shape.
Supports quantity and other filters via the standard filter system; product-style filters are also applied.
Each row includes quantity along with total_cost (COGS for the consumed quantity) and
unit_cost (total_cost / quantity, or 0 when quantity is zero), enabling product-level
COGS pulls directly from consumption.
Warehouse attribution. Sales orders record only a warehouse group, so sales and
kit-component rows are attributed to the order’s warehouse group. Assembly, disassembly and
adjustment rows are attributed to the physical warehouse they happened in. Rows grouped by
warehouse (day_product_warehouse, product_warehouse) carry warehouse.type
(warehouse_group or warehouse), so a group and a warehouse that share a numeric ID are
returned as separate rows. warehouse.id = 0 means no warehouse or group was recorded.
Warehouse-group filter. Use warehouse_group.id (for example warehouse_group.id[in]=2)
to count only consumption for one or more warehouse groups. Sales match on the order’s
warehouse group; assemblies and disassemblies on the assembly order’s warehouse group;
adjustments on the groups their warehouse is assigned to.
Warehouse filter. Use warehouse_id (for example warehouse_id=2 or warehouse_id[in]=2,5)
to count only consumption for one or more physical warehouses. Assembly, disassembly and
adjustment rows match the warehouse they happened in. Sales and kit rows match when the
order’s warehouse group includes that warehouse. Omitting warehouse_id leaves the totals
unchanged.
curl --request GET \
--url https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption', 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://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption",
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://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption"
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://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/inventory/transactions/consumption")
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": [
{}
],
"meta": {
"current_page": 123,
"from": 123,
"last_page": 123,
"per_page": 123,
"to": 123,
"total": 123
}
}{
"message": "<string>"
}Authorizations
Authenticate using a bearer token. To create a token, navigate to /settings/api-tokens and click Create API Token.
Query Parameters
Aggregation level for the data items. product_warehouse returns one row per product per warehouse / warehouse group with all dates in the range combined.
day_product, product, day_product_warehouse, product_warehouse, transaction Only consumption on or after this transaction date (Y-m-d).
"2026-07-01"
Only consumption on or before this transaction date (Y-m-d).
"2026-09-30"
Only consumption on this transaction date (Y-m-d).
Only consumption attributed to this warehouse group. warehouse_group.id=2 is equivalent.
2
Comma-separated warehouse group IDs; consumption in any of them is counted.
"2,5"
Comma-separated warehouse group IDs to exclude.
"7"
Only consumption for this physical warehouse. warehouse_id[eq]=2 is equivalent. Sales and kit rows match when the order's warehouse group includes the warehouse.
2
Comma-separated physical warehouse IDs; consumption in any of them is counted.
"2,5"
Comma-separated consumption sources to include (sale, assembly, disassembly, adjustment). Defaults to all four.
"sale,assembly"
Set to 0 to exclude sales orders auto-generated from internal transfer orders.
Number of items per page (max 1000)
x <= 1000Page number for pagination
x >= 1