Save the product creative template once in Pixelixe Studio, then call the Image Automation API from a catalog job, backend route, feed processor, or merchandising workflow.
cURL
Feed row
curl -sS -X POST "https://studio.pixelixe.com/api/graphic/automation/v2" \
-H "Content-Type: application/json" \
--data '{
"api_key": "YOUR_API_KEY",
"document_uid": "product-promo-template",
"format": "json",
"image_type": "png",
"custom_field": "sku:DRIP-042|market:us",
"modifications": [
{ "name": "product_name", "text": "Copper Drip Coffee Maker" },
{ "name": "offer_title", "text": "Spring Deal" },
{ "name": "price", "text": "$79" },
{ "name": "sale_price", "text": "$59" },
{ "name": "product_image", "image_url": "https://cdn.example.com/products/drip-042.png" },
{ "name": "cta", "text": "Shop now" }
]
}'
Typical when a feed processor needs a hosted image URL for each product, price-drop, or merchandising record.
JavaScript
Catalog job
async function renderProductCreative(product) {
const response = await fetch(
"https://studio.pixelixe.com/api/graphic/automation/v2",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: process.env.PIXELIXE_API_KEY,
document_uid: "product-promo-template",
format: "json",
image_type: "png",
custom_field: `${product.sku}:${product.locale}`,
modifications: [
{ name: "product_name", text: product.name },
{ name: "offer_title", text: product.offerTitle },
{ name: "price", text: product.priceLabel },
{ name: "sale_price", text: product.salePriceLabel },
{ name: "product_image", image_url: product.imageUrl },
{ name: "cta", text: product.ctaLabel }
]
})
}
);
const payload = await response.json();
return payload.image_url;
}
Useful when your ecommerce backend, PIM, or internal merchandising app owns the product data and triggers creative rendering.
Python
Batch render
import json
import urllib.request
def render_product_visual(row):
payload = {
"api_key": "YOUR_API_KEY",
"document_uid": "product-promo-template",
"format": "json",
"image_type": "png",
"custom_field": f"{row['sku']}:{row['market']}",
"modifications": [
{"name": "product_name", "text": row["name"]},
{"name": "offer_title", "text": row["offer"]},
{"name": "price", "text": row["price"]},
{"name": "sale_price", "text": row["sale_price"]},
{"name": "product_image", "image_url": row["image_url"]},
{"name": "cta", "text": row["cta"]}
]
}
request = urllib.request.Request(
"https://studio.pixelixe.com/api/graphic/automation/v2",
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST"
)
with urllib.request.urlopen(request) as response:
return json.loads(response.read().decode("utf-8"))["image_url"]
Good for scheduled catalog refreshes, spreadsheet exports, PIM synchronization, marketplace image jobs, and localization batches.