POST/ predictions/ predict-for-user/
Predict for user
You can return a list of personalized product recommendations tailored to a specific contact.
NO AUTHORIZATION REQUIRED
This API endpoint does not require an API authorization key, to allow direct querying from the contact's browser.
| Attributes | Type | Required | Description |
|---|---|---|---|
| user_id | string | no* | The unique identifier for a contact from your system (must match the contact's custom_id in User). One of user_id or user_key is required. |
| user_key | string | no* | The User system identifier for a contact (from __ca__chat cookie). One of user_id or user_key is required. |
| limit | number | no | Maximum number of products to return (max 25). |
| segment_id | number | no | ID of a product segment to filter recommendations (e.g., "Available Products"). |
| categories | array | no | Array of category names to filter by. |
| tags | array | no | Array of tag names to filter by. |
| extra_data | number | no | Controls behavior when filters result in fewer products than limit. 0 (Strict) returns only matching products. 1 (Default) fills remaining slots with general recommendations. |
Request
- cURL
- JavaScript
- PHP
- Python
curl -X POST "https://<your_app_subdomain>.user.com/predictions/predict-for-user/" \
-H "Content-Type: application/json" \
-d '{
"user_id": "user_12345",
"limit": 5,
"segment_id": 101,
"extra_data": 0
}'
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://<your_app_subdomain>.user.com/predictions/predict-for-user/");
xhr.setRequestHeader("Content-Type", "application/json");
var data = JSON.stringify({
"user_id": "user_12345",
"limit": 5,
"segment_id": 101,
"extra_data": 0
});
xhr.send(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://<your_app_subdomain>.user.com/predictions/predict-for-user/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode(array(
"user_id" => "user_12345",
"limit" => 5,
"segment_id" => 101,
"extra_data" => 0
)),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import http.client
import json
conn = http.client.HTTPSConnection("<your_app_subdomain>.user.com")
payload = json.dumps({
"user_id": "user_12345",
"limit": 5,
"segment_id": 101,
"extra_data": 0
})
headers = { 'Content-Type': "application/json" }
conn.request("POST", "/predictions/predict-for-user/", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Response
{"recommended_products": [{"id": 85,"name": "Classic Sneakers","custom_id": "SKU123","description": "Lightweight sneakers for everyday wear.","product_url": "https://www.example.com/product/classic-sneakers/","image_url": "https://www.example.com/images/classic-sneakers.jpg","qty": 1,"created_at": "2026-11-10T14:20:02.361287Z","updated_at": "2026-11-10T14:20:02.361297Z","attributes": ,2 items"categories": 1 item}]}Response fields
Fields returned in the 200 OK response body.
| Field | Type | Description |
|---|---|---|
array of objects | array of objects | Recommended products, most relevant first. At most limit products. |
recommended_products[].integer | integer | A unique identifier for the product which is given by User automatically. |
recommended_products[].stringnullable | stringnullable | A product name. |
recommended_products[].stringnullable | stringnullable | A unique identifier for the product which is provided by the client. Usually related to the product’s SKU. |
recommended_products[].stringnullable | stringnullable | Description of the product, or null. |
recommended_products[].string (URL)nullable | string (URL)nullable | A URL of a product. |
recommended_products[].string (URL)nullable | string (URL)nullable | A URL of a product image. |
recommended_products[].integernullable | integernullable | Quantity of the product, or null if not set. |
recommended_products[].string (date-time) | string (date-time) | A creation date of a product. |
recommended_products[].string (date-time) | string (date-time) | A date of last product update. |
array of objects | array of objects | Custom product attributes that have a value, each with name, name_std, value, description and value_type. |
recommended_products[].string | string | Name of the attribute. |
recommended_products[].string | string | Standardized name of the attribute, used as its key in the API. |
recommended_products[].array of string | integer | number | string | string (date) | array of string | integer | number | string | string (date) | Value of the attribute for this product. |
recommended_products[].string | string | Description of the attribute. |
recommended_products[].integer | integer | Value type of the attribute: 1 boolean, 2 integer, 3 date, 4 string, 5 datetime, 6 fixed (a list of choices), 7 float or 8 JSON. |
array of objects | array of objects | Categories the product belongs to. |
recommended_products[].integer | integer | A unique identifier for the category which is given by User automatically. |
recommended_products[].string | string | A category name. |
recommended_products[].string | string | Description of the category. |
recommended_products[].stringnullable | stringnullable | A unique identifier for the category which is provided by the client, or null. |