curl --request POST \
--url https://app.chemcloud.com.au/api/public/buyer/v1/buyer_products \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"raw_material_name": "Sodium Hydroxide 50%",
"measurement_unit": "kg",
"product_type": "Raw Material",
"raw_material_code": "NAOH-50",
"annual_usage": 10000,
"typical_order_size": 1000,
"frequency": "monthly",
"container_type": "IBC",
"target_approvals": 1,
"priority_product": false,
"active": true,
"has_shelf_life": true,
"shelf_life_days": 365,
"document_types": [
"sds"
],
"resource_values": [
{
"provider": "cin7_core",
"value": "99999a99-b888-777c-666d-55555555555e"
}
]
}
'import requests
url = "https://app.chemcloud.com.au/api/public/buyer/v1/buyer_products"
payload = {
"raw_material_name": "Sodium Hydroxide 50%",
"measurement_unit": "kg",
"product_type": "Raw Material",
"raw_material_code": "NAOH-50",
"annual_usage": 10000,
"typical_order_size": 1000,
"frequency": "monthly",
"container_type": "IBC",
"target_approvals": 1,
"priority_product": False,
"active": True,
"has_shelf_life": True,
"shelf_life_days": 365,
"document_types": ["sds"],
"resource_values": [
{
"provider": "cin7_core",
"value": "99999a99-b888-777c-666d-55555555555e"
}
]
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
raw_material_name: 'Sodium Hydroxide 50%',
measurement_unit: 'kg',
product_type: 'Raw Material',
raw_material_code: 'NAOH-50',
annual_usage: 10000,
typical_order_size: 1000,
frequency: 'monthly',
container_type: 'IBC',
target_approvals: 1,
priority_product: false,
active: true,
has_shelf_life: true,
shelf_life_days: 365,
document_types: ['sds'],
resource_values: [{provider: 'cin7_core', value: '99999a99-b888-777c-666d-55555555555e'}]
})
};
fetch('https://app.chemcloud.com.au/api/public/buyer/v1/buyer_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://app.chemcloud.com.au/api/public/buyer/v1/buyer_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([
'raw_material_name' => 'Sodium Hydroxide 50%',
'measurement_unit' => 'kg',
'product_type' => 'Raw Material',
'raw_material_code' => 'NAOH-50',
'annual_usage' => 10000,
'typical_order_size' => 1000,
'frequency' => 'monthly',
'container_type' => 'IBC',
'target_approvals' => 1,
'priority_product' => false,
'active' => true,
'has_shelf_life' => true,
'shelf_life_days' => 365,
'document_types' => [
'sds'
],
'resource_values' => [
[
'provider' => 'cin7_core',
'value' => '99999a99-b888-777c-666d-55555555555e'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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://app.chemcloud.com.au/api/public/buyer/v1/buyer_products"
payload := strings.NewReader("{\n \"raw_material_name\": \"Sodium Hydroxide 50%\",\n \"measurement_unit\": \"kg\",\n \"product_type\": \"Raw Material\",\n \"raw_material_code\": \"NAOH-50\",\n \"annual_usage\": 10000,\n \"typical_order_size\": 1000,\n \"frequency\": \"monthly\",\n \"container_type\": \"IBC\",\n \"target_approvals\": 1,\n \"priority_product\": false,\n \"active\": true,\n \"has_shelf_life\": true,\n \"shelf_life_days\": 365,\n \"document_types\": [\n \"sds\"\n ],\n \"resource_values\": [\n {\n \"provider\": \"cin7_core\",\n \"value\": \"99999a99-b888-777c-666d-55555555555e\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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://app.chemcloud.com.au/api/public/buyer/v1/buyer_products")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"raw_material_name\": \"Sodium Hydroxide 50%\",\n \"measurement_unit\": \"kg\",\n \"product_type\": \"Raw Material\",\n \"raw_material_code\": \"NAOH-50\",\n \"annual_usage\": 10000,\n \"typical_order_size\": 1000,\n \"frequency\": \"monthly\",\n \"container_type\": \"IBC\",\n \"target_approvals\": 1,\n \"priority_product\": false,\n \"active\": true,\n \"has_shelf_life\": true,\n \"shelf_life_days\": 365,\n \"document_types\": [\n \"sds\"\n ],\n \"resource_values\": [\n {\n \"provider\": \"cin7_core\",\n \"value\": \"99999a99-b888-777c-666d-55555555555e\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chemcloud.com.au/api/public/buyer/v1/buyer_products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"raw_material_name\": \"Sodium Hydroxide 50%\",\n \"measurement_unit\": \"kg\",\n \"product_type\": \"Raw Material\",\n \"raw_material_code\": \"NAOH-50\",\n \"annual_usage\": 10000,\n \"typical_order_size\": 1000,\n \"frequency\": \"monthly\",\n \"container_type\": \"IBC\",\n \"target_approvals\": 1,\n \"priority_product\": false,\n \"active\": true,\n \"has_shelf_life\": true,\n \"shelf_life_days\": 365,\n \"document_types\": [\n \"sds\"\n ],\n \"resource_values\": [\n {\n \"provider\": \"cin7_core\",\n \"value\": \"99999a99-b888-777c-666d-55555555555e\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "99999a99-b888-777c-666d-55555555555e",
"annual_usage": 10000,
"frequency": "monthly",
"raw_material_code": "NAOH-50",
"raw_material_name": "Sodium Hydroxide 50%",
"typical_order_size": 1000,
"container_type": "IBC",
"measurement_unit": "kg",
"product_type": "Raw Material",
"document_types": [
"sds"
],
"resource_values": [
{
"provider": "cin7_core",
"value": "99999a99-b888-777c-666d-55555555555e"
}
],
"target_approvals": 1,
"priority_product": false,
"active": true,
"has_shelf_life": true,
"shelf_life_days": 365,
"dangerous_goods_status": "dg",
"dangerous_goods_un_number": "UN1203, MOTOR SPIRIT or GASOLINE or PETROL, Class 3, PG II",
"created_at": "2025-12-31T23:13:11.862Z",
"updated_at": "2025-12-31T23:13:11.862Z"
}Creates a buyer product with auto-match
curl --request POST \
--url https://app.chemcloud.com.au/api/public/buyer/v1/buyer_products \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"raw_material_name": "Sodium Hydroxide 50%",
"measurement_unit": "kg",
"product_type": "Raw Material",
"raw_material_code": "NAOH-50",
"annual_usage": 10000,
"typical_order_size": 1000,
"frequency": "monthly",
"container_type": "IBC",
"target_approvals": 1,
"priority_product": false,
"active": true,
"has_shelf_life": true,
"shelf_life_days": 365,
"document_types": [
"sds"
],
"resource_values": [
{
"provider": "cin7_core",
"value": "99999a99-b888-777c-666d-55555555555e"
}
]
}
'import requests
url = "https://app.chemcloud.com.au/api/public/buyer/v1/buyer_products"
payload = {
"raw_material_name": "Sodium Hydroxide 50%",
"measurement_unit": "kg",
"product_type": "Raw Material",
"raw_material_code": "NAOH-50",
"annual_usage": 10000,
"typical_order_size": 1000,
"frequency": "monthly",
"container_type": "IBC",
"target_approvals": 1,
"priority_product": False,
"active": True,
"has_shelf_life": True,
"shelf_life_days": 365,
"document_types": ["sds"],
"resource_values": [
{
"provider": "cin7_core",
"value": "99999a99-b888-777c-666d-55555555555e"
}
]
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
raw_material_name: 'Sodium Hydroxide 50%',
measurement_unit: 'kg',
product_type: 'Raw Material',
raw_material_code: 'NAOH-50',
annual_usage: 10000,
typical_order_size: 1000,
frequency: 'monthly',
container_type: 'IBC',
target_approvals: 1,
priority_product: false,
active: true,
has_shelf_life: true,
shelf_life_days: 365,
document_types: ['sds'],
resource_values: [{provider: 'cin7_core', value: '99999a99-b888-777c-666d-55555555555e'}]
})
};
fetch('https://app.chemcloud.com.au/api/public/buyer/v1/buyer_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://app.chemcloud.com.au/api/public/buyer/v1/buyer_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([
'raw_material_name' => 'Sodium Hydroxide 50%',
'measurement_unit' => 'kg',
'product_type' => 'Raw Material',
'raw_material_code' => 'NAOH-50',
'annual_usage' => 10000,
'typical_order_size' => 1000,
'frequency' => 'monthly',
'container_type' => 'IBC',
'target_approvals' => 1,
'priority_product' => false,
'active' => true,
'has_shelf_life' => true,
'shelf_life_days' => 365,
'document_types' => [
'sds'
],
'resource_values' => [
[
'provider' => 'cin7_core',
'value' => '99999a99-b888-777c-666d-55555555555e'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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://app.chemcloud.com.au/api/public/buyer/v1/buyer_products"
payload := strings.NewReader("{\n \"raw_material_name\": \"Sodium Hydroxide 50%\",\n \"measurement_unit\": \"kg\",\n \"product_type\": \"Raw Material\",\n \"raw_material_code\": \"NAOH-50\",\n \"annual_usage\": 10000,\n \"typical_order_size\": 1000,\n \"frequency\": \"monthly\",\n \"container_type\": \"IBC\",\n \"target_approvals\": 1,\n \"priority_product\": false,\n \"active\": true,\n \"has_shelf_life\": true,\n \"shelf_life_days\": 365,\n \"document_types\": [\n \"sds\"\n ],\n \"resource_values\": [\n {\n \"provider\": \"cin7_core\",\n \"value\": \"99999a99-b888-777c-666d-55555555555e\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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://app.chemcloud.com.au/api/public/buyer/v1/buyer_products")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"raw_material_name\": \"Sodium Hydroxide 50%\",\n \"measurement_unit\": \"kg\",\n \"product_type\": \"Raw Material\",\n \"raw_material_code\": \"NAOH-50\",\n \"annual_usage\": 10000,\n \"typical_order_size\": 1000,\n \"frequency\": \"monthly\",\n \"container_type\": \"IBC\",\n \"target_approvals\": 1,\n \"priority_product\": false,\n \"active\": true,\n \"has_shelf_life\": true,\n \"shelf_life_days\": 365,\n \"document_types\": [\n \"sds\"\n ],\n \"resource_values\": [\n {\n \"provider\": \"cin7_core\",\n \"value\": \"99999a99-b888-777c-666d-55555555555e\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chemcloud.com.au/api/public/buyer/v1/buyer_products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"raw_material_name\": \"Sodium Hydroxide 50%\",\n \"measurement_unit\": \"kg\",\n \"product_type\": \"Raw Material\",\n \"raw_material_code\": \"NAOH-50\",\n \"annual_usage\": 10000,\n \"typical_order_size\": 1000,\n \"frequency\": \"monthly\",\n \"container_type\": \"IBC\",\n \"target_approvals\": 1,\n \"priority_product\": false,\n \"active\": true,\n \"has_shelf_life\": true,\n \"shelf_life_days\": 365,\n \"document_types\": [\n \"sds\"\n ],\n \"resource_values\": [\n {\n \"provider\": \"cin7_core\",\n \"value\": \"99999a99-b888-777c-666d-55555555555e\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "99999a99-b888-777c-666d-55555555555e",
"annual_usage": 10000,
"frequency": "monthly",
"raw_material_code": "NAOH-50",
"raw_material_name": "Sodium Hydroxide 50%",
"typical_order_size": 1000,
"container_type": "IBC",
"measurement_unit": "kg",
"product_type": "Raw Material",
"document_types": [
"sds"
],
"resource_values": [
{
"provider": "cin7_core",
"value": "99999a99-b888-777c-666d-55555555555e"
}
],
"target_approvals": 1,
"priority_product": false,
"active": true,
"has_shelf_life": true,
"shelf_life_days": 365,
"dangerous_goods_status": "dg",
"dangerous_goods_un_number": "UN1203, MOTOR SPIRIT or GASOLINE or PETROL, Class 3, PG II",
"created_at": "2025-12-31T23:13:11.862Z",
"updated_at": "2025-12-31T23:13:11.862Z"
}Authorizations
Body
Internal name for this product
"Sodium Hydroxide 50%"
Unit of measure purchased in
EA, L, MT, g, kg, mL "kg"
Type of product
Dye, Fragrance, Other, Packaging, Raw Material "Raw Material"
Internal code for this product
"NAOH-50"
Annual usage of this product
10000
Typical volume of purchase
1000
Typical frequency of purchase
"monthly"
Typical pack size purchased in
Bag, Bottle, Bulk, Bulk Bag, Drum, Flexibag, IBC, ISOTank, Pail, Sample, Tanker, Unit "IBC"
Target number of approved materials for this product
1
Priority product is one which is critical to your operation
false
true
Whether shelf life is checked for this buyer product. Omit or send null to leave it unanswered, which is treated as true
true
Shelf life in days for this buyer product (metadata only). Omit or send null to leave it unrecorded
365
Document types required for this product
allergen_statement, animal_testing_statement, batch_coa, bill_of_lading, bill_of_lading_surrendered, brcgs, brochure, certificate_of_origin, commercial_invoice, delivery_note, email, ethylene_oxide_dioxane_certificate, fda_certificate, fssc_22000, gmo_free_statement, gmp_certificate, haccp, halal_certificate, impurities_statement, internal_specification, iso14001, iso9001, kosher_certificate, multi_modal_dangerous_goods_form, nanoparticle_statement, nitrosamine_impurities, other, packing_declaration, packing_list, pif, product_specification, product_watchlist_batch, proof_of_delivery, purchase_order, quality_agreement, quarantine_document, quote, residual_solvent_statement, rspo_certificate, sample_coa, sds, specification_sheet, supplier_questionnaire, tds, tga_certificate, tse_certificate Show child attributes
Show child attributes
Response
Buyer product created with new product when no match found
"99999a99-b888-777c-666d-55555555555e"
Annual usage of this product
10000
Typical frequency of purchase
"monthly"
Internal code for this product
"NAOH-50"
Internal name for this product
"Sodium Hydroxide 50%"
Typical volume of purchase
1000
Typical pack size purchased in
Bag, Bottle, Bulk, Bulk Bag, Drum, Flexibag, IBC, ISOTank, Pail, Sample, Tanker, Unit "IBC"
Unit of measure purchased in
EA, L, MT, g, kg, mL "kg"
Type of product
Dye, Fragrance, Other, Packaging, Raw Material "Raw Material"
Document types required for this product
allergen_statement, animal_testing_statement, batch_coa, bill_of_lading, bill_of_lading_surrendered, brcgs, brochure, certificate_of_origin, commercial_invoice, delivery_note, email, ethylene_oxide_dioxane_certificate, fda_certificate, fssc_22000, gmo_free_statement, gmp_certificate, haccp, halal_certificate, impurities_statement, internal_specification, iso14001, iso9001, kosher_certificate, multi_modal_dangerous_goods_form, nanoparticle_statement, nitrosamine_impurities, other, packing_declaration, packing_list, pif, product_specification, product_watchlist_batch, proof_of_delivery, purchase_order, quality_agreement, quarantine_document, quote, residual_solvent_statement, rspo_certificate, sample_coa, sds, specification_sheet, supplier_questionnaire, tds, tga_certificate, tse_certificate Show child attributes
Show child attributes
Target number of approved materials for this product
1
Priority product is one which is critical to your operation
false
true
Resolved shelf life: this buyer product's own value, or true when it records none
true
This buyer product's recorded shelf life in days (metadata only), null when it has no shelf life
365
"dg", "not_dg", or null when the product has never been classified
dg, not_dg "dg"
Full dangerous goods entry: UN number, proper shipping name, class and packing group
"UN1203, MOTOR SPIRIT or GASOLINE or PETROL, Class 3, PG II"
"2025-12-31T23:13:11.862Z"
"2025-12-31T23:13:11.862Z"
Was this page helpful?

