## What is a Creative?

As described in the [Creatives](https://dev.kevel.com/reference/creative) 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](https://dev.kevel.com/docs/ad-sizes).
- **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)](https://dev.kevel.co/v1.0/reference/creative-flight-map) 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](https://dev.kevel.co/v1.0/reference/creative#upload-creative-image) endpoint after the creative has been created.

AdvertiserId

int32

required

The ID of the Advertiser.

AdTypeId

int32

required

The ad size's ID. More info [here](https://dev.kevel.com/docs/ad-sizes).

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` = the `ScriptBody` field 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](https://dev.adzerk.com/docs/creatives#section-metadata-field) 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 `ScriptBody`

SaveEmptyCreative

boolean

If set to `true`, this allows you to save or update a creative that contains no `ScriptBody` or `Metadata`. Note that `SaveEmptyCreative` is not a database field on the creative object, but is instead an option when creating or updating creatives. This means that the `SaveEmptyCreative` parameter will always be returned as `null` once 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\"}"`

# ``200      200

object

Id

integer

Defaults to 0

Title

string

ImageName

string

Url

string

Body

string

AdvertiserId

integer

Defaults to 0

IsActive

boolean

Defaults to true

AdTypeId

integer

Defaults to 0

Alt

string

IsDeleted

boolean

Defaults to true

IsSync

boolean

Defaults to true

IsHTMLJS

boolean

Defaults to true

ScriptBody

string

Metadata

string

ImageLink

string

IsNoTrack

boolean

Defaults to true

IsNetworkAd

boolean

Defaults to true

Updated 10 months ago

## 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 (to upload an image, see "Upload Creative 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"}'
```
