For information about how REST API works, see rest main page.
You can see and manage products catalog here.
REST "products" object allows you to read products catalog, delete records in it, and add new records. When adding new product with "internal_id" that already present in the catalog, fields of old record will be overriden.
The URL is:
app.personyze.com/rest/products
Columns
A product has no fixed set of columns — any key you send is stored, so your own catalog fields (price, brand, category, …) come across as they are and become available to recommendation filters and targeting rules.
A few columns have defined meaning:
| Column | Description |
|---|---|
internal_id |
Your identifier for the product. This is the key that product interactions and recommendations refer to. |
is_in_stock |
Whether the product can currently be recommended. Setting this to a falsy value is the usual way to pull an item out of recommendations without deleting it. |
data_last_modified |
Unix timestamp of the last change to the record. Maintained automatically, indexed — use it for incremental sync. |
image_1, image_2, image_3 |
The product's large, medium and small image URLs. These are aliases: image_1 is the big image, image_2 the medium, image_3 the small. |
One column is not writable here: cond_prices, which holds conditional prices. Because this endpoint treats any unrecognised key as a custom field, sending cond_prices creates a custom field of that name and leaves the real column untouched — with no error. Set conditional prices in the panel.
Insert example
curl --data '{"internal_id": "123", "title": "About all", "description_long": "New product"}' 'https://api:FD09908F25BECB09D78EBEA1DADFB618651F612D@app.personyze.com/rest/products'
Now if you insert another record with internal_id "123", data will be merged.
curl --data '{"internal_id": "123", "description_long": "Was new product"}' 'https://api:FD09908F25BECB09D78EBEA1DADFB618651F612D@app.personyze.com/rest/products'
Select example
Select "123".
curl 'https://api:FD09908F25BECB09D78EBEA1DADFB618651F612D@app.personyze.com/rest/products/where/internal_id=123'
Everything changed since your last sync:
curl 'https://api:FD09908F25BECB09D78EBEA1DADFB618651F612D@app.personyze.com/rest/products/where/data_last_modified>1769904000/order_by/data_last_modified/limit/1000'
Update example
POST already merges by internal_id, so it is usually the simpler way to change a product. PUT is there for when you want to change every record matching a condition:
curl -X PUT --data '{"is_in_stock": 0}' 'https://api:FD09908F25BECB09D78EBEA1DADFB618651F612D@app.personyze.com/rest/products/where/internal_id=123'
It returns the number of affected rows.
Delete example
Delete "123".
curl -X DELETE 'https://api:FD09908F25BECB09D78EBEA1DADFB618651F612D@app.personyze.com/rest/products/where/internal_id=123'