Intro
Endpoint: https://api.omnisend.com/api/form-ab-setups
An A/B setup links a main popup, flyout or fullscreen form to two competing variants so you can test which performs better. Variants start as identical copies of the main form at creation time and can be edited independently afterward.
| Endpoint | Description |
|---|---|
POST /api/form-ab-setups | Create a draft A/B setup from an existing popup, flyout or fullscreen form |
GET /api/form-ab-setups | List A/B setups (filterable by status: draft or enabled) |
GET /api/form-ab-setups/{abSetupID} | Get a single A/B setup |
POST /api/form-ab-setups/{abSetupID}/start | Launch the setup so its variants begin serving |
POST /api/form-ab-setups/{abSetupID}/winner | Select a winning variant |
DELETE /api/form-ab-setups/{abSetupID} | Delete a draft A/B setup |
Variant weights and lifecycle
Each variant carries a traffic-distribution weight. When versions is omitted at creation, both variants receive a weight of 50. Weights must each be at least 1 and sum to 100. A/B test version forms cannot be enabled, disabled, or deleted directly — manage them through their A/B setup.
For A/B test performance reports, see the Reports API.
Constraints and pagination
| Constraint | Value |
|---|---|
| IDs (path parameters) | 24-character hexadecimal |
List page size (limit) | 1–250 (default 100) |
| A/B setups sort fields | createdAt (default), launchedAt, enabledAt, updatedAt |
| Sort direction | asc, desc (default) |
List endpoints use cursor-based pagination: pass the after cursor from a response to fetch the next page, or before for the previous page (after and before cannot be combined). See Pagination for details.
Scopes
| Scope | Grants |
|---|---|
forms.read | List and get A/B setups |
forms.write | Create, delete, start, and select the winner of A/B setups |