---
title: "Create Creative"
method: POST
path: "/v1/creative"
---

# Create Creative

`POST /v1/creative`

## Request

- Base URL: `https://api.kevel.co`
- URL: `https://api.kevel.co/v1/creative`
- Auth: API key in header `X-Adzerk-ApiKey`

This creates a new creative under an advertiser.

## Request body

- object
  - `AdvertiserId` integer, required: The ID of the Advertiser.
  - `AdTypeId` integer, 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](doc:creatives#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` integer: 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\"}"`

## Response `200`

200

- object
  - `Id` integer
  - `Title` string
  - `ImageName` string
  - `Url` string
  - `Body` string
  - `AdvertiserId` integer
  - `IsActive` boolean
  - `AdTypeId` integer
  - `Alt` string
  - `IsDeleted` boolean
  - `IsSync` boolean
  - `IsHTMLJS` boolean
  - `ScriptBody` string
  - `Metadata` string
  - `ImageLink` string
  - `IsNoTrack` boolean
  - `IsNetworkAd` boolean

---

[API](https://skmtc.dev/kevel/apis/management-api-2.md) - [All operations](https://skmtc.dev/kevel/apis/management-api-2/llms.txt) - [OpenAPI document](https://skmtc.dev/kevel/apis/management-api-2/revisions/fe6c8716ca08?raw)
