Skip to content

End the A/B test with a chosen winner

POST
/api/v1/workspaces/{workspace}/campaigns/{campaignId}/live/ab-winner
curl --request POST \
--url https://reputecast.example.com/api/v1/workspaces/acme-newsletter/campaigns/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/live/ab-winner \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "variant": "A" }'

Permission: campaigns:send (sensitive)

workspace
required

Workspace slug

string
/^[a-z0-9][a-z0-9-]{1,62}$/

Workspace slug

campaignId
required

Campaign id

string format: uuid

Campaign id

Media typeapplication/json
object
variant
required
string
Allowed values: A B C

OK

Media typeapplication/json
object
cancelled
required
integer format: int64
excluded
required
integer format: int64
moved
required
integer format: int64
snapshot
required
object
ab
object
decideAt
string format: date-time
kind
required
string
leader
required
string
metric
required
string
phase
required
string
Allowed values: testing decided
sample
required
integer format: int64
variants
required
Array<object>
object
key
required
string
rate
required
number format: double
sent
required
integer format: int64
winner
required
string
approvedAt
string format: date-time
approvedBy
required
string
at
required
string format: date-time
campaignId
required
string
completedAt
string format: date-time
continuing
required
Array<string>
cost
required
object
planned
required
number format: double
total
required
number format: double
deliveredMix
required
Array<object>
object
key
required
string
name
required
string
percent
required
number format: double
details
required
object
audience
required
string
audienceCount
required
integer format: int64
cost
required
number format: double
costPlanned
required
number format: double
from
required
string
route
required
string
scheduledBy
required
string
durationSeconds
integer format: int64
error
required
string
etaSeconds
integer format: int64
events
required
Array<object>
object
address
required
string
at
required
string format: date-time
detail
required
string
id
required
string
kind
required
string
label
required
string
short
required
string
tone
required
string
Allowed values: ok warn bad info neutral
eventsVia
required
string
excluded
required
object
bounced
required
integer format: int64
complained
required
integer format: int64
duplicates
required
integer format: int64
excluded
required
integer format: int64
paused
required
integer format: int64
role
required
integer format: int64
sunset
required
integer format: int64
suppressed
required
integer format: int64
tiers
required
integer format: int64
unsubscribed
required
integer format: int64
failovers
required
Array<object>
object
stream
required
string
to
required
string
finishesAt
string format: date-time
held
required
integer format: int64
helpers
object
pause
required
Array<string>
send
required
Array<string>
incident
object
detail
required
object
attempts
integer format: int64
base
integer format: int64
campaign
object
base
required
integer format: int64
events
required
integer format: int64
limit
required
number format: double
metric
required
string
value
required
number format: double
causes
Array<object>
object
body
required
string
lead
required
string
changes
object
automation
string
automationId
string
exclude
required
integer format: int64
expected
number format: double
group
string
importedOnly
required
boolean
mailbox
string
rate
number format: double
source
string
continuing
Array<string>
delivered
integer format: int64
errorKind
string
errorRate
number format: double
events
integer format: int64
from
string format: date-time
host
string
log
Array<object>
object
at
required
string format: date-time
bad
required
boolean
text
required
string
move
object
extraCost
required
number format: double
extraSeconds
required
integer format: int64
quotaFree
integer format: int64
quotaMax
integer format: int64
rate
required
number format: double
risk
required
string
riskText
required
string
target
required
string
targetId
required
string
targetShort
required
string
note
string
options
Array<object>
object
action
required
string
body
required
string
key
required
string
recommended
required
boolean
title
required
string
policy
string
probed
boolean
reason
string
recommendations
Array<string>
remaining
integer format: int64
secondary
object
base
required
integer format: int64
events
required
integer format: int64
limit
required
number format: double
metric
required
string
value
required
number format: double
sent
integer format: int64
sentOnRoute
integer format: int64
succeeded
required
integer format: int64
throttle
number format: double
to
string format: date-time
total
integer format: int64
warmupNote
string
held
required
integer format: int64
id
required
string
kind
required
string
Allowed values: threshold provider_outage throttled recheck_blocked
limit
number format: double
mailbox
required
string
mailboxName
required
string
metric
required
string
provider
required
string
providerId
required
string
providerShort
required
string
resolution
required
string
resolvedAt
string format: date-time
scope
required
string
Allowed values: campaign route mailbox_provider
trippedAt
required
string format: date-time
value
number format: double
incidents
required
Array<object>
object
detail
required
object
attempts
integer format: int64
base
integer format: int64
campaign
object
base
required
integer format: int64
events
required
integer format: int64
limit
required
number format: double
metric
required
string
value
required
number format: double
causes
Array<object>
object
body
required
string
lead
required
string
changes
object
automation
string
automationId
string
exclude
required
integer format: int64
expected
number format: double
group
string
importedOnly
required
boolean
mailbox
string
rate
number format: double
source
string
continuing
Array<string>
delivered
integer format: int64
errorKind
string
errorRate
number format: double
events
integer format: int64
from
string format: date-time
host
string
log
Array<object>
object
at
required
string format: date-time
bad
required
boolean
text
required
string
move
object
extraCost
required
number format: double
extraSeconds
required
integer format: int64
quotaFree
integer format: int64
quotaMax
integer format: int64
rate
required
number format: double
risk
required
string
riskText
required
string
target
required
string
targetId
required
string
targetShort
required
string
note
string
options
Array<object>
object
action
required
string
body
required
string
key
required
string
recommended
required
boolean
title
required
string
policy
string
probed
boolean
reason
string
recommendations
Array<string>
remaining
integer format: int64
secondary
object
base
required
integer format: int64
events
required
integer format: int64
limit
required
number format: double
metric
required
string
value
required
number format: double
sent
integer format: int64
sentOnRoute
integer format: int64
succeeded
required
integer format: int64
throttle
number format: double
to
string format: date-time
total
integer format: int64
warmupNote
string
held
required
integer format: int64
id
required
string
kind
required
string
Allowed values: threshold provider_outage throttled recheck_blocked
limit
number format: double
mailbox
required
string
mailboxName
required
string
metric
required
string
provider
required
string
providerId
required
string
providerShort
required
string
resolution
required
string
resolvedAt
string format: date-time
scope
required
string
Allowed values: campaign route mailbox_provider
trippedAt
required
string format: date-time
value
number format: double
lastEventAt
string format: date-time
mailboxes
required
Array<object>
object
bounceRate
number format: double
bounced
required
integer format: int64
complained
required
integer format: int64
complaintRate
number format: double
delivered
required
integer format: int64
deliveredRate
number format: double
held
required
boolean
heldSince
string format: date-time
key
required
string
Allowed values: gmail outlook yahoo icloud other
name
required
string
openRate
number format: double
opened
required
integer format: int64
remaining
required
integer format: int64
sent
required
integer format: int64
status
required
string
Allowed values: ok sending paused done
throttle

