create creative
What is a Creative?
As described in the Creatives section of this guide, a creative contains detailed information about a specific ad, such as ad size, URL, format, and other fields. When you set up a flight with ads, creatives become an important part of the flight, since this is where the information about the ad is kept.
API Syntax
When using the Create Creative API, it is important to understand the syntax required to make the request. Because the Kevel API is a RESTful API, there is a specific request format that must be followed to ensure the endpoint can process the request. The format is:
POST https://api.kevel.co/v1/creative
Where:
POST- the type of API request being made.https://api.kevel.co- the URL for the request.v1- the API version.creative- the API endpoint being called.
Creative Parameter Fields
The Create Creative API call is a POST call, meaning you must enter a number of body parameters as part of the request before calling the endpoint. These parameters enable you to specify the fields included in the creative. Although there are many different parameters you can add as part of the request, there are several required fields that must be part of the request in order to create the creative. These fields are:
- AdvertiserId - The ID of the Advertiser.
- AdTypeId - The ad size's ID. More info here.
- isActive - Specifies whether creative is eligible to serve.
Enabling Creatives To Be Served
In order to have a creative be eligible to serve, you must use the Creative Flight Maps (Ads) endpoints. These endpoints will map the creative to a flight's ad.
Uploading Creatives
You may also choose to upload a creative to Kevel so it is hosted on the Kevel site. To upload a creative, use the Upload Creative Image endpoint after the creative has been created.
Parameters:
AdvertiserId
int32
required
The ID of the Advertiser.
AdTypeId
int32
required
The ad size's ID. More info here.
IsActive
boolean
required
Specifies whether creative is eligible to serve.
Title
string
A short description of creative (in UI, it is called 'Friendly Name'). Max 500 characters.
ImageName
string
The file name as it is stored in our database. It is not needed to create a creative, but it will be passed back in the result view. If the string is manually entered, it will result in a null string.
Body
string
This is the body text associated with AdType 1 (in UI it's called "Text"). If AdType1 is not being used, pass an empty string:
"".Url
string
The click URL. Max length is 2000 characters. Must not contain leading or trailing spaces.
Alt
string
Alt text. The maximum length is 500 characters after HTML-encoding the value.
IsDeleted
boolean
Specifies whether creative is deleted.
IsHTMLJS
boolean
Specifies whether to override image with HTML or JavaScript ad. If
true= theScriptBodyfield should have value.ScriptBody
string
If
IsHTMLJS=true, then this field needs to be filled with a HTML/JavaScript ad.Metadata
string
Adds custom metadata to your creative. Note that this should be a JSON object in a string, for example:
{ ... "Metadata": "{ \"foo\":1234 }" }The entire Metadata string must be url encoded to support URLs and special characters that can break the JSON object. Maximum character limit of 1000 characters.ImageLink
string
The URL of an image hosted remotely. Use if you are serving an image file without uploading it to Kevel's CDN or calling it in the
ScriptBodySaveEmptyCreative
boolean
If set to
true, this allows you to save or update a creative that contains noScriptBodyorMetadata. Note thatSaveEmptyCreativeis not a database field on the creative object, but is instead an option when creating or updating creatives. This means that theSaveEmptyCreativeparameter will always be returned asnullonce a creative has been created.IsNoTrack
boolean
Indicates that a creative originating from a third-party (i.e. it uses third-party ad tags) is EFF Do Not Track compliant. Can only be used if DNT is enabled for your account.
IsNetworkAd
boolean
Indicates that a creative originates from a third-party source (such as an ad network) that will serve multiple ads. (BETA)
TemplateId
int32
If you are using a creative template, specifies which template to use. IDs can be retrieved from the Creative Template API.
TemplateValues
string
If you are using a creative template, sets the values for the fields in the creative. Fields must match the TemplateId and the object must be wrapped in a string. For example:
"{\"ctString\":\"A string goes here\",\"ctExternalFile\":\"http://cdn.com/ad.gif\"}"
Examples:
A minimally viable creative. Note that it includes no Title or creative contents.
curl -X POST -H 'X-Adzerk-ApiKey:<API-KEY>' -H "Content-Type:application/json" "https://api.kevel.co/v1/creative" --data-binary '{"AdvertiserId":12345,"AdTypeId":5,"IsActive":true}'
A minimally viable image creative without an uploaded image:
curl -X POST -H 'X-Adzerk-ApiKey:<API-KEY>' -H "Content-Type:application/json" "https://api.kevel.co/v1/creative" --data-binary '{"AdvertiserId":12345,"AdTypeId":5,"Title":"Image Creative","Url":"http://adzerk.com","Body":"","IsActive":true}'
A minimally viable image creative with an externally hosted image:
curl -X POST -H 'X-Adzerk-ApiKey:<API-KEY>' -H "Content-Type:application/json" "https://api.kevel.co/v1/creative" --data-binary '{"AdvertiserId":12345,"AdTypeId":5,"Title":"Image Creative","Url":"http://adzerk.com","Body":"","IsActive":true,"ImageLink":"http://cdn.com/ad.gif"}'
A minimally viable JS/HTML creative:
curl -X POST -H 'X-Adzerk-ApiKey:<API-KEY>' -H "Content-Type:application/json" "https://api.kevel.co/v1/creative" --data-binary '{"AdvertiserId":12345,"AdTypeId":5,"Title":"JS/HTML Creative","IsActive":true,"ScriptBody":"Creative contents","IsHTMLJS":true}'
A minimally viable Static Text Link creative:
curl -X POST -H 'X-Adzerk-ApiKey:<API-KEY>' -H "Content-Type:application/json" "https://api.kevel.co/v1/creative" --data-binary '{"AdvertiserId":12345,"AdTypeId":20,"IsActive":true,"Title":"Static Text Link example","Url":"http://adzerk.com"}'
{
"Id": 1234,
"Title": "Adzerk Blue Creative",
"ImageName": "somelongstring.jpg",
"Url": "https://adzerk.com",
"Body": "",
"AdvertiserId": 123,
"IsActive": true,
"AdTypeId": 5,
"Alt": "Adzerk - Native Ads",
"IsDeleted": false,
"IsSync": false,
"IsHTMLJS": true,
"ScriptBody": "<a href=\"{{url}}\">Click here to redirect to Url</a>",
"Metadata": {
"something": true
},
"ImageLink": "https://somecdn.com/somelongstring.jpg",
"IsNoTrack": true,
"IsNetworkAd": false
}