Image personalization with the Image Automation API


Instead of rebuilding every CRM banner, lifecycle image, or email visual by hand, you keep the layout inside Pixelixe. Your application only sends what changes: recipient fields, segment labels, offers, product images, locale, market treatment, or brand accent rules. That makes image personalization easier to scale across data-driven campaigns.



Template-based personalized visuals

One saved marketing template, many recipient- and segment-level image variants

Reference a saved Pixelixe template with document_uid or template_name, then send only the personalization fields needed for this recipient, segment, campaign, locale, or lifecycle stage.

  • Update names, offers, product visuals, locale markers, CTA copy, or segment labels per render.
  • Keep brand-safe layout logic in the saved template instead of rebuilding visuals in email or CRM tooling.
  • Choose the response format that fits your pipeline: image, json, base64, pdf, or html.
  • Use custom_field to map each generated asset back to a contact, campaign, trigger, or segment.

Pixelixe personalized campaign image rendering preview

See the Image Automation API overview ...

cURL request

curl https://studio.pixelixe.com/api/graphic/automation/v2 \
  -d 'json={
    "document_uid": "personalization_template_uid",
    "api_key": "YOUR_API_KEY",
    "format": "json",
    "image_type": "png",
    "custom_field": "campaign-retention-2026:user-48372",
    "modifications": [
      {
        "element_name": "greeting",
        "type": "text",
        "text": "Hi Sarah,"
      },
      {
        "element_name": "headline",
        "type": "text",
        "text": "Renew now and keep your Pro plan active",
        "font-size": "auto",
        "color": "#0f172a"
      },
      {
        "element_name": "subheadline",
        "type": "text",
        "text": "Upgrade to annual billing before April 21 and save 20%"
      },
      {
        "element_name": "segment-chip",
        "type": "text",
        "text": "Retention campaign | FR"
      },
      {
        "element_name": "hero-image",
        "type": "image",
        "image_url": "https://cdn.example.com/campaigns/renewal/annual-upgrade-card.png",
        "width": "cover",
        "height": "cover"
      },
      {
        "element_name": "accent",
        "type": "shape",
        "background-color": "#f26b4a"
      }
    ]
  }'

JSON response

{
  "status": "success",
  "created_at": "04-01-2026_11-18-22-401",
  "uid": "personalization_template_uid",
  "custom_field": "campaign-retention-2026:user-48372",
  "image_url": "https://studio.pixelixe.com/storage/file/.../crm-image-personalization.png"
}
Implementation note: use format: "json" when you want a hosted image_url that your CRM, ESP, or campaign system can store next to a contact or send job. Switch to format: "image" for a raw binary response, or format: "html" when you want to reopen the generated variant in the editor.

Why engineers choose template-first image personalization


More control than manual campaign assembly, with less repetitive creative work across CRM and lifecycle flows.



Personalized without rebuilding layouts

Your campaign structure lives in Pixelixe, so backend code only manages the changing recipient and segment data, not the visual layout itself.

CRM and ESP-friendly inputs

Update names, offers, products, renewal dates, currencies, or segment labels from whatever system already owns your campaign data.

Segment and locale scaling

Reuse the same template logic across segments, languages, markets, and lifecycle stages instead of cloning files per campaign branch.

Brand-safe lifecycle production

Marketing and CRM teams keep one approved visual system while engineering automates the render layer behind triggers, sends, and batch jobs.


What you can change per request


The API is designed around a modifications array. Each entry targets an existing element in your saved personalization template and overrides only the properties needed for this contact, segment, send, or campaign run.



Contact and segment fields

Update names, tiers, dates, regions, lifecycle labels, and campaign copy without rebuilding the visual.

  • first_name, headline, subheadline, plan tier, renewal date, CTA label, segment chip
  • color
  • font-size with auto, original, or an explicit px value
  • text-align
  • font-family

Offers and product visuals

Swap product art, hero images, logos, pricing visuals, or campaign-specific artwork with public asset URLs.

  • image_url
  • width and height with auto, cover, or original
  • visible to show or hide a layer
  • shape for rounded avatar-style outputs

Localization and market layers

Switch market-specific copy, currency hints, badges, accents, or localized artwork while preserving the same base layout.

  • background-color
  • border-color
  • border-size
  • Localized text blocks and locale or market labels

Output behavior

Pick the response mode that matches your pipeline.

  • format: image, json, base64, pdf, html
  • image_type: jpeg or png
  • custom_field for correlation and debugging

How to get started


Use the same endpoint from CRM triggers, lifecycle jobs, email systems, or campaign orchestration backends.



JavaScript / Node.js

const payload = {
  document_uid: "crm_personalization_template_uid",
  api_key: process.env.PIXELIXE_API_KEY,
  format: "json",
  image_type: "png",
  custom_field: `${campaign.id}:${recipient.id}`,
  modifications: [
    {
      element_name: "greeting",
      type: "text",
      text: `Hi ${recipient.firstName},`
    },
    {
      element_name: "headline",
      type: "text",
      text: recipient.offerTitle,
      "font-size": "auto"
    },
    {
      element_name: "subheadline",
      type: "text",
      text: recipient.offerBody
    },
    {
      element_name: "segment-chip",
      type: "text",
      text: `${campaign.segment} | ${recipient.locale}`
    },
    {
      element_name: "hero-image",
      type: "image",
      image_url: recipient.heroImage,
      width: "cover",
      height: "cover"
    },
    {
      element_name: "accent",
      type: "shape",
      "background-color": recipient.themeColor || "#1f6feb"
    }
  ]
};

const body = new URLSearchParams({
  json: JSON.stringify(payload)
});

