Skip to main content

Worked personalization samples

The endpoint list below documents every operation’s parameters; this overlay walks a slot the way a tenant’s frontend actually uses it: list the slots → read one variant → update it → handle the duplicate-variant conflict. Success envelopes are { data, meta }, error envelopes { error, meta } — see How to read a worked sample. The platform accepts both a sandbox (dv_test_sk_*) key and a live key; the write paths (create/update/delete) require owner or admin, while the list/get/preview paths are just read. Every response carries meta.request_id. Quote it when you report a slot serving the wrong variant — support traces the routing end-to-end from the request id and the recompute tick.

1. List personalization slots

GET /api/v1/personalization/slots returns the slot variants configured for this tenant, ordered by id and paginated with a cursor. Filter by slot to inspect a single placement or by segment_label to see what one audience is served. An unknown segment label is treated as no filter, so a renamed segment still returns a row.
200

2. Read one variant

GET /api/v1/personalization/slots/{id} returns a single slot variant: content, CTA link and label, target segment, variant name, priority, active flag, and metadata. Use it to hydrate the slot edit form before a PATCH.

3. Update a variant’s copy

PATCH /api/v1/personalization/slots/{id} is the in-place update the sdk/personalize endpoint draws from — send only the fields you are changing. An omitted field keeps its stored value, so a copy edit never silently re-ranks a variant or re-enables a stopped one. Set active: false to stop serving a variant without deleting the row.
200
  • content is re-checked on update against the same HTML rules as create — script execution, iframes, and event handlers are rejected.
  • priority 0–100 ranks variants inside one (slot, segment_label, variant) tuple; an update that leaves priority untouched never re-materializes it to the schema default.

4. Errors

Errors follow the { error, meta } envelope. Two failures every admin hits: 409 — duplicate variant. The triple (slot, segment_label, variant) must be unique. Creators hitting this should PATCH the existing row instead of POSTing a new one. 422 — rejected markup. The sanitizer rejected the content, or the update body was empty:
422