Booking API
Bookings
Bookings determine that what, where, how and when of ad delivery.
Get a booking
GET /v1/bookings/{bookingId}
Returns a single bookings' details by booking ID.
Request body
| Parameter | In | Required | Type | Description |
InternalId |
path | Yes | integer | The booking's ID. |
Response - 200
{
"internalId": 22,
"name": "Evnia 27M2N8500/01",
"status": "ACTIVE",
"lifetimeStatus": "STARTED",
"positionId": 8,
"positionName": "Home Halfpage",
"formatId": 1,
"formatName": "Halfpage",
"startDate": "2026-07-04T22:00:00Z",
"endDate": "2026-07-31T21:59:00Z",
"creationDate": "2026-07-01T10:14:28Z",
"lastEditedDate": "2026-07-15T13:42:55Z",
"deliveryFactors": {
"unit": "IMPRESSIONS",
"volume": 1500000,
"pricingType": "CPM",
"price": 3.0,
"budget": 4500.0,
"currency": "EUR",
"cpcOptimized": true
},
"activeDays": [
"MONDAY",
"TUESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
],
"creativeCount": 2,
"frequencyLimits": [],
"userFrequencies": [
{
"impressionsAmount": 10,
"expiryInSeconds": 86400
}
],
"pacing": "FRONTLOADED",
"deliveryMethod": "AUTO",
"deliveryParameter": 0.0,
"deliveryMultiples": "FREE",
"campaignId": 17,
"comment": null,
"priority": null,
"isBookedOnChannel": false,
"excludePositionIds": [],
"excludePublicationIds": [],
"rtbEnabled": false,
"targetExpressions": {},
"autoDeliveryLimits": false,
"bookingType": null,
"startTime": "00:00:00",
"endTime": "23:59:59"
}
Response codes
| Status | Meaning |
200 |
Booking found. |
400 |
Bad request - invalid input or parameters. |
401 / 403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
500 |
Internal Server Error - Unexpected failure. |
Update a booking
PUT /v1/bookings/{bookingId}
Updates a single booking by booking ID.
Request body - UpdateBookingDto
| Parameter | In | Required | Type | Description |
InternalId |
path | Yes | integer | The booking's ID. |
name |
body | Yes | string | Name of the campaign under which the booking is active. |
startDate |
body | Yes | string | Start date of the booking in date-time format yyyy-mm-ddThh:mm:ssZ |
endDate |
body | Yes | string | End date of the booking in date-time format yyyy-mm-ddThh:mm:ssZ |
|
|
body | Yes | string | Days of the week the booking is active. Possible values are: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY |
|
|
body | Yes | string, integer, number, boolean | Options that set the goals and to reach of the booking. |
|
- |
body | Yes | string | Unit of the to reach volume of the booking. Possible values are: Impressions or Clicks |
|
- |
body | No | integer | Amount of the unit to reach before the booking stops. |
|
- |
body | No | number | Price of the booking set by pricing type. |
|
- |
body | No | number | Budget of the booking. When the budget is spent by the booking, delivery stops. |
|
- |
body | Yes | string | Method for determining ad spend via price. Possible values are: CPM, CPC, CPP, CPL or ADM |
|
- |
body | No | boolean | Is CPC optimisation enabled for the booking: true or false |
|
|
body | Yes | integer | Position and format ID of the position of the booking. |
|
- |
body | Yes | integer | Slot ID of the position. |
|
- |
body | Yes | integer | ID of the format used in the position. |
|
|
body | No | integer, string | Setting for capping delivery. |
|
- |
body | No | string | Amount of event to cap delivery by. |
|
- |
body | No | string | Unit to measure for capping delivery. Either IMPRESSIONS or CLICKS |
|
- |
body | No | string | Period where the cap is active, either HOURLY or DAILY. After the period has run out, the cap resets, either for the next hour or next day. |
|
|
body | Yes | string | Delivery pacing options for the booking. Possible values are: EVEN, FRONTLOADED, AS_FAST_AS_POSSIBLE, ROTATION, SHARE_OF_VOICE or ACCOUNT_SETTING. Account setting takes the default pacing option set for the account |
|
|
body | No | number | Sets the delivery percentage for SOV. Expressed as 1 for 100% of desired delivery share. |
|
|
body | No | string | Optional comment in the booking UI. |
|
|
body | No | boolean | Can the booking go in competition with RTB bookings. Possible values are true or false |
|
|
body | No | integer | Priority of the booking expressed from 1 till 5, If no value is chosen, the campaign priority will be picked. |
|
|
body | No | string | Extra exclusion settings for bookings. Possible values are: EXCLUSIVE_ON_CAMPAIGN, EXCLUSIVE_ON_CREATIVE, ONE_AT_A_TIME, FREE. Free is the default option and means no deliveryMultiples is set. ONE_AT_A_TIME refers to Exclusive on Advertiser. |
|
|
body | No | integer | Position IDs to exclude from the selected media product (if it's a channel). |
|
|
body | No | integer | Publication IDs to exclude certain publication's inventory from the selected media product (if it's a channel) |
|
|
body | No | boolean | Activate auto delivery limits. Possible values are true or false. |
|
|
body | No | string | ID's of the sponsored products attached to this booking. |
|
|
body | No | string | Hour of the day when the booking will start delivery. formatted as hh:mm:ss. |
|
|
body | No | string | Hour of the day when the booking will stop delivery (until the next day). formatted as hh:mm:ss. |
Updating a booking
{
"internalId": 22,
"name": "Evnia 27M2N8500/01",
"status": "ACTIVE",
"lifetimeStatus": "STARTED",
"positionId": 8,
"positionName": "Home Halfpage",
"formatId": 1,
"formatName": "Halfpage",
"startDate": "2026-07-04T22:00:00Z",
"endDate": "2026-07-31T21:59:00Z",
"creationDate": "2026-07-01T10:14:28Z",
"lastEditedDate": "2026-07-15T13:42:55Z",
"deliveryFactors": {
"unit": "IMPRESSIONS",
"volume": 2500000,
"pricingType": "CPM",
"price": 3.0,
"budget": 5500.0,
"currency": "EUR",
"cpcOptimized": true
},
"mediaProduct": {
"positionId": 8,
"formatId": 1
},
"activeDays": [
"MONDAY",
"TUESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
],
"creativeCount": 2,
"frequencyLimits": [],
"userFrequencies": [
{
"impressionsAmount": 10,
"expiryInSeconds": 86400
}
],
"pacing": "FRONTLOADED",
"deliveryMethod": "AUTO",
"deliveryMultiples": "FREE",
"campaignId": 17,
"comment": null,
"priority": null,
"isBookedOnChannel": false,
"excludePositionIds": [],
"excludePublicationIds": [],
"rtbEnabled": false,
"targetExpressions": {},
"autoDeliveryLimits": false,
"bookingType": null,
"startTime": "00:00:00",
"endTime": "23:59:59"
}
Response - 200
{
"internalId": 22,
"name": "Evnia 27M2N8500/01",
"status": "ACTIVE",
"lifetimeStatus": "STARTED",
"positionId": 8,
"positionName": "Home Halfpage",
"formatId": 1,
"formatName": "Halfpage",
"startDate": "2026-07-04T22:00:00Z",
"endDate": "2026-07-31T21:59:00Z",
"creationDate": "2026-07-01T10:14:28Z",
"lastEditedDate": "2026-07-31T12:02:18Z",
"deliveryFactors": {
"unit": "IMPRESSIONS",
"volume": 2500000,
"pricingType": "CPM",
"price": 3.0,
"budget": 5500.0,
"currency": "EUR",
"cpcOptimized": true
},
"activeDays": [
"MONDAY",
"TUESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
],
"creativeCount": 2,
"frequencyLimits": [],
"userFrequencies": [
{
"impressionsAmount": 10,
"expiryInSeconds": 86400
}
],
"pacing": "FRONTLOADED",
"deliveryMethod": "AUTO",
"deliveryParameter": null,
"deliveryMultiples": "FREE",
"campaignId": 17,
"comment": null,
"priority": null,
"isBookedOnChannel": false,
"excludePositionIds": [],
"excludePublicationIds": [],
"rtbEnabled": false,
"targetExpressions": {},
"autoDeliveryLimits": false,
"bookingType": null,
"startTime": "00:00:00",
"endTime": "23:59:59"
}
Response codes
| Status | Meaning |
200 |
Booking updated. |
400 |
Bad request - invalid input or parameters. |
401 / 403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
409 |
Conflict. |
422 |
Unprocessable Entity |
500 |
Internal Server Error - Unexpected failure. |
Change the status of a booking
PUT /v1/bookings/{bookingId}/status
Change the status of a booking
Request body
| Parameter | In | Required | Type | Description |
bookingId |
path | Yes | integer | The booking's ID. |
| / | body | Yes | string | Desired booking status. Possible values are: ACTIVE, PAUSED, STOPPED |
Changing the status of a booking
"ACTIVE"
Response codes
| Status | Meaning |
204 |
Booking status updated. |
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. |
List bookings
GET /v1/bookings
List one or multiple bookings depending on fillters chosen.
Request body
| Parameter | In | Required | Type | Description |
campaignId |
parameters | No | integer | Campaign Id of the campaign whose bookings you want to list |
boookingId |
parameters | No | integer | Booking Ids of the booking(s) you want to list. IDs are comma separated |
creativeId |
parameters | No | integer | |
limit |
parameters | No | integer | |
offset |
parameters | No | integer | |
search |
parameters | No | string | |
status |
parameters | No | string | |
sortField |
parameters | No | string | |
sortDirection |
parameters | No | string |