Skip to main content

Campaign API

Complete API reference for campaign management and participant operations.

Base Endpoint

/api/v1/campaigns

List Campaigns

Get a paginated list of campaigns.

GET /api/v1/campaigns

Query Parameters

ParameterTypeDescription
statusstringFilter by status (draft, active, ended)
typestringFilter by type (promotion, challenge, event)
date_fromstringFilter from date
date_tostringFilter to date
pageintegerPage number
limitintegerItems per page

Example Response

{
"data": [
{
"id": "camp_123",
"name": "Summer Sale 2024",
"description": "Special summer promotion",
"type": "promotion",
"status": "active",
"start_date": "2024-06-01T00:00:00Z",
"end_date": "2024-08-31T23:59:59Z",
"target_segment": "all",
"participant_count": 1250,
"created_at": "2024-05-15T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 45
}
}

Get Campaign

Get campaign details.

GET /api/v1/campaigns/{campaign_id}

Example Response

{
"data": {
"id": "camp_123",
"name": "Summer Sale 2024",
"description": "Special summer promotion",
"type": "promotion",
"status": "active",
"start_date": "2024-06-01T00:00:00Z",
"end_date": "2024-08-31T23:59:59Z",
"target_segment": {
"id": "seg_123",
"name": "Gold Members"
},
"reward": {
"type": "discount",
"value": 20,
"unit": "percent"
},
"rules": {
"min_purchase": 100,
"max_uses": 1
},
"participant_count": 1250,
"conversion_rate": 0.35,
"created_at": "2024-05-15T10:00:00Z"
}
}

Create Campaign

Create a new campaign.

POST /api/v1/campaigns

Request Body

{
"name": "Summer Sale 2024",
"description": "Special summer promotion",
"type": "promotion",
"start_date": "2024-06-01T00:00:00Z",
"end_date": "2024-08-31T23:59:59Z",
"target_segment_id": "seg_123",
"reward": {
"type": "discount",
"value": 20,
"unit": "percent"
},
"rules": {
"min_purchase": 100,
"max_uses": 1,
"per_customer_limit": 1
},
"content": {
"banner": "https://...",
"terms": "Terms and conditions..."
}
}

Example Response

{
"data": {
"id": "camp_123",
"name": "Summer Sale 2024",
"status": "draft",
"created_at": "2024-05-15T10:00:00Z"
}
}

Update Campaign

Update campaign details.

PATCH /api/v1/campaigns/{campaign_id}

Request Body

{
"name": "Summer Sale 2024 - Updated",
"end_date": "2024-09-30T23:59:59Z"
}

Activate Campaign

Activate a draft campaign.

POST /api/v1/campaigns/{campaign_id}/activate

End Campaign

End an active campaign.

POST /api/v1/campaigns/{campaign_id}/end

Campaign Participants

Join Campaign

Customer joins a campaign.

POST /api/v1/campaigns/{campaign_id}/join

Request Body

{
"customer_id": "cus_12345"
}

Example Response

{
"data": {
"id": "part_123",
"campaign_id": "camp_123",
"customer_id": "cus_12345",
"status": "active",
"joined_at": "2024-06-01T10:00:00Z",
"reward_claimed": false
}
}

Get Campaign Participants

Get list of campaign participants.

GET /api/v1/campaigns/{campaign_id}/participants

Query Parameters

ParameterTypeDescription
statusstringFilter by status (active, completed, dropped)
pageintegerPage number
limitintegerItems per page

Example Response

{
"data": [
{
"id": "part_123",
"customer": {
"id": "cus_12345",
"name": "John Doe",
"tier": "gold"
},
"status": "active",
"progress": {
"current": 3,
"target": 5,
"percentage": 60
},
"joined_at": "2024-06-01T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1250
}
}

Get Customer Campaigns

Get campaigns a customer has joined.

GET /api/v1/customers/{customer_id}/campaigns

Query Parameters

ParameterTypeDescription
statusstringFilter by status (active, completed, ended)

Campaign Analytics

Get Campaign Performance

Get campaign performance metrics.

GET /api/v1/campaigns/{campaign_id}/analytics

Query Parameters

ParameterTypeDescription
date_fromstringFilter from date
date_tostringFilter to date
group_bystringGroup by (day, week, month)

Example Response

{
"data": {
"campaign_id": "camp_123",
"metrics": {
"participants": 1250,
"conversions": 438,
"conversion_rate": 0.35,
"revenue": 125000,
"average_order_value": 285.39
},
"by_date": [
{
"date": "2024-06-01",
"participants": 50,
"conversions": 18,
"revenue": 5000
}
]
}
}