POST /api/v1/decision-flows/ensure-base
Ensures a default “Base NBA Flow” exists for the tenant. If one already exists, returns its ID without creating a new one. Useful during onboarding or when the tenant needs a guaranteed starting flow.Auto-created node order
The base flow ships with the following nodes (defined inlib/decision-flows/base-flow.ts:buildBaseFlowConfig):
The
match_creatives node with placementMatchMode: "exact" is a no-op when the request does not specify a placement (single-placement placement field or multi-placement placements: [...] body). When the request does specify a placement, the node filters candidates to creatives whose placementId matches, providing per-placement creative-pool isolation. requireCreative: false keeps offers that have no creative for the requested channel surfacing as fallback candidates so tenants who haven’t yet bound creatives to placements aren’t broken by the upgrade.