Solstiq API Documentation
The Solstiq API provides real-time supply chain integration between distributor gateways and manufacturers. Our APIs are designed for high-concurrency, low-latency, and administrative peace of mind.
Authentication
All requests must include a JSON-encoded body (or Form data) containing the following security credentials. The vendor parameter is required to route the request to the correct manufacturer-specific database and filesystem environment.
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key (Required for all requests). |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | The name of the api function |
customerID | String | The distributor's unique account ID for that vendor. |
passkey | String | A secure account-specific API key for that vendor. |
getVendors
POST /api/
Returns a list of all active manufacturers in the Solstiq network. This is a system-level call and does not require vendor, customerID, or passkey parameters.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key (Required). |
function | String | Must be set to getVendors. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"function": "getVendors"
}
Response Structure
The vendors array contains objects with the internal id (used for the vendor parameter in other calls) and the friendly name.
Response Sample
{
"success": "1",
"vendors": [
{ "id": "americanstandard", "name": "American Standard US (Lixil)" },
{ "id": "kohler", "name": "Kohler Co." }
]
}
getMultipliers
POST /api/
Returns a list of your multipliers with the specified vendor effective as-of a specified date.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key (Required). |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | getMultipliers. |
date | As-of date (optional - defaults to today's date) - YYYYMMDD format. | |
customerID | String | The buyer's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"vendor": "americanstandard",
"function": "getMultipliers"
"date": "20260415"
}
Response Structure
The multipliers array contains objects with the multiplier and value (price class).
Response Sample
{
"success": "1",
"effective_date": "20260101",
"multipliers": [
{"mult": ".39", "value": "brassftg" },
{"mult": ".175","value":"XHNIPPLE"}
]
}
searchProducts
POST /api/
Performs a multi-tiered search of the catalog. Logic prioritizes direct pointers (e.g., .SKU), then UPC, then filtered word intersections. Results return a list of manufacturer SKUs matching the provided criteria.
Input Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key required for all requests. |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | searchProducts |
customerID | String | The distributor's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
products | Array | A list of product objects to be processed. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "searchproducts",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"products": [
{
"sku": "GWHSE55",
"productID": "DIST-SKU-99",
"upc": "69029111626",
"search": "Quarter Turn Valve"
}
],
"UPDATE_MATCH": true
}
getProductMatchAll
POST /api/
Performs a multi-tiered search of the catalog. Logic prioritizes direct pointers (e.g., .SKU), then UPC, then filtered word intersections. Does a deep search using fuzzy logic if requested and needed. Results return a list of manufacturer SKUs matching the provided criteria.
Input Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key required for all requests. |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | getProductMatchAll |
customerID | String | The distributor's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
products | Array | A list of product objects to be processed. |
deep | Boolean | Set to "1" if deep searching is requested. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "searchproducts",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"deep": "1",
"products": [
{
"sku": "GWHSE55",
"productID": "DIST-SKU-99",
"upc": "69029111626",
"search": "Quarter Turn Valve"
}
],
"UPDATE_MATCH": true
}
getProductData
POST /api/
Fetches full product details and calculates Real-Time Net Cost for an array of items. Optionally, updates the sku match.
Input Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key required for all requests. |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | getProductData |
customerID | String | The distributor's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
products | Array | A list of product objects to be processed. |
MATCHED_ONLY | Set to "1" if products that are not matched should be marked "not_found". | |
UPDATE_MATCH | Set to "1" if SKU matches should be updated. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getproductdata",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"products": [
{
"sku": "GWHSE55",
"productID": "DIST-SKU-99",
"upc": "69029111626",
"catalog_no": "WASHBX-1",
"search": "Quarter Turn Valve"
}
],
"MATCHED_ONLY": "0",
"UPDATE_MATCH": "1"
}
Product Object Attributes
The system attempts to identify the product using these identifiers in order of specificity:
sku: The manufacturer's internal stock keeping unit.upc: The 12-digit Universal Product Code.catalog_no: The manufacturer's catalog or model number.productID: The distributor's internal part number used for SKU matching.search: Keywords or descriptions used for search key based searching.
Response Structure
The API returns a JSON object that echoes the original request, enriched with full product data and calculation results. If MATCHED_ONLY is "1" (true), products that are now sku matched will be returned withe their "not_found" attribute set to "1" (true). If UPDATE_MATCH is "1" (true) and both buyer and seller skus are identified, the SKU matching database is updated.
The status of the overall request is indicated by the top-level success attribute.
Global Response Attributes
| Field | Value | Description |
|---|---|---|
success | "1" | Indicates the call was fully processed and authenticated. |
error | String | A description of the failure (only present if success is not "1"). |
Enriched Product Attributes
Each object in the products array will contain the original input fields plus the following manufacturer data:
- Pricing:
cost(calculated net),LIST(raw price),multiplier(the rate applied). - Media & Docs: A
linksarray containing objects withname(e.g., "image", "specs") and the correspondinglinkURL. - Product Specs: All columns from the manufacturer's source sheet and mapped attributes.
- Metadata:
last_update(timestamp of the matrix calculation). - not_found
Set to "1" if strict SKU matching was requested and no matching SKU was found.
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"customerID": "southernphs.com",
"products": [
{
"sku": "GWHSE55",
"productID": "DIST-SKU-99",
"upc": "69029111626",
"cost": "45.12",
"LIST": "120.00",
"multiplier": ".376",
"links": [
{ "name": "image", "link": "https://media.solstiq.com/img/gwhse55.jpg" },
{ "name": "specs", "link": "https://media.solstiq.com/pdf/gwhse55_spec.pdf" }
],
"weight": "12lbs",
"last_update": "2026-05-08 09:00:00"
}
]
}
getProductMatch
POST /api/
Looks up SKU matches between buyer and seller if matched and returns full product information including current net price for an array of items.
Input Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key required for all requests. |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | getProductMatch |
customerID | String | The distributor's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
products | Array | A list of product objects to be processed. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getproductmatch",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"products": [
{
"productID": "DIST-SKU-99",
}
],
"UPDATE_MATCH": true
}
Product Object Attributes
The system attempts to identify the product using these identifiers in order of specificity:
sku: The manufacturer's internal stock keeping unit.upc: The 12-digit Universal Product Code.catalog_no: The manufacturer's catalog or model number.productID: The distributor's internal part number used for SKU matching.search: Keywords or descriptions used for fuzzy-logic matching and word-intersection.
Response Structure
The API returns a JSON object that echoes the original request, enriched with full product data and calculation results. The status of the overall request is indicated by the top-level success attribute.
Global Response Attributes
| Field | Value | Description |
|---|---|---|
success | "1" | Indicates the call was fully processed and authenticated. |
error | String | A description of the failure (only present if success is not "1"). |
Enriched Product Attributes
Each object in the products array will contain the original input fields plus the following manufacturer data:
- Pricing:
cost(calculated net),LIST(raw price),multiplier(the rate applied). - Media & Docs: A
linksarray containing objects withname(e.g., "image", "specs") and the correspondinglinkURL. - Product Specs: All columns from the manufacturer's source sheet and mapped attributes.
- Metadata:
last_update(timestamp of the matrix calculation).
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"customerID": "southernphs.com",
"products": [
{
"sku": "GWHSE55",
"productID": "DIST-SKU-99",
"upc": "69029111626",
"cost": "45.12",
"LIST": "120.00",
"multiplier": ".376",
"links": [
{ "name": "image", "link": "https://media.solstiq.com/img/gwhse55.jpg" },
{ "name": "specs", "link": "https://media.solstiq.com/pdf/gwhse55_spec.pdf" }
],
"weight": "12lbs",
"last_update": "2026-05-08 09:00:00"
}
]
}
getProductsUpdated
POST /api/
Returns a list of products updated since a specified date. This is used for incrementally updating prices and other data that is new or has changed. The ids returned are the seller's SKUs. To fetch the product information, use the
Input Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key required for all requests. |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | getProductList |
customerID | String | The distributor's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getProductList",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY"
}
Response Structure
The products attribute in the response is returned as an array of objects containing the seller's sku and the buyer's product ID.
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"customerID": "southernphs.com",
"products": [
{"sku":"80459540905","productID":"3013"},
{"sku":"80459540905","productID","3014"}
]
}
getProductList
POST /api/
Returns a comprehensive list of every primary SKU (Primary Key) currently active in the manufacturer’s database. This is used for full-catalog synchronization and initial SKU-bridge mapping.
Input Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key required for all requests. |
vendor | String | The manufacturer identifier (e.g., "americanstandard", "kohler"). |
function | String | getProductList |
customerID | String | The distributor's unique account ID. |
passkey | String | A secure API key assigned by the manufacturer. |
products | Array | A list of product objects to be processed. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getProductList",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY"
}
Response Structure
The products attribute in the response is returned as a flat array of scalars, representing the unique manufacturer SKUs.
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"customerID": "southernphs.com",
"products": [
"GWHSE55",
"ELB90-12",
"TEE-12",
"WASHBX-1",
"ADPT-34-M"
]
}
getProductCount
POST /api/
Returns the total number of products currently active in the specified vendor's database. This is a lightweight call used for data validation and synchronization auditing.
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getproductcount",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY"
}
Response Structure
| Field | Value | Description |
|---|---|---|
success | "1" | Call was successful. |
count | Integer | The total number of products in the manufacturer's file. |
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"count": 14250
}
getVendorsPriceSheets
POST /api/
Generates secure, temporary access to the raw price sheets uploaded by the manufacturer. This endpoint filters out system metadata files (e.g., .md5, .last_sync) to provide only the relevant data files for distributor consumption.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key. |
vendor | String | The manufacturer ID (e.g., "americanstandard"). |
function | String | getVendorsPriceSheets |
customerID | String | Distributor account identifier. |
passkey | String | Secure account-specific passkey. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getvendorspricesheets",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY"
} Response Structure
The links array contains the filenames and accessible URLs for the raw manufacturer sheets found in the /sheet_uploads directory.
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"links": [
{ "name": "AS_Master_Pricing_May.xlsx", "link": "https://media.solstiq.com/tmp/AS_Master_Pricing_May.xlsx" },
{ "name": "Faucets_Update_2026.csv", "link": "https://media.solstiq.com/tmp/Faucets_Update_2026.csv" }
]
}
getOrderCount
POST /api/
Returns a count of how many purchase orders are on file.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key. |
vendor | String | The manufacturer ID (e.g., "americanstandard"). |
function | String | getOrderCount |
customerID | String | Distributor account identifier. |
passkey | String | Secure account-specific passkey. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getOrderCount",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY"
} Response Structure
The order_cnt attribute shows the number of purchase orders that are on file (all statuses).
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"order_cnt": "97",
"vendor": "americanstandard",
}
getOrderList
POST /api/
Returns a list of purchase order numbers.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key. |
vendor | String | The manufacturer ID (e.g., "americanstandard"). |
function | String | getOrderList |
customerID | String | Distributor account identifier. |
passkey | String | Secure account-specific passkey. |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getOrderList",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY"
} Response Structure
The purchase_order_no attribute is a list of purchase order numbers. The statuses attribute is a similar list showing the status of each order.The submitted, acknowledged, confirmed, rejected, shipped and invoiced attributes show how many orders there are with each status.
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"purchase_order_nos": [",
"P1100123",
"P1101987",
"P1129010"
]
"statuses": ["
{"no": "P1100123", "status": "Submitted"},
{"po": "P1101987", "status": "Confirmed"},
{"po": "P1129010", "status": "Shipped"}
]
"submitted": "1",
"acknowledged": "0",
"confirmed": "1",
"rejected": "0",
"shipped": "1",
"invoiced": "0"
"vendor": "americanstandard",
"success": "1"
}
getOrder
POST /api/
Fetches a purchase order.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key. |
vendor | String | The manufacturer ID (e.g., "americanstandard"). |
function | String | getOrder |
customerID | String | Distributor account identifier. |
passkey | String | Secure account-specific passkey. |
purchase_order_no | String | The purchase order# of the order requested |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getOrder",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"purchase_order_no": "P1234567.001"
}
Response Structure
The purchase_order_no attribute is a list of purchase order numbers. The statuses attribute is a similar list showing the status of each order.The submitted, acknowledged, confirmed, rejected, shipped and invoiced attributes show how many orders there are with each status.
Response Sample
{
"success": "1",
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"order": {",
"billto":{
"btaddress":"113 California Blvd",
"btcity":"Arlington",
"btname":"American Plumbing & Heating Supply Corp.",
"btpostal":"22201",
"btstate":"VA"
},
"customerID":"user@gmail.com",
"items":[
{
"amt":"277.5",
"catalog_no":"PPLN0012",
"desc":"045-11440 642PX2 1/2 POLY PEX 90 ELL",
"expdate":"20260505",
"lineno":"1",
"pformula":"EX5P1",
"price_uom":"ea",
"product":"200241",
"productID":"200241",
"qty_open":"750",
"quantity":"750",
"unit_price":"0.37",
"uom":"ea",
"upc":"0123456789",
"seller_sku":"01234567890",
"seller_desc":"1/2 POLY PEX 90 ELL, BLK"
}
]
"last_update":"20260505",
"podate":"20260505",
"postatus":"submitted",
"purchase_order_no":"P1170923.001",
"ship_to_branch":"4",
"shipto":{
"staddress":"4321 Pennsylvania Avenue",
"stcity":"Washington",
"stname":"American Plumbing & Heating Supply Corp.",
"stpostal":"20001",
"ststate":"DC"
},
"status":"Submitted",
"subtotal":"1550",
"total":"1550",
"vendor":"everflow",
"writer":"clarkyennie@gmail.com"
}
"vendor": "americanstandard",
"success": "1"
}
submitOrder
POST /api/
If the vendor supports EDI, an EDI X12 850 document is created and put in the vendor's inbox. If the vendor supports email, a spreadsheet of the order is sent to their designated email address. The status of the order is then changed to "Submitted" and the order is updated on the vendor's gateway.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key. |
vendor | String | The manufacturer ID (e.g., "americanstandard"). |
function | String | getOrder |
customerID | String | Distributor account identifier. |
passkey | String | Secure account-specific passkey. |
order | JSON | The purchase order |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getOrder",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"order": {",
"billto":{
"btaddress":"113 California Blvd",
"btcity":"Arlington",
"btname":"American Plumbing & Heating Supply Corp.",
"btpostal":"22201",
"btstate":"VA"
},
"customerID":"user@gmail.com",
"items":[
{
"amt":"277.5",
"catalog_no":"PPLN0012",
"desc":"045-11440 642PX2 1/2 POLY PEX 90 ELL",
"expdate":"20260505",
"lineno":"1",
"pformula":"EX5P1",
"price_uom":"ea",
"product":"200241",
"productID":"200241",
"qty_open":"750",
"quantity":"750",
"unit_price":"0.37",
"uom":"ea",
"upc":"0123456789",
"seller_sku":"01234567890",
"seller_desc":"1/2 POLY PEX 90 ELL, BLK"
}
]
"last_update":"20260505",
"podate":"20260505",
"postatus":"submitted",
"purchase_order_no":"P1170923.001",
"ship_to_branch":"4",
"shipto":{
"staddress":"4321 Pennsylvania Avenue",
"stcity":"Washington",
"stname":"American Plumbing & Heating Supply Corp.",
"stpostal":"20001",
"ststate":"DC"
},
"status":"Submitted",
"subtotal":"1550",
"total":"1550",
"vendor":"everflow",
"writer":"clarkyennie@gmail.com"
}
}
Response Structure
If successful, "success": "1". If unsuccessful, "success" is missing and "error" may contain a description of the error.
Response Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"success": "1"
}
updateOrder
POST /api/
Updates a purchase order on the vendor's gateway.
Request Parameters
| Field | Type | Description |
|---|---|---|
api-key | String | The global system access key. |
vendor | String | The manufacturer ID (e.g., "americanstandard"). |
function | String | getOrder |
customerID | String | Distributor account identifier. |
passkey | String | Secure account-specific passkey. |
order | JSON | The purchase order |
Request Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"function": "getOrder",
"customerID": "southernphs.com",
"passkey": "ACCOUNT-SPECIFIC-PASSKEY",
"order": {",
"billto":{
"btaddress":"113 California Blvd",
"btcity":"Arlington",
"btname":"American Plumbing & Heating Supply Corp.",
"btpostal":"22201",
"btstate":"VA"
},
"customerID":"user@gmail.com",
"items":[
{
"amt":"277.5",
"catalog_no":"PPLN0012",
"desc":"045-11440 642PX2 1/2 POLY PEX 90 ELL",
"expdate":"20260505",
"lineno":"1",
"pformula":"EX5P1",
"price_uom":"ea",
"product":"200241",
"productID":"200241",
"qty_open":"750",
"quantity":"750",
"unit_price":"0.37",
"uom":"ea",
"upc":"0123456789",
"seller_sku":"01234567890",
"seller_desc":"1/2 POLY PEX 90 ELL, BLK"
}
]
"last_update":"20260505",
"podate":"20260505",
"postatus":"submitted",
"purchase_order_no":"P1170923.001",
"ship_to_branch":"4",
"shipto":{
"staddress":"4321 Pennsylvania Avenue",
"stcity":"Washington",
"stname":"American Plumbing & Heating Supply Corp.",
"stpostal":"20001",
"ststate":"DC"
},
"status":"Submitted",
"subtotal":"1550",
"total":"1550",
"vendor":"everflow",
"writer":"clarkyennie@gmail.com"
}
}
Response Structure
If successful, "success": "1". If unsuccessful, "sucess" is missing and "error" may contain a description of the error.
Response Sample
{
"api-key": "SYSTEM-WIDE-ACCESS-KEY",
"vendor": "americanstandard",
"success": "1"
}