Upsert Products using JSON
curl --request POST \
--url 'https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk' \
--header 'Content-Type: application/json' \
--data '
{
"products": [
{}
]
}
'import requests
url = "https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk"
payload = { "products": [{}] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({products: [{}]})
};
fetch('https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk', 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.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk",
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([
'products' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"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.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk"
payload := strings.NewReader("{\n \"products\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"products\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyCatalog
Upsert Products using JSON
This endpoint allows you to create or update products in bulk using a JSON array. Send an array of product objects to add new products or update existing ones in your inventory.
POST
{micro_service_base_url}
/
inventory-service-v2
/
companies
/
1000019
/
products
/
bulk
Upsert Products using JSON
curl --request POST \
--url 'https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk' \
--header 'Content-Type: application/json' \
--data '
{
"products": [
{}
]
}
'import requests
url = "https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk"
payload = { "products": [{}] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({products: [{}]})
};
fetch('https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk', 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.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk",
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([
'products' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"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.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk"
payload := strings.NewReader("{\n \"products\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/{{micro_service_base_url}}/inventory-service-v2/companies/1000019/products/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"products\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyThis endpoint processes JSON data containing product information and updates your store’s inventory. Products with existing external_id values will be updated, while new external_id values will create new products.
The system will process your product data in the background. You can monitor the processing status using the Get Job Status endpoint.
All products will be validated using our validation rules. Only products that pass all rules will be inserted or updated.
Body
An array of product objects to be created or updated
Show Product Object Structure
Show Product Object Structure
Request Example
[
{
"external_id": "22000006660",
"name": "Wrigley's Gum Slim Pack",
"price": 179,
"quantity": 1,
"category": "Candy",
"upc": "022000006660",
"image_url": "https://menu-item-images-bucket.s3.amazonaws.com/resized/7ff6bdd404ed31cfb89c07f2bb51043c.png",
"description": "15 pieces",
"brand": "",
"location": "",
"active": true,
"size": "15 pieces",
"unit_count": ""
},
{
"external_id": "22000017871",
"name": "Wrigley's Extra Long Lasting Flavor Sugar Free Spearmint",
"price": 399,
"quantity": 1,
"category": "Candy",
"upc": "022000017871",
"image_url": "https://menu-item-images-bucket.s3.amazonaws.com/resized/4ff745159f0d5e535d408b707acb7fa9.png",
"description": "35 count",
"brand": "",
"location": "",
"active": true,
"size": "35 count",
"unit_count": ""
}
]
Response
This endpoint processes the data asynchronously. No immediate response body is provided.
Products with the same external_id as existing products will be updated with the new information provided.
⌘I

