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:
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: draft, active, paused, completed |
limit | number | Number of results (default: 20, max: 100) |
page | string | Page 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
| Status | Description |
|---|---|
draft | Campaign is being created |
active | Campaign is live and assigning variants |
paused | Campaign is temporarily stopped |
completed | Campaign has ended |
Webhooks
Campaigns trigger webhooks for key events:
campaign.started- Campaign activatedcampaign.completed- Campaign endedcampaign.winner_declared- Statistical winner found