Catalog Video on Wavemaker Platform is DCO as a run group: one product feed file × one template → up to 24 variants in a single dco-campaign FanOut × SubWorkflow. Each variant is a full leaf run (static-ads stills or ads-catalog-video video). campaignId is the run-group id.
This is not the retired kernel Catalog Video (Template Studio, Shopify connectors, hosted CDN feeds, 10k-SKU fatigue rotation). Those /api/v1/dco/* routes return HTTP 410.
For the operator contract, see docs/platform/catalog/legacy-deliverable-parity.md § DCO campaigns.
Where to start
- Dashboard: Campaigns (legacy
/campaigns301s here) lists engages and per-SKU tiles. Engage itself is API/MCP — the pane is status + download, not a shop-URL wizard. - REST:
POST $PLATFORM_API_URL/campaigns/engage(runs:write). - MCP:
engage_campaign/get_campaign. - One product: Discover leaf
ads-catalog-video(or chat Images Ad /static-ads) — skip campaigns.
How it works
- Upload a feed — CSV or JSON already in Files (
feedFileId). Merchant-style columns:id/sku,title,price,image_link(orimage_file_id), optionalcustom_label_0..4. See Connect your catalog. - Choose a leaf + prompt template —
baseSlug:static-ads(stills, optionalformatIds) orads-catalog-video(video, optionalaspectRatio). Slots like{{title}}/{{price}}fill per row. See Templates & slots. - Engage — platform validates rows and ingest images before any credit reserve. Over 24 variants →
422 campaign_variant_cap_exceeded(zero spend). Dual-meter preflight is the same honesty asPOST /runs. - Watch + download —
GET /campaigns/{campaignId}(or the Campaigns pane) returns SKU-keyed status and files. See Delivery.
Caps (honest)
| Limit | Value |
|---|---|
| Variants per engage | 24 (rows × formatIds, hard cap) |
formatIds on stills | ≤ 4 |
| Feed row selection | optional rowIds; omit = every valid row |
| Scheduled sync / hosted feeds | Not shipped on platform — re-engage |
| Shopify / Merchant connectors | Not shipped — export CSV/JSON yourself |
Need more than 24 SKUs? Run another engage (new Idempotency-Key) with the next rowIds slice.
Built for every catalog size
- A handful of SKUs — pick
rowIds, engage once, approve in Campaigns. - A shelf, not a warehouse — slice the feed into ≤24-variant batches.
- Integrators — REST + MCP; poll the run group. See API & MCP.
Quality
Each variant is a normal directed leaf: same QC gates as a chat stills or catalog-video run. Feed validation is fail-closed (missing id/title/image → 422 with rowErrors). Unknown {{slots}} fail the matrix before spawn.