curl --request POST \
--url https://api.arcuserp.com/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Riser Kit",
"product_type": "variant_parent",
"description": "Modular riser kit with dome or flat options",
"variants": [
{
"title": "Dome Riser Kit",
"sku": "RISER-DOME",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_dome_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 49.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 39.99
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RD-001",
"default_unit_cost": 18
}
]
},
{
"title": "Flat Riser Kit",
"sku": "RISER-FLAT",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_flat_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 39.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 34.99
}
]
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RISER-PARENT",
"default_unit_cost": 15,
"purchase_policies": [
{
"qty_break": 1,
"purchase_price": 15,
"is_default": true
},
{
"qty_break": 100,
"purchase_price": 13.5
}
]
}
]
}
'import requests
url = "https://api.arcuserp.com/v1/products"
payload = {
"title": "Riser Kit",
"product_type": "variant_parent",
"description": "Modular riser kit with dome or flat options",
"variants": [
{
"title": "Dome Riser Kit",
"sku": "RISER-DOME",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_dome_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 49.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 39.99
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RD-001",
"default_unit_cost": 18
}
]
},
{
"title": "Flat Riser Kit",
"sku": "RISER-FLAT",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_flat_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 39.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 34.99
}
]
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RISER-PARENT",
"default_unit_cost": 15,
"purchase_policies": [
{
"qty_break": 1,
"purchase_price": 15,
"is_default": True
},
{
"qty_break": 100,
"purchase_price": 13.5
}
]
}
]
}
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({
title: 'Riser Kit',
product_type: 'variant_parent',
description: 'Modular riser kit with dome or flat options',
variants: [
{
title: 'Dome Riser Kit',
sku: 'RISER-DOME',
product_type: 'kit',
components: [
{component_product_id: 'prod_stone_uuid', quantity: 2},
{component_product_id: 'prod_dome_lid_uuid', quantity: 1}
],
pricing: [
{pricing_level_id: 'pl_default_uuid', min_quantity: 1, list_price: 49.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 5, list_price: 44.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 10, list_price: 39.99}
],
vendors: [{vendor_id: 'acct_acme_uuid', vendor_sku: 'RD-001', default_unit_cost: 18}]
},
{
title: 'Flat Riser Kit',
sku: 'RISER-FLAT',
product_type: 'kit',
components: [
{component_product_id: 'prod_stone_uuid', quantity: 2},
{component_product_id: 'prod_flat_lid_uuid', quantity: 1}
],
pricing: [
{pricing_level_id: 'pl_default_uuid', min_quantity: 1, list_price: 44.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 5, list_price: 39.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 10, list_price: 34.99}
]
}
],
vendors: [
{
vendor_id: 'acct_acme_uuid',
vendor_sku: 'RISER-PARENT',
default_unit_cost: 15,
purchase_policies: [
{qty_break: 1, purchase_price: 15, is_default: true},
{qty_break: 100, purchase_price: 13.5}
]
}
]
})
};
fetch('https://api.arcuserp.com/v1/products', 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.arcuserp.com/v1/products",
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([
'title' => 'Riser Kit',
'product_type' => 'variant_parent',
'description' => 'Modular riser kit with dome or flat options',
'variants' => [
[
'title' => 'Dome Riser Kit',
'sku' => 'RISER-DOME',
'product_type' => 'kit',
'components' => [
[
'component_product_id' => 'prod_stone_uuid',
'quantity' => 2
],
[
'component_product_id' => 'prod_dome_lid_uuid',
'quantity' => 1
]
],
'pricing' => [
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 1,
'list_price' => 49.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 5,
'list_price' => 44.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 10,
'list_price' => 39.99
]
],
'vendors' => [
[
'vendor_id' => 'acct_acme_uuid',
'vendor_sku' => 'RD-001',
'default_unit_cost' => 18
]
]
],
[
'title' => 'Flat Riser Kit',
'sku' => 'RISER-FLAT',
'product_type' => 'kit',
'components' => [
[
'component_product_id' => 'prod_stone_uuid',
'quantity' => 2
],
[
'component_product_id' => 'prod_flat_lid_uuid',
'quantity' => 1
]
],
'pricing' => [
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 1,
'list_price' => 44.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 5,
'list_price' => 39.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 10,
'list_price' => 34.99
]
]
]
],
'vendors' => [
[
'vendor_id' => 'acct_acme_uuid',
'vendor_sku' => 'RISER-PARENT',
'default_unit_cost' => 15,
'purchase_policies' => [
[
'qty_break' => 1,
'purchase_price' => 15,
'is_default' => true
],
[
'qty_break' => 100,
'purchase_price' => 13.5
]
]
]
]
]),
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.arcuserp.com/v1/products"
payload := strings.NewReader("{\n \"title\": \"Riser Kit\",\n \"product_type\": \"variant_parent\",\n \"description\": \"Modular riser kit with dome or flat options\",\n \"variants\": [\n {\n \"title\": \"Dome Riser Kit\",\n \"sku\": \"RISER-DOME\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_dome_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 49.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 39.99\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RD-001\",\n \"default_unit_cost\": 18\n }\n ]\n },\n {\n \"title\": \"Flat Riser Kit\",\n \"sku\": \"RISER-FLAT\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_flat_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 39.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 34.99\n }\n ]\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RISER-PARENT\",\n \"default_unit_cost\": 15,\n \"purchase_policies\": [\n {\n \"qty_break\": 1,\n \"purchase_price\": 15,\n \"is_default\": true\n },\n {\n \"qty_break\": 100,\n \"purchase_price\": 13.5\n }\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://api.arcuserp.com/v1/products")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Riser Kit\",\n \"product_type\": \"variant_parent\",\n \"description\": \"Modular riser kit with dome or flat options\",\n \"variants\": [\n {\n \"title\": \"Dome Riser Kit\",\n \"sku\": \"RISER-DOME\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_dome_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 49.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 39.99\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RD-001\",\n \"default_unit_cost\": 18\n }\n ]\n },\n {\n \"title\": \"Flat Riser Kit\",\n \"sku\": \"RISER-FLAT\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_flat_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 39.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 34.99\n }\n ]\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RISER-PARENT\",\n \"default_unit_cost\": 15,\n \"purchase_policies\": [\n {\n \"qty_break\": 1,\n \"purchase_price\": 15,\n \"is_default\": true\n },\n {\n \"qty_break\": 100,\n \"purchase_price\": 13.5\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/products")
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 \"title\": \"Riser Kit\",\n \"product_type\": \"variant_parent\",\n \"description\": \"Modular riser kit with dome or flat options\",\n \"variants\": [\n {\n \"title\": \"Dome Riser Kit\",\n \"sku\": \"RISER-DOME\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_dome_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 49.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 39.99\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RD-001\",\n \"default_unit_cost\": 18\n }\n ]\n },\n {\n \"title\": \"Flat Riser Kit\",\n \"sku\": \"RISER-FLAT\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_flat_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 39.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 34.99\n }\n ]\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RISER-PARENT\",\n \"default_unit_cost\": 15,\n \"purchase_policies\": [\n {\n \"qty_break\": 1,\n \"purchase_price\": 15,\n \"is_default\": true\n },\n {\n \"qty_break\": 100,\n \"purchase_price\": 13.5\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"object": "product",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"sku": "<string>",
"part_number": "<string>",
"barcode": "<string>",
"product_type": "physical",
"category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"list_price": 123,
"cost": 123,
"is_active": true,
"is_sellable": true,
"is_serialized": true,
"charge_tax": true,
"track_inventory": true,
"weight": 123,
"weight_uom": "<string>",
"length": 123,
"width": 123,
"height": 123,
"length_uom": "<string>",
"quantity_uom": "<string>",
"product_tax_code": "<string>",
"reorder_point": 123,
"reorder_qty": 123,
"safety_stock": 123,
"packaging_classification": "over_box",
"has_variants": true,
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Create a product
Creates a product together with any nested resources included in the request; kit and box products accept components, variant-parent products accept variants (each of which may include its own components, pricing tiers, and vendors), and any product type accepts top-level pricing and vendors. The write is atomic, since a failure in any nested child rolls back the whole request, and it is idempotent via the Idempotency-Key header.
curl --request POST \
--url https://api.arcuserp.com/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Riser Kit",
"product_type": "variant_parent",
"description": "Modular riser kit with dome or flat options",
"variants": [
{
"title": "Dome Riser Kit",
"sku": "RISER-DOME",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_dome_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 49.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 39.99
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RD-001",
"default_unit_cost": 18
}
]
},
{
"title": "Flat Riser Kit",
"sku": "RISER-FLAT",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_flat_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 39.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 34.99
}
]
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RISER-PARENT",
"default_unit_cost": 15,
"purchase_policies": [
{
"qty_break": 1,
"purchase_price": 15,
"is_default": true
},
{
"qty_break": 100,
"purchase_price": 13.5
}
]
}
]
}
'import requests
url = "https://api.arcuserp.com/v1/products"
payload = {
"title": "Riser Kit",
"product_type": "variant_parent",
"description": "Modular riser kit with dome or flat options",
"variants": [
{
"title": "Dome Riser Kit",
"sku": "RISER-DOME",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_dome_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 49.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 39.99
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RD-001",
"default_unit_cost": 18
}
]
},
{
"title": "Flat Riser Kit",
"sku": "RISER-FLAT",
"product_type": "kit",
"components": [
{
"component_product_id": "prod_stone_uuid",
"quantity": 2
},
{
"component_product_id": "prod_flat_lid_uuid",
"quantity": 1
}
],
"pricing": [
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 1,
"list_price": 44.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 5,
"list_price": 39.99
},
{
"pricing_level_id": "pl_default_uuid",
"min_quantity": 10,
"list_price": 34.99
}
]
}
],
"vendors": [
{
"vendor_id": "acct_acme_uuid",
"vendor_sku": "RISER-PARENT",
"default_unit_cost": 15,
"purchase_policies": [
{
"qty_break": 1,
"purchase_price": 15,
"is_default": True
},
{
"qty_break": 100,
"purchase_price": 13.5
}
]
}
]
}
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({
title: 'Riser Kit',
product_type: 'variant_parent',
description: 'Modular riser kit with dome or flat options',
variants: [
{
title: 'Dome Riser Kit',
sku: 'RISER-DOME',
product_type: 'kit',
components: [
{component_product_id: 'prod_stone_uuid', quantity: 2},
{component_product_id: 'prod_dome_lid_uuid', quantity: 1}
],
pricing: [
{pricing_level_id: 'pl_default_uuid', min_quantity: 1, list_price: 49.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 5, list_price: 44.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 10, list_price: 39.99}
],
vendors: [{vendor_id: 'acct_acme_uuid', vendor_sku: 'RD-001', default_unit_cost: 18}]
},
{
title: 'Flat Riser Kit',
sku: 'RISER-FLAT',
product_type: 'kit',
components: [
{component_product_id: 'prod_stone_uuid', quantity: 2},
{component_product_id: 'prod_flat_lid_uuid', quantity: 1}
],
pricing: [
{pricing_level_id: 'pl_default_uuid', min_quantity: 1, list_price: 44.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 5, list_price: 39.99},
{pricing_level_id: 'pl_default_uuid', min_quantity: 10, list_price: 34.99}
]
}
],
vendors: [
{
vendor_id: 'acct_acme_uuid',
vendor_sku: 'RISER-PARENT',
default_unit_cost: 15,
purchase_policies: [
{qty_break: 1, purchase_price: 15, is_default: true},
{qty_break: 100, purchase_price: 13.5}
]
}
]
})
};
fetch('https://api.arcuserp.com/v1/products', 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.arcuserp.com/v1/products",
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([
'title' => 'Riser Kit',
'product_type' => 'variant_parent',
'description' => 'Modular riser kit with dome or flat options',
'variants' => [
[
'title' => 'Dome Riser Kit',
'sku' => 'RISER-DOME',
'product_type' => 'kit',
'components' => [
[
'component_product_id' => 'prod_stone_uuid',
'quantity' => 2
],
[
'component_product_id' => 'prod_dome_lid_uuid',
'quantity' => 1
]
],
'pricing' => [
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 1,
'list_price' => 49.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 5,
'list_price' => 44.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 10,
'list_price' => 39.99
]
],
'vendors' => [
[
'vendor_id' => 'acct_acme_uuid',
'vendor_sku' => 'RD-001',
'default_unit_cost' => 18
]
]
],
[
'title' => 'Flat Riser Kit',
'sku' => 'RISER-FLAT',
'product_type' => 'kit',
'components' => [
[
'component_product_id' => 'prod_stone_uuid',
'quantity' => 2
],
[
'component_product_id' => 'prod_flat_lid_uuid',
'quantity' => 1
]
],
'pricing' => [
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 1,
'list_price' => 44.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 5,
'list_price' => 39.99
],
[
'pricing_level_id' => 'pl_default_uuid',
'min_quantity' => 10,
'list_price' => 34.99
]
]
]
],
'vendors' => [
[
'vendor_id' => 'acct_acme_uuid',
'vendor_sku' => 'RISER-PARENT',
'default_unit_cost' => 15,
'purchase_policies' => [
[
'qty_break' => 1,
'purchase_price' => 15,
'is_default' => true
],
[
'qty_break' => 100,
'purchase_price' => 13.5
]
]
]
]
]),
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.arcuserp.com/v1/products"
payload := strings.NewReader("{\n \"title\": \"Riser Kit\",\n \"product_type\": \"variant_parent\",\n \"description\": \"Modular riser kit with dome or flat options\",\n \"variants\": [\n {\n \"title\": \"Dome Riser Kit\",\n \"sku\": \"RISER-DOME\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_dome_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 49.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 39.99\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RD-001\",\n \"default_unit_cost\": 18\n }\n ]\n },\n {\n \"title\": \"Flat Riser Kit\",\n \"sku\": \"RISER-FLAT\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_flat_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 39.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 34.99\n }\n ]\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RISER-PARENT\",\n \"default_unit_cost\": 15,\n \"purchase_policies\": [\n {\n \"qty_break\": 1,\n \"purchase_price\": 15,\n \"is_default\": true\n },\n {\n \"qty_break\": 100,\n \"purchase_price\": 13.5\n }\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://api.arcuserp.com/v1/products")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Riser Kit\",\n \"product_type\": \"variant_parent\",\n \"description\": \"Modular riser kit with dome or flat options\",\n \"variants\": [\n {\n \"title\": \"Dome Riser Kit\",\n \"sku\": \"RISER-DOME\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_dome_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 49.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 39.99\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RD-001\",\n \"default_unit_cost\": 18\n }\n ]\n },\n {\n \"title\": \"Flat Riser Kit\",\n \"sku\": \"RISER-FLAT\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_flat_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 39.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 34.99\n }\n ]\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RISER-PARENT\",\n \"default_unit_cost\": 15,\n \"purchase_policies\": [\n {\n \"qty_break\": 1,\n \"purchase_price\": 15,\n \"is_default\": true\n },\n {\n \"qty_break\": 100,\n \"purchase_price\": 13.5\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/products")
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 \"title\": \"Riser Kit\",\n \"product_type\": \"variant_parent\",\n \"description\": \"Modular riser kit with dome or flat options\",\n \"variants\": [\n {\n \"title\": \"Dome Riser Kit\",\n \"sku\": \"RISER-DOME\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_dome_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 49.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 39.99\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RD-001\",\n \"default_unit_cost\": 18\n }\n ]\n },\n {\n \"title\": \"Flat Riser Kit\",\n \"sku\": \"RISER-FLAT\",\n \"product_type\": \"kit\",\n \"components\": [\n {\n \"component_product_id\": \"prod_stone_uuid\",\n \"quantity\": 2\n },\n {\n \"component_product_id\": \"prod_flat_lid_uuid\",\n \"quantity\": 1\n }\n ],\n \"pricing\": [\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 1,\n \"list_price\": 44.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 5,\n \"list_price\": 39.99\n },\n {\n \"pricing_level_id\": \"pl_default_uuid\",\n \"min_quantity\": 10,\n \"list_price\": 34.99\n }\n ]\n }\n ],\n \"vendors\": [\n {\n \"vendor_id\": \"acct_acme_uuid\",\n \"vendor_sku\": \"RISER-PARENT\",\n \"default_unit_cost\": 15,\n \"purchase_policies\": [\n {\n \"qty_break\": 1,\n \"purchase_price\": 15,\n \"is_default\": true\n },\n {\n \"qty_break\": 100,\n \"purchase_price\": 13.5\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"object": "product",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"sku": "<string>",
"part_number": "<string>",
"barcode": "<string>",
"product_type": "physical",
"category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"list_price": 123,
"cost": 123,
"is_active": true,
"is_sellable": true,
"is_serialized": true,
"charge_tax": true,
"track_inventory": true,
"weight": 123,
"weight_uom": "<string>",
"length": 123,
"width": 123,
"height": 123,
"length_uom": "<string>",
"quantity_uom": "<string>",
"product_tax_code": "<string>",
"reorder_point": 123,
"reorder_qty": 123,
"safety_stock": 123,
"packaging_classification": "over_box",
"has_variants": true,
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Client-generated unique key for idempotent POST/PATCH/DELETE operations. Alias for the Idempotency parameter. Max 255 chars. On retry with the same key, the original response is returned without re-executing the operation. Keys expire after 24 hours.
255Body
"Riser Kit"
physical, kit, box, service, variant_parent "variant_parent"
"Modular riser kit with dome or flat options"
Amazon-FBA packaging classification. Defaults to over_box (standard Mighty path). Set to sioc or sipp for single-item ship-ready packaging (label tapes on product, no over-box, no prep -- cannot co-pack). Set to prep_free when an over-box is still required but the prep step is skipped (no bubble wrap / bagging / labels-on-product). Mighty reads this on every pack-order call. See the Product schema for full enum semantics.
over_box, sioc, sipp, prep_free "over_box"
Kit/box component assemblies (product_type=kit or box only). Each element references a component product and the quantity required to build one unit of this kit.
Show child attributes
Show child attributes
Inline variants (product_type=variant_parent only). Each variant can itself carry
kit components[], qty-break pricing[], and vendors[] that are wired
atomically in the same transaction.
Show child attributes
Show child attributes
Sell-side pricing policies for the parent product (any product_type). Each element
defines one qty-break tier on a pricing level. Use min_quantity to set the
minimum order quantity that activates this tier (maps to qty_break internally).
All money fields are returned as JS numbers (float).
Show child attributes
Show child attributes
Vendor relationships on the parent product (any product_type)
Show child attributes
Show child attributes
Response
Product created
Arcus ERP product (physical/kit/box/service/variant_parent).
Show child attributes
Show child attributes
Was this page helpful?

