Skip to main content

Campaigns REST API

Manage campaigns and A/B tests programmatically via the REST API.

Endpoints

List Campaigns

Get all campaigns for an app.

GET /v1/apps/:appId/campaigns

Query Parameters:

ParameterTypeDescription
statusstringFilter by status: draft, active, paused, completed
limitnumberNumber of results (default: 20, max: 100)
pagestringPage number

Example Request:

curl -H "Authorization: Bearer your-api-key" \
https://api.getresync.com/v1/apps/7/campaigns?status=active

Example Response:

{
"data": [
{
"id": 123,
"name": "Homepage Test",
"status": "active",
"startDate": "2025-01-01T00:00:00Z",
"endDate": "2025-02-01T00:00:00Z",
"variants": [
{ "id": 1, "contentViewId": 101, "name": "Variant A" },
{ "id": 2, "contentViewId": 102, "name": "Variant B" }
]
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
}
}

Get Campaign

Get a specific campaign by ID.

GET /v1/campaigns/:campaignId

Example Request:

curl -H "Authorization: Bearer your-api-key" \
https://api.getresync.com/v1/campaigns/123

Example Response:

{
"id": 123,
"name": "Homepage Test",
"status": "active",
"startDate": "2025-01-01T00:00:00Z",
"endDate": "2025-02-01T00:00:00Z",
"variants": [
{ "id": 1, "contentViewId": 101, "name": "Variant A" },
{ "id": 2, "contentViewId": 102, "name": "Variant B" }
],
"analytics": {
"totalImpressions": 10000,
"totalConversions": 450
}
}

Create Campaign

Create a new campaign.

POST /v1/apps/:appId/campaigns

Request Body:

{
"name": "New Campaign",
"status": "draft",
"startDate": "2025-03-01T00:00:00Z",
"endDate": "2025-04-01T00:00:00Z",
"variants": [
{ "contentViewId": 101, "name": "Variant A" },
{ "contentViewId": 102, "name": "Variant B" }
],
"audienceId": 5
}

Example Request:

curl -X POST \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"name":"New Campaign","status":"draft"}' \
https://api.getresync.com/v1/apps/7/campaigns

Example Response:

{
"id": 124,
"name": "New Campaign",
"status": "draft",
"createdAt": "2025-11-23T10:00:00Z"
}

Update Campaign

Update an existing campaign.

PATCH /v1/campaigns/:campaignId

Request Body:

{
"name": "Updated Campaign Name",
"status": "active"
}

Example Request:

curl -X PATCH \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"status":"active"}' \
https://api.getresync.com/v1/campaigns/123

Delete Campaign

Delete a campaign.

DELETE /v1/campaigns/:campaignId

Example Request:

curl -X DELETE \
-H "Authorization: Bearer your-api-key" \
https://api.getresync.com/v1/campaigns/123

Example Response:

{
"success": true
}

Campaign Status

StatusDescription
draftCampaign is being created
activeCampaign is live and assigning variants
pausedCampaign is temporarily stopped
completedCampaign has ended

Webhooks

Campaigns trigger webhooks for key events:

  • campaign.started - Campaign activated
  • campaign.completed - Campaign ended
  • campaign.winner_declared - Statistical winner found

Learn more about webhooks →

Next Steps