const response = await fetch(
  "https://studio.pixelixe.com/api/graphic/automation/v2",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded"
    },
    body
  }
);

const data = await response.json();
const personalizedImageUrl = data.image_url;

Python

import json
import requests

payload = {
    "document_uid": "crm_personalization_template_uid",
    "api_key": "YOUR_API_KEY",
    "format": "json",
    "image_type": "png",
    "custom_field": f"{campaign['id']}:{recipient['id']}",
    "modifications": [
        {
            "element_name": "greeting",
            "type": "text",
            "text": f"Hi {recipient['first_name']},"
        },
        {
            "element_name": "headline",
            "type": "text",
            "text": recipient["offer_title"],
            "font-size": "auto"
        },
        {
            "element_name": "subheadline",
            "type": "text",
            "text": recipient["offer_body"]
        },
        {
            "element_name": "hero-image",
            "type": "image",
            "image_url": recipient["hero_image"],
            "width": "cover",
            "height": "cover"
        }
    ]
}

response = requests.post(
    "https://studio.pixelixe.com/api/graphic/automation/v2",
    data={"json": json.dumps(payload)},
    timeout=30
)
response.raise_for_status()
data = response.json()
personalized_image_url = data["image_url"]
Tip: render when the audience is built, when a lifecycle trigger fires, or just before a send job runs. Store the returned image_url next to the contact, message, or campaign context instead of regenerating every time the image is requested.

Common backend flows for personalized images


Welcome and onboarding campaigns

Generate welcome visuals, onboarding banners, and product activation images using recipient name, plan, region, or first-step guidance data.

Renewal, win-back, and retention

Update lifecycle visuals with account tier, next action, discount, renewal date, or upgrade message when retention logic changes.

Segment-based promotions

Render different campaign visuals for loyalty tiers, product affinities, regions, or audience segments while keeping the same template logic.

Account-based marketing and sales outreach

Create tailored visuals for target accounts, industries, or named opportunities without rebuilding the same design for each conversation.

Localized campaign variants

Keep one approved layout while switching language, copy blocks, pricing hints, and market-specific artwork across regions.

Loyalty and recommendation creatives

Update product recommendation, membership, or next-best-offer images from customer data without breaking your brand system.

How integration works


Use Studio for template setup, then let your backend, CRM, or ESP own the personalization loop.



1

Save a personalization-ready template

Design the base email image, CRM banner, or lifecycle visual in Pixelixe Studio and name the layers you plan to target from code.

2

Map recipient or campaign data

Send document_uid, api_key, output format, and the element-level modifications needed for this contact, segment, locale, or campaign event.

3

Render before send or trigger

Receive the generated output as a URL, blob, base64 string, PDF, or HTML variant and attach it to the email, CRM workflow, or message payload.

4

Reuse across segments and lifecycle stages

Repeat this for welcome, promo, retention, win-back, upsell, or localized campaign branches without touching the layout again.



Read full API documentation

Developer FAQ


Do we need to build every personalized image layout in code?

No. Save the layout once in Pixelixe Studio, then call the Image Automation API with document_uid or template_name plus the modifications for that recipient, segment, or campaign run.

Can we personalize text, offers, product images, and locale per recipient or segment?

Yes. Target text, image, shape, or background layers and send the recipient- or segment-specific values in the modifications array for each render.

Can Pixelixe be used for CRM, email, and lifecycle campaigns?

Yes. Pixelixe fits CRM, lifecycle, email, segmentation, localization, and other data-driven campaign workflows where one approved design must be reused across many personalized variants.

How do we correlate each generated image with a recipient, segment, or campaign?

Use custom_field when format is json. Pixelixe returns it in the response so you can map each generated asset back to a recipient ID, campaign ID, trigger, or segment key.

Can we combine spreadsheet workflows and API workflows for personalization?

Yes. Teams often start with spreadsheet-based personalization for operations-friendly runs, then move the same template logic into the API when backend systems need direct control.

Which response formats are supported?

The API supports image, json, base64, pdf, and html. For personalized campaign visuals, teams often use format: "json" to recover a hosted image_url.

Image personalization at a glance


Useful context for developers, buyers, and AI systems reading this page.



What it does

Pixelixe renders personalized images from saved templates so your backend, CRM, or lifecycle system only sends the data and layer changes required for each recipient or campaign branch.

Who it is for

It is built for engineering teams, CRM teams, lifecycle marketers, growth teams, product marketers, and SaaS products that need reliable branded image personalization.

What it accepts and returns

Inputs are saved templates plus a modifications array from code. Outputs can be image, json, base64, pdf, or html depending on how you deliver the personalized asset.


Explore the full endpoint reference, compare plans on pricing, see the broader Image Automation API landing, review marketing automation, or pair this with the white-label editor for editable campaign workflows.


Explore related personalization workflows


Image personalization sits between the API hub, template rendering workflows, and broader marketing automation systems.



API hub

Review the full Pixelixe API platform before choosing the personalization workflow that fits your stack.

Image Automation API

See the broader rendering layer behind personalized campaign visuals, dynamic banners, localized assets, and automated creative generation.

Marketing automation

Connect the API angle back to lifecycle marketing, CRM images, launches, recurring promos, and email automation workflows.

Generate images from spreadsheet

Use spreadsheet-driven image generation when your team wants an operations-friendly path to the same personalization logic without coding every run.




Ready to generate personalized images from CRM and lifecycle data?

Start with a reusable Pixelixe template, connect the Image Automation API, and render branded personalized visuals across recipients, segments, locales, and lifecycle stages without rebuilding the layout in code.


Start a 10-day trial
Read the docs