curl --request POST \
--url https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"offerId": 5437233,
"channelOfferId": "XCD233554",
"sku": "BEER-001",
"ean": "4003227021106",
"quantity": "1.0",
"priceList": [
{
"id": "B2C",
"quantityPriceList": [
{
"amount": "14.65",
"currency": "EUR",
"quantity": "1.0"
}
]
}
],
"title": "One of the best Beer in the World.",
"channelCategoryId": "4355111",
"channelAttributeList": [
{
"attributeId": "1332",
"value": "MyBeerBrand",
"group": "1"
}
]
}
]
'import requests
url = "https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}"
payload = [
{
"offerId": 5437233,
"channelOfferId": "XCD233554",
"sku": "BEER-001",
"ean": "4003227021106",
"quantity": "1.0",
"priceList": [
{
"id": "B2C",
"quantityPriceList": [
{
"amount": "14.65",
"currency": "EUR",
"quantity": "1.0"
}
]
}
],
"title": "One of the best Beer in the World.",
"channelCategoryId": "4355111",
"channelAttributeList": [
{
"attributeId": "1332",
"value": "MyBeerBrand",
"group": "1"
}
]
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
offerId: 5437233,
channelOfferId: 'XCD233554',
sku: 'BEER-001',
ean: '4003227021106',
quantity: '1.0',
priceList: [
{
id: 'B2C',
quantityPriceList: [{amount: '14.65', currency: 'EUR', quantity: '1.0'}]
}
],
title: 'One of the best Beer in the World.',
channelCategoryId: '4355111',
channelAttributeList: [{attributeId: '1332', value: 'MyBeerBrand', group: '1'}]
}
])
};
fetch('https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}', 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/report/{reportId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'offerId' => 5437233,
'channelOfferId' => 'XCD233554',
'sku' => 'BEER-001',
'ean' => '4003227021106',
'quantity' => '1.0',
'priceList' => [
[
'id' => 'B2C',
'quantityPriceList' => [
[
'amount' => '14.65',
'currency' => 'EUR',
'quantity' => '1.0'
]
]
]
],
'title' => 'One of the best Beer in the World.',
'channelCategoryId' => '4355111',
'channelAttributeList' => [
[
'attributeId' => '1332',
'value' => 'MyBeerBrand',
'group' => '1'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}"
payload := strings.NewReader("[\n {\n \"offerId\": 5437233,\n \"channelOfferId\": \"XCD233554\",\n \"sku\": \"BEER-001\",\n \"ean\": \"4003227021106\",\n \"quantity\": \"1.0\",\n \"priceList\": [\n {\n \"id\": \"B2C\",\n \"quantityPriceList\": [\n {\n \"amount\": \"14.65\",\n \"currency\": \"EUR\",\n \"quantity\": \"1.0\"\n }\n ]\n }\n ],\n \"title\": \"One of the best Beer in the World.\",\n \"channelCategoryId\": \"4355111\",\n \"channelAttributeList\": [\n {\n \"attributeId\": \"1332\",\n \"value\": \"MyBeerBrand\",\n \"group\": \"1\"\n }\n ]\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"offerId\": 5437233,\n \"channelOfferId\": \"XCD233554\",\n \"sku\": \"BEER-001\",\n \"ean\": \"4003227021106\",\n \"quantity\": \"1.0\",\n \"priceList\": [\n {\n \"id\": \"B2C\",\n \"quantityPriceList\": [\n {\n \"amount\": \"14.65\",\n \"currency\": \"EUR\",\n \"quantity\": \"1.0\"\n }\n ]\n }\n ],\n \"title\": \"One of the best Beer in the World.\",\n \"channelCategoryId\": \"4355111\",\n \"channelAttributeList\": [\n {\n \"attributeId\": \"1332\",\n \"value\": \"MyBeerBrand\",\n \"group\": \"1\"\n }\n ]\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"offerId\": 5437233,\n \"channelOfferId\": \"XCD233554\",\n \"sku\": \"BEER-001\",\n \"ean\": \"4003227021106\",\n \"quantity\": \"1.0\",\n \"priceList\": [\n {\n \"id\": \"B2C\",\n \"quantityPriceList\": [\n {\n \"amount\": \"14.65\",\n \"currency\": \"EUR\",\n \"quantity\": \"1.0\"\n }\n ]\n }\n ],\n \"title\": \"One of the best Beer in the World.\",\n \"channelCategoryId\": \"4355111\",\n \"channelAttributeList\": [\n {\n \"attributeId\": \"1332\",\n \"value\": \"MyBeerBrand\",\n \"group\": \"1\"\n }\n ]\n }\n]"
response = http.request(request)
puts response.read_body{
"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": "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
}
]
}Report
This API route is deprecated and will be removed soon. Use POST /v1/channel/report/{reportId}/data instead.
Send processed report data to the Channel API. On this API route, the maximum allowed size of items is 25,000.
curl --request POST \
--url https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"offerId": 5437233,
"channelOfferId": "XCD233554",
"sku": "BEER-001",
"ean": "4003227021106",
"quantity": "1.0",
"priceList": [
{
"id": "B2C",
"quantityPriceList": [
{
"amount": "14.65",
"currency": "EUR",
"quantity": "1.0"
}
]
}
],
"title": "One of the best Beer in the World.",
"channelCategoryId": "4355111",
"channelAttributeList": [
{
"attributeId": "1332",
"value": "MyBeerBrand",
"group": "1"
}
]
}
]
'import requests
url = "https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}"
payload = [
{
"offerId": 5437233,
"channelOfferId": "XCD233554",
"sku": "BEER-001",
"ean": "4003227021106",
"quantity": "1.0",
"priceList": [
{
"id": "B2C",
"quantityPriceList": [
{
"amount": "14.65",
"currency": "EUR",
"quantity": "1.0"
}
]
}
],
"title": "One of the best Beer in the World.",
"channelCategoryId": "4355111",
"channelAttributeList": [
{
"attributeId": "1332",
"value": "MyBeerBrand",
"group": "1"
}
]
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
offerId: 5437233,
channelOfferId: 'XCD233554',
sku: 'BEER-001',
ean: '4003227021106',
quantity: '1.0',
priceList: [
{
id: 'B2C',
quantityPriceList: [{amount: '14.65', currency: 'EUR', quantity: '1.0'}]
}
],
title: 'One of the best Beer in the World.',
channelCategoryId: '4355111',
channelAttributeList: [{attributeId: '1332', value: 'MyBeerBrand', group: '1'}]
}
])
};
fetch('https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}', 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/report/{reportId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'offerId' => 5437233,
'channelOfferId' => 'XCD233554',
'sku' => 'BEER-001',
'ean' => '4003227021106',
'quantity' => '1.0',
'priceList' => [
[
'id' => 'B2C',
'quantityPriceList' => [
[
'amount' => '14.65',
'currency' => 'EUR',
'quantity' => '1.0'
]
]
]
],
'title' => 'One of the best Beer in the World.',
'channelCategoryId' => '4355111',
'channelAttributeList' => [
[
'attributeId' => '1332',
'value' => 'MyBeerBrand',
'group' => '1'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}"
payload := strings.NewReader("[\n {\n \"offerId\": 5437233,\n \"channelOfferId\": \"XCD233554\",\n \"sku\": \"BEER-001\",\n \"ean\": \"4003227021106\",\n \"quantity\": \"1.0\",\n \"priceList\": [\n {\n \"id\": \"B2C\",\n \"quantityPriceList\": [\n {\n \"amount\": \"14.65\",\n \"currency\": \"EUR\",\n \"quantity\": \"1.0\"\n }\n ]\n }\n ],\n \"title\": \"One of the best Beer in the World.\",\n \"channelCategoryId\": \"4355111\",\n \"channelAttributeList\": [\n {\n \"attributeId\": \"1332\",\n \"value\": \"MyBeerBrand\",\n \"group\": \"1\"\n }\n ]\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"offerId\": 5437233,\n \"channelOfferId\": \"XCD233554\",\n \"sku\": \"BEER-001\",\n \"ean\": \"4003227021106\",\n \"quantity\": \"1.0\",\n \"priceList\": [\n {\n \"id\": \"B2C\",\n \"quantityPriceList\": [\n {\n \"amount\": \"14.65\",\n \"currency\": \"EUR\",\n \"quantity\": \"1.0\"\n }\n ]\n }\n ],\n \"title\": \"One of the best Beer in the World.\",\n \"channelCategoryId\": \"4355111\",\n \"channelAttributeList\": [\n {\n \"attributeId\": \"1332\",\n \"value\": \"MyBeerBrand\",\n \"group\": \"1\"\n }\n ]\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://scx-sbx.api.jtl-software.com/v1/channel/report/{reportId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"offerId\": 5437233,\n \"channelOfferId\": \"XCD233554\",\n \"sku\": \"BEER-001\",\n \"ean\": \"4003227021106\",\n \"quantity\": \"1.0\",\n \"priceList\": [\n {\n \"id\": \"B2C\",\n \"quantityPriceList\": [\n {\n \"amount\": \"14.65\",\n \"currency\": \"EUR\",\n \"quantity\": \"1.0\"\n }\n ]\n }\n ],\n \"title\": \"One of the best Beer in the World.\",\n \"channelCategoryId\": \"4355111\",\n \"channelAttributeList\": [\n {\n \"attributeId\": \"1332\",\n \"value\": \"MyBeerBrand\",\n \"group\": \"1\"\n }\n ]\n }\n]"
response = http.request(request)
puts response.read_body{
"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": "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.
Path Parameters
Target report identifier
Body
Full seller inventory report payload (deprecated single-shot upload), either as JSON or gzipped binary.
1 - 100 elementsUnique Offer Id to identify an Offer on a Sales Channel.
x >= 15437233
Channel defined unique Offer Id to identify an Offer on a Sales Channel.
1 - 100"XCD233554"
Stock keeping unit is a unique Id used to identify one product.
1 - 150"BEER-001"
"4003227021106"
"1.0"
Show child attributes
Show child attributes
"One of the best Beer in the World."
"4355111"
1000Show child attributes
Show child attributes
Response
Report data accepted (deprecated)
Was this page helpful?