Introduction
The Creative Management API V4 consolidates the capabilities of all previous Creative APIs, enabling you to use a single API to create creatives for all endpoints. With this one API you can make the following changes to your MRM Creative Library:
- Create creatives and renditions
- Update creatives and renditions
- Show creatives and renditions
- List creatives and renditions
- Delete creatives and renditions
At the same time, Creative Management API v4 offers features not previously available. With Creative Management API v4 you can now:
- List creatives configured in the way you want them to appear
- Ensure that your creative and rendition properties are not overridden by Media Detect
- Use a Universal Ad ID, a unique ID provided by a third-party registry
Creative Management API v4 helps you automate your workflows, reducing the need for manual inputs in MRM for traffickers and increasing the accuracy and efficiency of your ad ops teams. It prevents gateway timeouts by processing creatives asynchronously. Because Creative Management API v4 detects rendition properties automatically, requests are much simpler than those made to previous Creative APIs.
Note
The Creative Management API v4 does not support XML requests or responses at this time. Requests must be made in JSON format and are returned in JSON.
Resources
URI(s)
Creative Management API v4 identifies two Uniform Resource Identifiers (URIs):
Environment | URI |
---|---|
Production | https://api.freewheel.tv/services/v4/creative_resources |
Staging | https://api.stg.freewheel.tv/services/v4/creative_resources |
Note
Because of database capacity issues, the Creative Management API V4 returns a maximum of 50 creatives per page, even if you request a larger number than that.
Attributes
Creative Object
The following attributes are included in GET requests, except where indicated in the Comments column.
Field Name | Type | Description | Optional for Create? | Updatable? | Comments |
---|---|---|---|---|---|
id | Integer | Creative's MRM ID | N/A (Not Creatable) | No | |
status | String, Enum | Creative's status. Possible values:
| N/A (Not Creatable) | No | These values must be provided in ALL CAPITAL letters. |
created_at | String, Timestamp | Date and time at which the creative is created. For example, 2017-09-28T06:05:46.000Z | N/A (Not Creatable) | No | |
updated_at | String, Timestamp | Date and time at which the creative is last updated. For example, 2017-09-28T06:05:46.000Z | N/A (Not Creatable) | No | |
name | String | Name of the creative | No | Yes | |
description | String | Description of the creative | Yes | Yes | |
advertiser_ids | List of Integers | Advertiser IDs. See the complete list of available advertiser IDs in MRM's Advertiser module. | Yes | Yes | |
agency_ids | List of Integers | Agency IDs. See the complete list of available agency IDs in MRM's Advertiser module. | Yes | Yes | |
rating | String Enum | Rating of the creative. Contact your FreeWheel solutions team for the list of available ratings in your network. Usually, one of the following values is used:
| Yes | Yes | |
external_id | String | External ID of the creative. | Yes | No | |
external_system | String | For specific integrations copy_set can be included to indicate that the external ID is a copy_set ID. | Yes | Yes | The GET response is always null, even though it is actually copy_set in FreeWheel's database. |
universal_ad_ids | List of UniversalAdIds | Universal identifier of the creative | Yes | Yes | |
base_ad_unit | String | Base ad unit of the creative | Yes | Yes (Required) | Required when appending a rendition |
duration | Integer | Duration of the creative in seconds, if applicable. It is recommended to leave this field blank so that the duration of the creative can be automatically detected (if the creative is accessible from MRM). Provided durations take precedence over those automatically detected. | Yes | Yes | |
duration_type | String Enum | Duration type of the creative. Possible (case insensitive) values:
| Yes | Yes | |
parameters | List of Parameters | Creative parameters | Yes | Yes | When you update the parameters field, all previously created parameters are removed and replaced with those in the update. |
clearcast_approval_status | String Enum | Clearcast approval status. Possible values:
| Yes | Yes | POST requests only support NA, NOT_APPROVED. NA can only be set to NOT_APPROVED. NOT_APPROVED can be set to any other status. APPROVED_INTERNALLY can be set to APPROVED_BY_CLEARCAST or NOT_APPROVED. APPROVED_BY_CLEARCAST can be set to APPROVED_INTERNALLY or NOT_APPROVED. |
clearcast_code | List of Strings | The Clearcast codes associated with this creative | Yes | Yes | Example: [CG, TN] |
clearcast_note | String | Specifies the show, actor, and other data about the show in which your ad cannot appear. Used by traffickers to set appropriate targeting manually. | Yes | Yes | |
renditions | List of Renditions | Renditions of the creative | Yes | Yes | Included in GET if include=renditions . When you update the renditions field, all previously created renditions are deactivated and replaced by those in the update request. If the renditions field is not included in the update request, or if the value is [], no update is performed on existing renditions, all of which are preserved. |
messages | List of Messages | Any warnings or errors that occurred when processing or updating a creative | N/A (not createable) | No | |
tv_vod_object_id | String | For creating TV VOD creatives in specific integrations | Yes | Yes | Not included in GET. Networks who use ClearCast often use a TV VOD Object ID. |
tv_vod_object_type | String | For creating TV VOD creatives in specific integrations | Yes | Yes | Not included in GET. Networks who use ClearCast often use a TV VOD Object ID. |
tag_type | String | Can be provided along with the VAST url to indicate the VAST tag version | Yes | Yes | |
tag_type_id | ID | Can be provided along with the VAST url to indicate the VAST tag version | Yes | Yes |
Message Object
Field | Name | Description | Comments |
---|---|---|---|
type | String | Type of message: error or warning | Only applies to GET/LIST |
content | String | Informational message | Only applies to GET/LIST |
Rendition Object
Parameter | Type | Description | Optional for Create? | Updatable? | Included in GET? | Comments |
---|---|---|---|---|---|---|
id | Integer | Creative rendition's MRM ID. | N/A (Not Creatable) | No | Yes | |
status | String, Enum | Creative Rendition's status:
| N/A (Not Creatable) | No | Yes | |
created_at | String, Timestamp | Date and time at which the creative rendition is created. For example, 2017-09-28T06:05:46.000Z | N/A (Not Creatable) | No | Yes | |
updated_at | String, Timestamp | Date and time at which the creative rendition is created. For example, 2017-09-28T06:05:46.000Z | N/A (Not Creatable) | No | Yes | |
uri | String | URI of the rendition | Yes (Either uri or content must be present.) | Yes | Yes | The URI used to traffic the creative rendition. It could be the URI of a video/image, a VAST URL, or a VOD URI. |
cdn_provider | String | The Content Delivery Network (CDN) provider identifier. It must be a configured CDN provider in this network. You should only specify a cdnProvider when you provide a uri. | N/A (Not Creatable) | No | Yes | Can be used for retrieve [GET] requests only. Cannot be used for create [POST] or update [PUT] requests. This is only available in particular networks that have the appropriate configuration. Contact your account team for more information. |
additional_media_locations | List of media_location objects | Additional media locations of the same rendition. If the same rendition (physical media file) is stored in additional locations (e.g., different CDNs) for redundancy purposes, provide the additional URIs in this field. These must not be confused with different renditions: different renditions should be represented as different rendition objects. | Yes | Yes | Yes | This is only available in particular networks that have the appropriate configuration. Contact your account team for more information. |
content | String | Apply to tag code only. | Yes (Either uri or content must be present.) | Yes | Yes | |
external_id | String | External ID of the rendition. | Yes | Yes | Yes | External identifier of the media, if applicable. In most cases, it is left blank. This is only available in particular networks that have the appropriate configuration. Contact your account team for more information. |
source_external_id | String | The external identification code for the IP-based source of the rendition. | Yes | Yes | Yes | This field is only used in specific integrations, such as linear addressable. |
content_type | String | Content type of the rendition. The default content type is auto. | Yes | Yes | Yes | By default, if this field is left blank, or has the value auto , the content type of the media is automatically detected. Provided content types take precedence over those automatically detected. |
width | Integer | Width of the creative, in pixels | Yes | Yes | Yes | Automatically detected by default. Provided widths take precedence over those automatically detected |
height | Integer | Height of the creative, in pixels | Yes | Yes | Yes | Auto detected by default. Any provided value takes precedence. |
bitrate | Integer | Bitrate of the creative, if applicable | Yes | Yes | Yes | Automatically detected by default. Provided values take precedence over those automatically detected. |
quality | String, Enum | Quality of the media (case insensitive):
| Yes | Yes | Yes | This parameter is required for VOD media types. It usually only applies to Linear and VOD media types. |
device_pixel_ratio | Float | Applicable to images only | Yes | Yes | Yes | The ratio between physical pixels and logical pixels. For example, the logical dimension for a 600x500 image on a retina display should be around 300x250 for it to avoid appearing pixelated. The default value is 1.00. |
fps | Float | Frames per second. Applicable to videos only | Yes | Yes | Yes | Auto detected by default. Any provided value takes precedence. |
api_interface | String, Enum | Creative's API interface, e.g., VPAID. | Yes | Yes | Yes | Valid values (case insensitive):
|
https_compatibility | String, Enum |
| Yes | Yes | Yes | Auto detected by default. Provided values take precedence over those automatically detecteds. |
preference | Int, Enum |
| Yes | Yes | Yes |
|
transcode_profile_ids | List of Integers | Apply transcoding on this media | Yes | Yes | No | List of transcode profile IDs you would like to enable for this media. Transcoding can only be enabled on video-type media files. When transcoding is enabled, the uri field must be present.This rendition is marked as a source rendition and a few additional production renditions are generated from it during transcoding. Because this is a source rendition, there is no need to provide additional_media_locations for it.Only one rendition can be the source rendition in each creative. If multiple rendition objects include transcode_profile_ids, the API responds with a validation error (422). To have transcode profile IDs set up in your network, reach out to your account team. |
rendition_transcode_profile_id | List of Integers | Used in the response to to indicate the transcode profile IDs that were used to generate the rendition | No | No | Yes | |
ad_asset_store_statuses | Array | Array of ad_asset_store_status objects. See Ad_asset_store_status Object. | Yes | Yes | Yes | The attribute is only applicable when the creative rendition’s primary asset has a PID/PAID/VOD asset location, i.e., vod://programmer.com/abcd123123. In order to the retrieve the asset status via a GET call, no configuration is necessary. To enable the ability to set the availability status, reach out to your account team for the appropriate configuration |
operator_network_id | Integer | Links a rendition with provided Operator FreeWheel network ID. | Not required |
Ad Asset Store Status Object
Field | Type | Required? | Notes |
---|---|---|---|
id | int | Yes Either tag or id must be present in the request. | |
tag | string | Yes Either tag or id must be present in the request. | |
status | enum:
| Yes | For POST requests and PUT requests that contain new creative_rendition_locator (VOD asset URI), this field defaults to UNAVAILABLE for each network ad asset store not provided. For POST requests that happen to contain an existing creative_rendition_locator already present in the creative_rendition_locator_ad_asset_store_status table, and for PUT requests, the status value is not changed if no ad_asset_store_status object is provided for the corresponding network ad asset store. |
Parameter Object
Field Name | Type | Description | Optional? | Sample |
---|---|---|---|---|
name | String | Name of the parameter. | No | gender |
value | String | Value of the parameter. | Yes | m |
Formatting Requests with the Parameter Object
Your requests using the Parameter object should follow the following format:
"parameters": [
{ "name": "param name 1", "value": "param value 1" },
{ "name": "param name 2", "value": "param value 2" }
]
Additional Media Locations for Renditions
You might want to store the same rendition (physical media file) in multiple locations (e.g. different Content Delivery Networks) for redundancy purposes. To provide these additional locations for the same rendition, include the details in the additional_media_locations object in your [POST] request.
Field Name | Type | Description | Optional? | Included in GET? |
---|---|---|---|---|
uri | String | The Uniform Resource Indentifier (URI) address | No | Yes |
cdn_provider | String | The Content Delivery Network (CDN) provider identifier. If provided, it must be a configured CDN provider in this network. | Yes | Yes |
content_type | String | Content type of the media. In rare cases, the content type of the additional media is different from the one specified in rendition.uri. | Yes | Yes |
UniversalAdId Object
Another feature offered by Creative Management API v4 is the ability to identify a creative by means of a Universal Ad ID, a unique ID provided by a third-party registry.
If you want to create [POST] or update [PUT] a creative with a UniversalAdId
, send a request containing the object below:
Field Name | Type | Description | Optional? |
---|---|---|---|
id | String | Universal identifier of the creative. If you provide this, you must also include registry. | No |
registry | String, Enum | Authority of registration of the universal ID, one of Ad-ID, Clearcast, ARPP, or Auditel (case insensitive). | No |
Clearing Repeated Fields for Create [POST] or Update [PUT] Creatives and Renditions
When you are creating [POST] or updating [PUT] creatives and renditions in Creative Management API v4, you may want to clear repeated fields. To do this, you must make specific requests. This prevents you from inadvertently clearing lists of Universal Ad IDs or parameters.
Clearing Universal Ad IDs
To clear all of the Universal Ad IDs include in your request the key clear_fields
pointing to an array of strings outside of the Creative object, which contains the string universal_ad_ids
.
You can use the clear_fields
array outside of the Creative object without any Universal Ad IDs either with an empty array:
{
"creative": {
"universal_ad_ids": [],
"base_ad_unit": "video"
},
"clear_fields": [ "universal_ad_ids" ]
}
Or with no value at all:
{
"creative": {
"base_ad_unit": "video"
},
"clear_fields": [ "universal_ad_ids" ]
}
Parameters
You can clear parameters in much the same way as you clear Universal Ad IDs. In your PUT request body, you can specify the parameters names and values to be updated. This ensures that any previously assigned parameters for that Creative are no longer assigned to it. However, if you send an empty parameters
array or do not include parameters
at all, the parameters for this creative will not be edited.
You can use a clear_fields
array outside of the Creative object for parameters in the same way as described for universal_ids
above.
Ambiguous Requests
If your request includes the string in clear_fields
as well as values inside of the creative, you receive a 4xx error with a message stating:
"message": "request cannot include Universal Ad IDs when 'clear_fields' contains 'universal_ad_ids'"
Or:
"message": "request cannot include Parameters when 'clear_fields' contains 'parameters'"