Skip to main content
Placements define the slots within a channel where offers can be rendered. Each placement belongs to a channel and specifies the slot type, maximum number of offers, content schema, and targeting rules.
See the Channels feature page for details on how placements work within channel configurations.

Base path


List placements

Returns a paginated list of placements for the current tenant, ordered alphabetically by name. Each placement includes its parent channel and associated creatives.

Query parameters

Response 200


Create a placement

Creates a new placement slot definition.

Request body

Example request

Response 201

Returns the created placement object with channel and creatives relations.

Side effects

Creating the first placement on a tenant triggers ensureBaseFlow (lib/decision-flows/base-flow.ts) so a default base-nba-flow exists for routing. The auto-created flow includes a match_creatives node with placementMatchMode: "exact", which means subsequent /api/v1/recommend calls that pass either a single placement or a placements: [...] array filter candidates to creatives whose placementId matches the request — without any flow editing required. See Decision Flow Internals for the full default node order. A flow-route entry is also created automatically, pointing the new (channelId, placementId) combination at the default flow; this is best-effort and silently no-ops if a route already exists.

Error codes


Update a placement

Updates an existing placement. Only provided fields are changed.

Request body

Response 200

Returns the updated placement object with channel and creatives relations.

Error codes


Delete a placement

Soft-deletes a placement by setting its deletedAt timestamp. The version is incremented.

Query parameters

Response 200

Error codes

To restore a soft-deleted placement, use POST /api/v1/restore?entityType=placement&id={placementId} (admin only).

Role requirements