Worked request and response samples
Copy a request body as written, substitute your own ids, and compare the response envelope. Errors follow Devotel Orbit’s{ error, meta } envelope, shown once below under Error envelope.
Auto-winner governance.
POST /campaigns/{id}/variants accepts three optional knobs that gate the automatic winner-promotion scheduler: ab_auto_promote (boolean | null — false keeps every promotion behind the manual POST /campaigns/{id}/ab-select-winner call, null resets to the default true), ab_min_sample_size (integer | null — deliveries the leading variant must reach before an automatic verdict, 10–1,000,000, null resets to the default 30), and ab_confidence_threshold (number | null — Bayesian posterior confidence required to promote, 0.500–0.999, null resets to the default 0.950). GET /campaigns/{id}/ab-results echoes those settings together with a live auto_winner_progress snapshot — the gate values the evaluator currently applies, the current leader, and whether it would already lock — so a dashboard can render real progress toward an automatic verdict. See the A/B testing guide.Cross-channel governance in one call.
GET /campaigns/{id}/governance-summary aggregates the four governance primitives a campaign’s settings panel previously issued four separate calls for: the A/B(n) experiment config plus auto-winner governance, the control hold-out cohort, the resolved quiet-hours window (with campaign / org_default / platform_default source attribution), and the effective frequency-cap rules — global rules folded in alongside channel-scoped rules, each labelled applies: true|false so the dashboard can place the badge without re-admitting the org-wide caps list client-side. Use this ONE round-trip when you render the “rules in effect” card; the individual sources stay available if you only want one.Create a campaign
POST /api/v1/campaigns/Check for overlapping schedules
POST /api/v1/campaigns/check-schedule-conflictsLaunch the campaign
POST /api/v1/campaigns/{id}/sendError envelope
422