Send 846 Inventory Advice (Brand)
curl --request POST \
--url https://api.retailreadyai.com/api/v1/inventory/brand \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"sku": "PILLOW-01",
"available_quantity": 120
},
{
"sku": "PILLOW-02",
"available_quantity": 0
}
]
}
'import requests
url = "https://api.retailreadyai.com/api/v1/inventory/brand"
payload = { "items": [
{
"sku": "PILLOW-01",
"available_quantity": 120
},
{
"sku": "PILLOW-02",
"available_quantity": 0
}
] }
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({
items: [
{sku: 'PILLOW-01', available_quantity: 120},
{sku: 'PILLOW-02', available_quantity: 0}
]
})
};
fetch('https://api.retailreadyai.com/api/v1/inventory/brand', 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.retailreadyai.com/api/v1/inventory/brand",
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([
'items' => [
[
'sku' => 'PILLOW-01',
'available_quantity' => 120
],
[
'sku' => 'PILLOW-02',
'available_quantity' => 0
]
]
]),
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://api.retailreadyai.com/api/v1/inventory/brand"
payload := strings.NewReader("{\n \"items\": [\n {\n \"sku\": \"PILLOW-01\",\n \"available_quantity\": 120\n },\n {\n \"sku\": \"PILLOW-02\",\n \"available_quantity\": 0\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://api.retailreadyai.com/api/v1/inventory/brand")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"sku\": \"PILLOW-01\",\n \"available_quantity\": 120\n },\n {\n \"sku\": \"PILLOW-02\",\n \"available_quantity\": 0\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.retailreadyai.com/api/v1/inventory/brand")
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 \"items\": [\n {\n \"sku\": \"PILLOW-01\",\n \"available_quantity\": 120\n },\n {\n \"sku\": \"PILLOW-02\",\n \"available_quantity\": 0\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "846 inventory advice sent successfully",
"data": {
"results": [
{
"organization_id": "8a47e0d6-4f12-4a9e-9c6a-2d3f9e0b8a01",
"edi_config_id": "1f2c1c4b-3d40-4e2c-8a8a-39d1e0a4cc11",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Outdoor",
"organization_name": "Acme Holdings",
"success": true,
"edi_transaction_id": "f2a73e8b-3c8b-4f1e-a4d2-1c2cda30c6e9",
"error": null,
"failed_skus": null
},
{
"organization_id": "5d92aa31-7b6e-4d52-b0c8-1e44f7c2b9d2",
"edi_config_id": "9b4f1d2e-7a3c-4e5b-8f9a-12cd34ef5678",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Apparel",
"organization_name": "Acme Apparel Co",
"success": true,
"edi_transaction_id": "ab12cd34-ef56-7890-ab12-cd34ef567890",
"error": null,
"failed_skus": null
}
],
"summary": {
"total": 2,
"succeeded": 2,
"failed": 0
}
}
}{
"message": "846 inventory advice partially completed: 1 succeeded, 1 failed",
"data": {
"results": [
{
"organization_id": "8a47e0d6-4f12-4a9e-9c6a-2d3f9e0b8a01",
"edi_config_id": "1f2c1c4b-3d40-4e2c-8a8a-39d1e0a4cc11",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Outdoor",
"organization_name": "Acme Holdings",
"success": true,
"edi_transaction_id": "f2a73e8b-3c8b-4f1e-a4d2-1c2cda30c6e9",
"error": null,
"failed_skus": null
},
{
"organization_id": "5d92aa31-7b6e-4d52-b0c8-1e44f7c2b9d2",
"edi_config_id": null,
"retailer_id": null,
"retailer_name": null,
"brand_name": null,
"organization_name": null,
"success": false,
"edi_transaction_id": null,
"error": "No EDI configs with 846 inventory advice enabled for this brand and facility",
"failed_skus": null
}
],
"summary": {
"total": 2,
"succeeded": 1,
"failed": 1
}
}
}{
"message": "Invalid request body",
"error": {
"code": "INVALID_REQUEST",
"details": "items: At least 1 item required"
}
}{
"message": "Authentication failed",
"error": {
"code": "UNAUTHORIZED"
}
}{
"message": "Unauthorized",
"error": {
"code": "UNAUTHORIZED"
}
}{
"message": "No facilities associated with this brand",
"error": {
"code": "NOT_FOUND"
}
}{
"message": "846 inventory advice failed for all configs",
"data": {
"results": [
{
"organization_id": "8a47e0d6-4f12-4a9e-9c6a-2d3f9e0b8a01",
"edi_config_id": "1f2c1c4b-3d40-4e2c-8a8a-39d1e0a4cc11",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Outdoor",
"organization_name": "Acme Holdings",
"success": false,
"edi_transaction_id": null,
"error": "502: Upstream EDI partner unavailable",
"failed_skus": null
},
{
"organization_id": "5d92aa31-7b6e-4d52-b0c8-1e44f7c2b9d2",
"edi_config_id": null,
"retailer_id": null,
"retailer_name": null,
"brand_name": null,
"organization_name": null,
"success": false,
"edi_transaction_id": null,
"error": "No EDI configs with 846 inventory advice enabled for this brand and facility",
"failed_skus": null
}
],
"summary": {
"total": 2,
"succeeded": 0,
"failed": 2
}
}
}{
"message": "Internal server error",
"error": {
"code": "INTERNAL_SERVER_ERROR"
}
}Inventory
Send 846 Inventory Advice (Brand)
Brand-side variant of the inventory endpoint. Share your current on-hand inventory for your brand and we’ll generate and transmit an 846 Inventory Advice document to each retailer your brand is set up to receive inventory updates from, across every organization you’re connected to.
POST
/
api
/
v1
/
inventory
/
brand
Send 846 Inventory Advice (Brand)
curl --request POST \
--url https://api.retailreadyai.com/api/v1/inventory/brand \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"sku": "PILLOW-01",
"available_quantity": 120
},
{
"sku": "PILLOW-02",
"available_quantity": 0
}
]
}
'import requests
url = "https://api.retailreadyai.com/api/v1/inventory/brand"
payload = { "items": [
{
"sku": "PILLOW-01",
"available_quantity": 120
},
{
"sku": "PILLOW-02",
"available_quantity": 0
}
] }
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({
items: [
{sku: 'PILLOW-01', available_quantity: 120},
{sku: 'PILLOW-02', available_quantity: 0}
]
})
};
fetch('https://api.retailreadyai.com/api/v1/inventory/brand', 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.retailreadyai.com/api/v1/inventory/brand",
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([
'items' => [
[
'sku' => 'PILLOW-01',
'available_quantity' => 120
],
[
'sku' => 'PILLOW-02',
'available_quantity' => 0
]
]
]),
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://api.retailreadyai.com/api/v1/inventory/brand"
payload := strings.NewReader("{\n \"items\": [\n {\n \"sku\": \"PILLOW-01\",\n \"available_quantity\": 120\n },\n {\n \"sku\": \"PILLOW-02\",\n \"available_quantity\": 0\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://api.retailreadyai.com/api/v1/inventory/brand")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"sku\": \"PILLOW-01\",\n \"available_quantity\": 120\n },\n {\n \"sku\": \"PILLOW-02\",\n \"available_quantity\": 0\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.retailreadyai.com/api/v1/inventory/brand")
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 \"items\": [\n {\n \"sku\": \"PILLOW-01\",\n \"available_quantity\": 120\n },\n {\n \"sku\": \"PILLOW-02\",\n \"available_quantity\": 0\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "846 inventory advice sent successfully",
"data": {
"results": [
{
"organization_id": "8a47e0d6-4f12-4a9e-9c6a-2d3f9e0b8a01",
"edi_config_id": "1f2c1c4b-3d40-4e2c-8a8a-39d1e0a4cc11",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Outdoor",
"organization_name": "Acme Holdings",
"success": true,
"edi_transaction_id": "f2a73e8b-3c8b-4f1e-a4d2-1c2cda30c6e9",
"error": null,
"failed_skus": null
},
{
"organization_id": "5d92aa31-7b6e-4d52-b0c8-1e44f7c2b9d2",
"edi_config_id": "9b4f1d2e-7a3c-4e5b-8f9a-12cd34ef5678",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Apparel",
"organization_name": "Acme Apparel Co",
"success": true,
"edi_transaction_id": "ab12cd34-ef56-7890-ab12-cd34ef567890",
"error": null,
"failed_skus": null
}
],
"summary": {
"total": 2,
"succeeded": 2,
"failed": 0
}
}
}{
"message": "846 inventory advice partially completed: 1 succeeded, 1 failed",
"data": {
"results": [
{
"organization_id": "8a47e0d6-4f12-4a9e-9c6a-2d3f9e0b8a01",
"edi_config_id": "1f2c1c4b-3d40-4e2c-8a8a-39d1e0a4cc11",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Outdoor",
"organization_name": "Acme Holdings",
"success": true,
"edi_transaction_id": "f2a73e8b-3c8b-4f1e-a4d2-1c2cda30c6e9",
"error": null,
"failed_skus": null
},
{
"organization_id": "5d92aa31-7b6e-4d52-b0c8-1e44f7c2b9d2",
"edi_config_id": null,
"retailer_id": null,
"retailer_name": null,
"brand_name": null,
"organization_name": null,
"success": false,
"edi_transaction_id": null,
"error": "No EDI configs with 846 inventory advice enabled for this brand and facility",
"failed_skus": null
}
],
"summary": {
"total": 2,
"succeeded": 1,
"failed": 1
}
}
}{
"message": "Invalid request body",
"error": {
"code": "INVALID_REQUEST",
"details": "items: At least 1 item required"
}
}{
"message": "Authentication failed",
"error": {
"code": "UNAUTHORIZED"
}
}{
"message": "Unauthorized",
"error": {
"code": "UNAUTHORIZED"
}
}{
"message": "No facilities associated with this brand",
"error": {
"code": "NOT_FOUND"
}
}{
"message": "846 inventory advice failed for all configs",
"data": {
"results": [
{
"organization_id": "8a47e0d6-4f12-4a9e-9c6a-2d3f9e0b8a01",
"edi_config_id": "1f2c1c4b-3d40-4e2c-8a8a-39d1e0a4cc11",
"retailer_id": "7eab3720-1944-4b01-aea6-972492f017e5",
"retailer_name": "Target",
"brand_name": "Acme Outdoor",
"organization_name": "Acme Holdings",
"success": false,
"edi_transaction_id": null,
"error": "502: Upstream EDI partner unavailable",
"failed_skus": null
},
{
"organization_id": "5d92aa31-7b6e-4d52-b0c8-1e44f7c2b9d2",
"edi_config_id": null,
"retailer_id": null,
"retailer_name": null,
"brand_name": null,
"organization_name": null,
"success": false,
"edi_transaction_id": null,
"error": "No EDI configs with 846 inventory advice enabled for this brand and facility",
"failed_skus": null
}
],
"summary": {
"total": 2,
"succeeded": 0,
"failed": 2
}
}
}{
"message": "Internal server error",
"error": {
"code": "INTERNAL_SERVER_ERROR"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
A complete snapshot of on-hand inventory for this brand. Include every SKU you stock, any SKU you omit will not appear on the documents sent to retailers. Required field, between 1 and 1000 entries per request, and SKUs must be unique within the request.
Required array length:
1 - 1000 elementsShow child attributes
Show child attributes
⌘I

