Creative API

Creatives

The images, banners, video, audio that are displayed as ads.

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

templateFiles

body No string Creative name and files.

key

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.

 


Revision #20
Created 2026-08-07 09:24:42 UTC by Casper Steuperaert
Updated 2026-09-08 11:58:13 UTC by Casper Steuperaert