Skip to main content

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

Field Type Required Description
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. 1 is the highest priority, with higher numbers representing lower priorities. By default clients have priorities 1 through 5 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 campaign.
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

Status Meaning
201 Campaign created.
400 Bad request - invalid input or parameters.
401403 Not authenticated / not allowed.
404 Not Found - Resource not found.
409 Conflict.
500 Internal Server Error - Unexpected failure.

List Campaigns

Update Campaigns

Delete Campaigns