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
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