curl --request GET \
--url https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all \
--header 'Authorization: Bearer <token>'import requests
url = "https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all', 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://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all",
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://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all"
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://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all")
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{
"stockUpdateList": [
{
"channel": "CHANNEL",
"sellerId": "TESTSELLER",
"offerId": 4711,
"channelOfferId": "SKU1",
"quantity": 1,
"updatedAt": "2025-12-29T14:13:06+00:00"
}
],
"lastUpdatedAt": "2025-12-29T14:13:06+00:00"
}{
"errorList": [
{
"code": "VAL100",
"message": "Required field sellerId not found",
"severity": "error",
"hint": "Check the field `sellerId` — it must be a non-empty string."
}
]
}{
"errorList": [
{
"code": "GEN500",
"message": "Internal Server Error",
"severity": "error",
"hint": null
}
]
}Stock Updates (All Sellers)
This endpoint retrieves all stock updates across all sellers for a channel. It provides a comprehensive view of inventory changes from all sellers associated with the authenticated channel.
This endpoint is ideal for:
- Periodic synchronization: Regularly poll for stock updates across all sellers to keep inventory in sync
- Incremental updates: Use the
updatedAfterparameter with the previouslastUpdatedAtvalue to fetch only new changes
This API endpoint has a stricter rate limit.
curl --request GET \
--url https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all \
--header 'Authorization: Bearer <token>'import requests
url = "https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all', 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://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all",
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://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all"
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://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scx-sbx.api.jtl-software.com/v1/channel/offer/stock-updates/all")
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{
"stockUpdateList": [
{
"channel": "CHANNEL",
"sellerId": "TESTSELLER",
"offerId": 4711,
"channelOfferId": "SKU1",
"quantity": 1,
"updatedAt": "2025-12-29T14:13:06+00:00"
}
],
"lastUpdatedAt": "2025-12-29T14:13:06+00:00"
}{
"errorList": [
{
"code": "VAL100",
"message": "Required field sellerId not found",
"severity": "error",
"hint": "Check the field `sellerId` — it must be a non-empty string."
}
]
}{
"errorList": [
{
"code": "GEN500",
"message": "Internal Server Error",
"severity": "error",
"hint": null
}
]
}Authorizations
As a Channel Integrator you will receive a API Refresh Token. With such a Refresh Token you need to request an Access Token with a limited Lifetime (see POST /v1/auth). This Access Token must be provided as a Bearer Token in the Authorization Header with every request.
Query Parameters
Filters stock updates to return only those modified after the specified date and time.
Response
Successful response with stock updates from all sellers
Response containing a list of stock updates and the timestamp of the last update
List of stock update objects containing inventory changes
Show child attributes
Show child attributes
ISO 8601 timestamp indicating the lastest date of stock updates in the current list. Use this value
as the updatedAfter parameter in subsequent requests to fetch only new stock updates.
"2025-12-29T14:13:06+00:00"
Was this page helpful?