Product Catalog API

Overview

Share your product catalog to enable services that requires up to date product information. The product catalog is required for services like product recommendations and product analytics.

Add this source

  1. Log into your engage account

  2. Click "Add sources" on the home page and select the Product Category API

  3. Follow the instructions to get started

Use this source

Once activated, you may start to send products to us. The endpoint accept single products or batches of maximum 250 products at a time. Check the API Reference for specifics and code examples in most languages.

post
Product Catalog API

https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog
Upload your product catalog to engage. Note that only base products are supported at the moment, no need to add variants. Send one product per call. Sending two identical product_ids will overwrite the product.
Request
Response
Request
Headers
Authorization
optional
string
"Bearer eyJhbGciOiJIUzI1NiIssdzNCw..." Log in to retrieve your user token.
Query Parameters
average_rating
optional
number
3.0
categories
optional
string
"Category A, Category B"
currency
required
string
"USD"
description
optional
string
"A product description"
image
required
string
URL to a main product image
image2
optional
string
URL to a secondary product image
link
required
string
URL to product page
name
required
string
The product name / title
on_sale
optional
boolean
True / False
product_id
required
integer
100078
price
required
number
79.99
rating_count
optional
number
7
sku
optional
string
"ME3452"
Response
200: OK
Catalog successfully updated
400: Bad Request
Catalog upload failed

Only base products are required to be uploaded as part of the product catalog. Product variants are currently not supported.

Example call

cURL
Javascript - jQuery
Javascript - Fetch
Nodejs - Axios
PHP - cURL
Python
cURL
curl --location --request POST 'https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog'
--header 'Authorization: Bearer [ADD YOUR USER TOKEN HERE]' \
--header 'Content-Type: application/json'
--data-raw '{
"currency": "USD",
"image": "https://some-image-url.com",
"link": "https://a-link-to-the-product.com",
"product_id": 20200101,
"name": "My new product",
"price": 29.99,
}'
Javascript - jQuery
var settings = {
"url": "https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "Bearer [ADD YOUR USER TOKEN HERE]",
"Content-Type": "application/json"
},
"data": JSON.stringify({"currency":"USD","image":"https://some-image-url.com","link":"https://a-link-to-the-product.com","product_id":20200101,"name":"My new product","price":29.99}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Javascript - Fetch
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer [ADD YOUR USER TOKEN HERE]");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"currency":"USD","image":"https://some-image-url.com","link":"https://a-link-to-the-product.com","product_id":20200101,"name":"My new product","price":29.99});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Nodejs - Axios
var axios = require('axios');
var data = JSON.stringify({"currency":"USD","image":"https://some-image-url.com","link":"https://a-link-to-the-product.com","product_id":20200101,"name":"My new product","price":29.99});
var config = {
method: 'post',
url: 'https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog',
headers: {
'Authorization': 'Bearer [ADD YOUR USER TOKEN HERE]',
'Content-Type': 'application/json'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
PHP - cURL
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{\n \"currency\": \"USD\",\n \"image\": \"https://some-image-url.com\",\n \"link\": \"https://a-link-to-the-product.com\",\n \"product_id\": 20200101,\n \"name\": \"My new product\",\n \"price\": 29.99\n}",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer [ADD YOUR USER TOKEN HERE]",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Python
import requests
import json
url = "https://api-dot-solutionsone-211314.ew.r.appspot.com/v1/products/catalog"
payload = {
"currency": "USD",
"image": "https://some-image-url.com",
"link": "https://a-link-to-the-product.com",
"product_id": 20200101,
"name": "My new product",
"price": 29.99
}
headers = {
'Authorization': 'Bearer [ADD YOUR USER TOKEN HERE]',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = json.dumps(payload))
print(response.text.encode('utf8'))

Data formats

Dates & Time

Format

Example

YYYY-MM-DD HH:MM:SS+HH:MM

2020-01-01 04:23:01+04:00

YYYY-MM-DD HH:MM:SS.ffffff

2020-01-01 04:23:01.000384

YYYY-MM-DD HH:MM:SS

2020-01-01 04:23:01

YYYY-MM-DDTHH:MM:SS+HH:MM

2020-01-01T04:23:01+04:00

YYYY-MM-DDTHH:MM:SS.ffffff

2020-01-01T04:23:01.000384

YYYY-MM-DDTHH:MM:SS

2020-01-01T04:23:01

Generic format supported

YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]