Campaign API
Campaigns
Campaigns are a grouping of bookings and their associated creatives.
Create a Campaign
POST /v1/campaigns
Creates a new campaign.
Request body - CreateCampaignDto
name
string
Yes
Display name of the company.
advertiserId
integer
No
ID of the advertiser/media partner you want to attach to this campaign.
brandIds
integer
No
IDs of the brands you want attached to this campaign.
externalKey
string
No
Your own external reference key.
frequencyLimits
integer, string
No
Frequency limit settings for the campaign.
- amount
integer
No
Limit of event per set period per scope.
- event
string
No
Set the limit to either IMPRESSIONS or CLICKS.
- period
string
No
Period for which the amount is applied as limit to the event. Either DAILY or HOURLY.
- scope
string
No
On which level the limit is applied. In this case always CAMPAIGN.
priorityId
integer
Yes
Priority of the campaign. 01 is the highest priority, with higher numbers representing lower priorities. By default clients have priorities 01 through 45 configured.
campaignType
string
Yes
Campaign type is either FULL for managed campaigns and, GUARANTEED or AUCTIONED for Self Service. In case of doubt with Self Service, pick GUARANTEED.
reservationType
string
Yes
Type of the campaign, either CAMPAIGN, OFFER, Option or DRAFT in the case of an Advendio deliveryFactors
integer, string
No
Campaign goals expressed involume of unit, or in budget.
- unit
string
No
Unit of the to reach volume. Either IMPRESSIONS or CLICKS.
- volume
integer
No
Amount of unit to reach as campaign goal.
- budget
integer
No
Campaign budget that can be spend before the delivery stops
internalNote
string
No
Fills in the Internal ID
externalKey
string
No
Fills in the External ID
publisherId
integer
No
ID of the publisher you want to associate with the campaign. 1 is the main publisher
Creating a Campaign
{
"name": "Apitest",
"poNumber": "95",
"advertiserId": 1,
"invoiceCompanyId": 1,
"brandIds": [
1
],
"frequencyLimits": [
{
"amount": 1000,
"event": "IMPRESSIONS",
"period": "DAILY",
"scope": "CAMPAIGN"
}
],
"priorityId": 1,
"campaignType": "FULL",
"reservationType": "CAMPAIGN",
"deliveryFactors": {
"unit": "IMPRESSIONS",
"volume": 10000,
"budget": 2000
},
"internalNote": "apitest",
"externalKey": "testapi",
"publisherId": 1
}
Response - 201
{
"internalId": 21,
"name": "Apitest",
"lifetimeStatus": "INCOMPLETE",
"startDate": null,
"endDate": null,
"budget": "2000.00",
"bookingBudgetSum": "0",
"volume": 10000,
"toReachUnit": "IMPRESSIONS",
"advertiser": 1,
"advertiserName": "Philips",
"invoiceCompany": 1,
"invoiceCompanyName": "Philips",
"brands": [
1
],
"mediaBrands": [
{
"id": 1,
"name": "Evnia"
}
],
"status": "CAMPAIGN",
"priority": 1,
"origin": "OTHER",
"type": "FULL",
"frequencyLimits": [
{
"amount": 1000,
"event": "IMPRESSIONS",
"period": "DAILY",
"scope": "CAMPAIGN"
}
],
"createdBy": 33,
"creationDate": "2026-07-14T12:36:00Z",
"lastEditedBy": null,
"lastEditedDate": "2026-07-14T12:36:00Z",
"externalKey": "testapi",
"poNumber": "95",
"validTill": null,
"deliveryScheme": {
"uniform": true
},
"message": null,
"creativeCount": 0,
"internalNote": "apitest",
"publisherId": 1
}
Response codes
201
Campaign created.
400
Bad request - invalid input or parameters.
401 / 403
Not authenticated / not allowed.
404
Not Found - Resource not found.
409
Conflict.
500
Internal Server Error - Unexpected failure.