Creative API
Creatives
List creatives
GET /v1/creatives/advar
Get a list of advar creatives filtered on at least one parameter.
Request body
| Parameter | In | Required | Type | Description |
creativeId |
path | Yes | integer | The creatives ID. |
campaignId |
parameter | No | integer | Campaign ID of the campaign whose advar creatives you want to list. |
creativeId |
parameter | No | integer | Comma separated list of creative ids you want to list. |
bookingId |
parameter | No | integer | Comma separated list of booking ids you want to list creatives for. |
search |
parameter | No | string | An url-encoded search string to apply to the list of creatives (ignoring case, on creative name). |
limit |
parameter | No | integer | Pagination property to limit the number of returned targets. |
offset |
parameter | No | integer | Pagination property to offset the returned targets. |
Response - 200
[
{
"creativeId": 18,
"campaignId": 17,
"creativeName": "27M2N8500/01 Rectangle 1",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": null,
"lastEditedDate": "2026-07-01T10:16:32Z",
"templateParameters": {
"<CLICKURL>": "https://www.philips.be/c-p/27M2N8500_01/gamemonitor-qd-oled-gamemonitor",
"<ALT_TEXT>": "QD OLED-gamemonitor"
},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo-preview.adhese.org/pool/lib/18_2nd_1.png"
}
},
"lastEdited": 1782900992000
},
{
"creativeId": 19,
"campaignId": 17,
"creativeName": "27M2N8500/01 Rectangle 2",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": null,
"lastEditedDate": "2026-07-01T10:19:06Z",
"templateParameters": {
"<CLICKURL>": "https://www.philips.be/c-p/27M2N8500_01/gamemonitor-qd-oled-gamemonitor",
"<ALT_TEXT>": "QD OLED-gamemonitor 2"
},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo-preview.adhese.org/pool/lib/19_2nd_1.png"
}
},
"lastEdited": 1782901146000
},
{
"creativeId": 27,
"campaignId": 17,
"creativeName": "Apitest advar banner ",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": "",
"lastEditedDate": "2026-08-10T07:29:49Z",
"templateParameters": {
"<CLICKURL>": "",
"<ALT_TEXT>": ""
},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo-preview.adhese.org/pool/lib/27_2nd_1.png"
}
},
"lastEdited": 1786346989000
}
]
Response codes
| Status | Meaning |
200 |
Creatives found. |
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. |
Update an advar creative
PUT /v1/creatives/advar/{creativeId}
Updates an advar creative by creative ID
Request body
| Parameter | In | Required | Type | Description |
creativeId |
path | Yes | integer | The creatives ID. |
Updating an advar creative
{
"campaignId": 17,
"creativeName": "Apitest advar banner update",
"sku": "string",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"templateParameters": {},
"templateFiles": {}
}
Response - 200
{
"creativeId": 27,
"campaignId": 17,
"creativeName": "Apitest advar banner update",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": "string",
"lastEditedDate": "2026-08-10T13:36:10Z",
"templateParameters": {},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo-preview.adhese.org/pool/lib/27_2nd_1.png"
}
},
"lastEdited": 1786368970000
}
Response codes
| Status | Meaning |
200 |
Creative 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 a single creative
GET /v1/creatives/advar/{id}
Returns a single creatives' details by creative ID
Request body
| Parameter | In | Required | Type | Description |
id |
path | Yes | string | Id of the creative you want to return |
Response - 200
{
"creativeId": 30,
"campaignId": 27,
"creativeName": "Copy of Apitestpotmancreative",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": null,
"lastEditedDate": "2026-09-08T08:00:13Z",
"templateParameters": {
"<CLICKURL>": "https://example.com",
"<ALT_TEXT>": "My creative alt text"
},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo.preview.adhese.eu/pool/lib/30_2nd_1.jpg"
}
},
"readonly": false,
"lastEdited": 1788854413000
}
Response codes
| Status | Meaning |
200 |
Creative 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 the preview links of a single creative
GET /v1/creatives/advar/{id}/preview-links
Lists the preview links associated with the requested creative.
| Parameter | In | Required | Type | Description |
creativeId |
path | Yes | integer | The creatives ID. |
Response - 200
[
"https://adhese.eu?adhesePreviewCreativeId=22:e0c0a655-3f46-4231-850c-acfa0ed976de&adhesePreviewSlotId=14&adhesePreviewWidth=16&adhesePreviewHeight=9&adhesePreviewTemplateFile=preview.html&adhesePreviewCreativeKey&adhesePreviewCreativeTemplate=landscape"
]
Response codes
| Status | Meaning |
200 |
Preview links retrieved. |
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. |
Upload a creative file
POST /v1/creatives/file
Uploads a creative file to temporary storage to use when uploading an advar creative.
Request body
| Parameter | In | Required | Type | Description |
Content-Disposition |
header | Yes | string | Contains the file name and is filled in accordingly attachment; filename=filename.extension |
Use-Keycloak-Auth |
header | Yes | boolean | Default is true |
Content-Type |
header | Yes | string | application/octet-stream |
formatId |
parameter | Yes | string | The ID of the format that will be associated with the creative. |
key |
parameter | No | string | Creative file index written as ordinal number (e.g. 2nd) with the exception of 1, which has key "main" (but is not used in advar creatives). Default value is main |
File contents |
body | Yes | binary data | File contents as binary data to be uploaded to temporary storage. |
Response - 201
{
"filePath": "/home/adhese/www/docker.adhese.org/tmp/file_by_user_1_9072608199649672610.jpg"
}
Response codes
| Status | Meaning |
201 |
File uploaded successfully. |
400 |
Bad request - invalid input or parameters. |
401 / 403 |
Not authenticated / not allowed. |
404 |
Not Found - Resource not found. |
409 |
Conflict. |
415 |
Unsupported Media Type. |
422 |
Unprocessable entity. |
500 |
Internal Server Error - Unexpected failure. |
Create an advar creative
POST /v1/creatives/advar
Creates an advar creative under the chosen campaign.
Request body
| Parameter | In | Required | Type | Description |
campaignId |
body | Yes | string | Id of the campaign under wich you want to create a creative. |
creativeName |
body | Yes | string | The ID of the format that will be associated with the creative. |
sku |
body | No | string | SKU of the product related to the product. |
formatId |
body | Yes | integer | ID of the format that will be used for the creative. |
advarTemplateName |
body | Yes | string | Name of the advar template that will be used. |
templateParameters |
body | No | string | Additional parameters related to the advar. To be filled in as the macro of the parameter such as <CLICKURL> or <ALT_TEXT>. |
|
|
body | No | string | Creative name and files. |
|
|
body | Yes | integer | Creative file index written as ordinal number (e.g. 2) with the exception of 1, which has key "main" (but is not used in advar creatives). Default value is main |
- fileName |
body | No | string | Name of the creative's file. |
- filePath |
body | No | string | Path where the file can be found. If a creative was uploaded via the API, this can be found in the response. |
Creating an advar creative
{
"campaignId": 27,
"creativeName": "Apitestpotmancreative",
"sku": null,
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"templateParameters": {
"<CLICKURL>": "https://example.com",
"<ALT_TEXT>": "My creative alt text"
},
"templateFiles": {
"2": {
"fileName": "banner.png",
"filePath": "/home/adhese/www/docker.adhese.org/tmp/file_by_user_1_9072608199649672610.jpg"
}
}
}
Response - 201
{
"creativeId": 29,
"campaignId": 27,
"creativeName": "Apitestpotmancreative",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": null,
"lastEditedDate": "2026-09-02T13:25:48Z",
"templateParameters": {
"<CLICKURL>": "https://example.com",
"<ALT_TEXT>": "My creative alt text"
},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo.preview.adhese.eu/pool/lib/29_2nd_1.jpg"
}
},
"readonly": false,
"lastEdited": 1788355548000
}
Response codes
| Status | Meaning |
201 |
File uploaded successfully. |
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. |
Duplicate a creative
POST /v1/creatives/advar/{creativeId}/duplicate
Duplicates a chosen creative by campaign and creative ID.
Request body
| Parameter | In | Required | Type | Description |
creativeId |
path | Yes | string | Id of the creative you wish to duplicate. |
destinationCampaignId |
body | Yes | string | The ID campaign to which the creative you wish to duplicate belongs. |
Duplicating a campaign
{
"destinationCampaignId": 27
}
Response - 200
{
"creativeId": 30,
"campaignId": 27,
"creativeName": "Copy of Apitestpotmancreative",
"formatId": 1,
"advarTemplateName": "Image_FlexBanner.html",
"sku": null,
"lastEditedDate": "2026-09-08T08:00:13Z",
"templateParameters": {
"<CLICKURL>": "https://example.com",
"<ALT_TEXT>": "My creative alt text"
},
"templateFiles": {
"2": {
"fileName": null,
"filePath": "https://demo.preview.adhese.eu/pool/lib/30_2nd_1.jpg"
}
},
"readonly": false,
"lastEdited": 1788854413000
}
Response codes
| Status | Meaning |
200 |
Creative duplicated successfully. |
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 all bookings for a creative
GET /v1/creatives/advar/{id}/bookings
List all bookings trafficked to a certain creative.
Request body
| Parameter | In | Required | Type | Description |
creativeId |
path | Yes | string | Id of the creative you wish to duplicate. |
Response - 200
[
{
"internalId": 28,
"name": "Apitest4 booking",
"status": "ACTIVE",
"lifetimeStatus": "INCOMPLETE",
"positionId": 8,
"positionName": "Home Halfpage",
"formatId": 1,
"formatName": "Halfpage",
"mediaProduct": {
"positionId": 8,
"formatId": 1
},
"startDate": "2026-08-30T22:00:00Z",
"endDate": "2027-07-31T21:59:00Z",
"creationDate": "2026-07-20T13:01:49Z",
"lastEditedDate": "2026-07-31T12:40:58Z",
"deliveryFactors": {
"unit": "IMPRESSIONS",
"volume": 1000,
"pricingType": "CPM",
"price": 1.0,
"budget": 1.0,
"currency": "EUR",
"cpcOptimized": false
},
"activeDays": [
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
],
"creativeCount": 0,
"frequencyLimits": [],
"userFrequencies": [],
"pacing": null,
"deliveryMethod": "AUTO",
"deliveryParameter": 0.0,
"deliveryMultiples": "FREE",
"campaignId": 27,
"comment": null,
"priority": null,
"priorityId": null,
"isBookedOnChannel": false,
"excludePositionIds": [],
"excludePublicationIds": [],
"rtbEnabled": false,
"targetExpressions": {},
"targeting": [],
"autoDeliveryLimits": false,
"bookingType": "DISPLAY",
"startTime": "00:00:00",
"endTime": "23:59:59"
},
{
"internalId": 36,
"name": "Apitest4 booking",
"status": "PAUSED",
"lifetimeStatus": "PAUSED",
"positionId": 8,
"positionName": "Home Halfpage",
"formatId": 1,
"formatName": "Halfpage",
"mediaProduct": {
"positionId": 8,
"formatId": 1
},
"startDate": "2026-08-30T22:00:00Z",
"endDate": "2027-07-31T21:59:00Z",
"creationDate": "2026-09-08T09:33:13Z",
"lastEditedDate": "2026-09-08T09:33:42Z",
"deliveryFactors": {
"unit": "IMPRESSIONS",
"volume": 1200,
"pricingType": "CPM",
"price": 1.1,
"budget": 1.32,
"currency": "EUR",
"cpcOptimized": false
},
"activeDays": [
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
],
"creativeCount": 0,
"frequencyLimits": [],
"userFrequencies": [],
"pacing": null,
"deliveryMethod": "AUTO",
"deliveryParameter": 0.0,
"deliveryMultiples": "FREE",
"campaignId": 27,
"comment": "",
"priority": null,
"priorityId": null,
"isBookedOnChannel": false,
"excludePositionIds": [],
"excludePublicationIds": [],
"rtbEnabled": false,
"targetExpressions": {},
"targeting": [],
"autoDeliveryLimits": false,
"bookingType": null,
"startTime": "00:00:00",
"endTime": "23:59:59"
}
]
Response codes
| Status | Meaning |
200 |
Bookings listed. |
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. |
Deleting a creative
DELETE /v1/creatives/{id}
Removes a creative by ID.
Request body
| Parameter | In | Required | Type | Description |
creativeId |
path | Yes | string | Id of the creative you wish to remove. |
Response - 200
{
"success": "DELETE on Creative 30 was successful",
"key": 30
}
Response codes
| Status | Meaning |
200 |
Bookings listed. |
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. |
No comments to display
No comments to display