Messages per second; absent = the provider’s full rate

number format: double
mailboxesHeld
required
Array<string>
name
required
string
options
required
object
canCancel
required
boolean
canPause
required
boolean
canResume
required
boolean
pauseReason
required
string
pauseScopeHint
required
string
pausedAt
string format: date-time
pausedBy
required
string
percent
required
number format: double
preparedAt
string format: date-time
providers
required
Array<object>
object
adapter
required
string
apiErrorRate
number format: double
bounceRate
number format: double
color
required
string
Allowed values: ses postal postmark other
complaintRate
number format: double
cost
required
number format: double
deliveredRate
number format: double
downSince
string format: date-time
host
required
string
id
required
string
ip
required
string
name
required
string
planned
required
integer format: int64
plannedCost
required
number format: double
quotaFree
integer format: int64
quotaMax
integer format: int64
rate
required
number format: double
remaining
required
integer format: int64
retryUntil
string format: date-time
retrying
required
boolean
routeStatus
required
string
Allowed values: pending sending held paused done cancelled
sent
required
integer format: int64
share
required
number format: double
short
required
string
status
required
string
warmupCap
integer format: int64
warmupDay
integer format: int64
warmupDays
integer format: int64
warmupSent
integer format: int64
providersHeld
required
Array<string>
queued
required
integer format: int64
rate
required

Messages per second now

number format: double
recipients
required
integer format: int64
resumed
required
boolean
routes
required
Array<object>
object
percent
required
number format: double
short
required
string
scheduledAt
string format: date-time
scheduledBy
required
string
sent
required
integer format: int64
sharedStreams
required
Array<string>
startedAt
string format: date-time
startedBy
required
string
state
required
string
Allowed values: idle scheduled preparing sending partial paused finished cancelled failed
status
required
string
Allowed values: draft approval approved scheduled sending paused sent cancelled failed
thresholdScope
required
string
Allowed values: route campaign
thresholds
required
Array<object>
object
key
required
string
Allowed values: bounce complaint mailbox_complaint api_errors
limit
required
number format: double
mailbox
string
value
required
number format: double
throttles
required
Array<object>
object
mailbox
required
string
rate
required
number format: double
totals
required
object
bounced
required
integer format: int64
clicked
required
integer format: int64
complained
required
integer format: int64
deferred
required
integer format: int64
delivered
required
integer format: int64
hardBounced
required
integer format: int64
opened
required
integer format: int64
openedHuman
required
integer format: int64
openedMachine
required
integer format: int64
rejected
required
integer format: int64
softBounced
required
integer format: int64
unsubscribed
required
integer format: int64
unsent
required
integer format: int64
version
required

Milliseconds since the epoch; the SSE event id

integer format: int64
waiting
required
integer format: int64

Example

{
"snapshot": {
"ab": {
"phase": "testing"
},
"events": [
{
"tone": "ok"
}
],
"incident": {
"kind": "threshold",
"scope": "campaign"
},
"incidents": [
{
"kind": "threshold",
"scope": "campaign"
}
],
"mailboxes": [
{
"key": "gmail",
"status": "ok"
}
],
"providers": [
{
"color": "ses",
"routeStatus": "pending"
}
],
"state": "idle",
"status": "draft",
"thresholdScope": "route",
"thresholds": [
{
"key": "bounce"
}
]
}
}

Error

Media typeapplication/problem+json
object
code

Stable error code, e.g. permission_denied

string
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object>
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

helpers

Members who hold the missing permission

Array<string>
instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
meta
object
key
additional properties
permission

The missing permission key

string
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}