Creative Management API v4

Introduction

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):

EnvironmentURI
Productionhttps://api.freewheel.tv/services/v4/creative_resources
Staginghttps://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 NameTypeDescriptionOptional for Create?Updatable?Comments
idIntegerCreative's MRM IDN/A (Not Creatable)No
statusString, EnumCreative's status.

Possible values:

  • ACTIVE
  • INACTIVE
  • INVALID
  • PROCESSING
N/A (Not Creatable)NoThese values must be provided in ALL CAPITAL letters.
created_atString, TimestampDate and time at which the creative is created. For example, 2017-09-28T06:05:46.000ZN/A (Not Creatable)No
updated_atString, TimestampDate and time at which the creative is last updated. For example, 2017-09-28T06:05:46.000ZN/A (Not Creatable)No
nameStringName of the creativeNoYes
descriptionStringDescription of the creativeYesYes
advertiser_idsList of IntegersAdvertiser IDs. See the complete list of available advertiser IDs in MRM's Advertiser module.YesYes
agency_idsList of IntegersAgency IDs. See the complete list of available agency IDs in MRM's Advertiser module.YesYes
ratingString EnumRating 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:
  • G
  • PG
  • PG-13
  • R
  • Mature
  • Unrated (default)
Rating values are case insensitive.
YesYes
external_idStringExternal ID of the creative.YesNo
external_systemStringFor specific integrations copy_set can be included to indicate that the external ID is a copy_set ID.YesYesThe GET response is always null, even though it is actually copy_set in FreeWheel's database.
universal_ad_idsList of UniversalAdIdsUniversal identifier of the creativeYesYes
base_ad_unitStringBase ad unit of the creativeYesYes (Required)Required when appending a rendition
durationIntegerDuration 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.YesYes
duration_typeString EnumDuration type of the creative. Possible (case insensitive) values:
  • GUARANTEED
  • ESTIMATE
  • VARIABLE
It is recommended that this field be left blank for normal use cases, and that MRM be allowed to detect its values automatically. Provided duration types, however, take precedence over default duration types.
YesYes
parametersList of ParametersCreative parametersYesYesWhen you update the parameters field, all previously created parameters are removed and replaced with those in the update.
clearcast_approval_statusString EnumClearcast approval status.

Possible values:
  • NA
  • NOT_APPROVED
  • APPROVED_INTERNALLY
  • APPROVED_BY_CLEARCAST
YesYesPOST 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_codeList of StringsThe Clearcast codes associated with this creativeYesYesExample: [CG, TN]
clearcast_noteStringSpecifies the show, actor, and other data about the show in which your ad cannot appear. Used by traffickers to set appropriate targeting manually.YesYes
renditionsList of RenditionsRenditions of the creativeYesYesIncluded 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.
messagesList of MessagesAny warnings or errors that occurred when processing or updating a creativeN/A (not createable)No
tv_vod_object_idStringFor creating TV VOD creatives in specific integrationsYesYesNot included in GET.

Networks who use ClearCast often use a TV VOD Object ID.
tv_vod_object_typeStringFor creating TV VOD creatives in specific integrationsYesYesNot included in GET.

Networks who use ClearCast often use a TV VOD Object ID.
tag_typeStringCan be provided along with the VAST url to indicate the VAST tag versionYesYes
tag_type_idIDCan be provided along with the VAST url to indicate the VAST tag versionYesYes

Message Object

FieldNameDescriptionComments
typeStringType of message: error or warningOnly applies to GET/LIST
contentStringInformational messageOnly applies to GET/LIST

Rendition Object

ParameterTypeDescriptionOptional for Create?Updatable?Included in GET?Comments
idIntegerCreative rendition's MRM ID.N/A (Not Creatable)NoYes
statusString, EnumCreative Rendition's status:


  • ACTIVE
  • INACTIVE
N/A (Not Creatable)NoYes
created_atString, TimestampDate and time at which the creative rendition is created. For example, 2017-09-28T06:05:46.000ZN/A (Not Creatable)NoYes
updated_atString, TimestampDate and time at which the creative rendition is created. For example, 2017-09-28T06:05:46.000ZN/A (Not Creatable)NoYes
uriStringURI of the renditionYes (Either uri or content must be present.)YesYesThe URI used to traffic the creative rendition. It could be the URI of a video/image, a VAST URL, or a VOD URI.
cdn_providerStringThe 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)NoYesCan 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_locationsList of media_location objectsAdditional 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.YesYesYesThis is only available in particular networks that have the appropriate configuration. Contact your account team for more information.
contentStringApply to tag code only.Yes (Either uri or content must be present.)YesYes
external_idStringExternal ID of the rendition.YesYesYesExternal 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_idStringThe external identification code for the IP-based source of the rendition.YesYesYesThis field is only used in specific integrations, such as linear addressable.
content_typeStringContent type of the rendition. The default content type is auto.YesYesYesBy 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.
widthIntegerWidth of the creative, in pixelsYesYesYesAutomatically detected by default. Provided widths take precedence over those automatically detected
heightIntegerHeight of the creative, in pixelsYesYesYesAuto detected by default. Any provided value takes precedence.
bitrateIntegerBitrate of the creative, if applicableYesYesYesAutomatically detected by default. Provided values take precedence over those automatically detected.
qualityString, EnumQuality of the media (case insensitive):
  • HD
  • SD
  • TITLE
  • 1080i
YesYesYesThis parameter is required for VOD media types.

It usually only applies to Linear and VOD media types.
device_pixel_ratioFloatApplicable to images onlyYesYesYesThe 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.
fpsFloatFrames per second. Applicable to videos onlyYesYesYesAuto detected by default. Any provided value takes precedence.
api_interfaceString, EnumCreative's API interface, e.g., VPAID.YesYesYesValid values (case insensitive):
  • VPAID
  • clickTag
  • youtube<
  • fwoverlay
  • scripps<
  • MRAID-1.0<
  • MRAID-2.0
  • brightline<
  • innovid
  • innovid-truex
  • <None(default)
https_compatibilityString, Enum
  • BOTH
  • HTTP
  • HTTPS
YesYesYesAuto detected by default. Provided values take precedence over those automatically detecteds.
preferenceInt, Enum
  • -10
  • 5
  • 0
  • 5
  • 10
YesYesYes
  • 0 by default
  • -10 means strongly biased against
  • 10 means strongly preferred
transcode_profile_idsList of IntegersApply transcoding on this mediaYesYesNoList 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_idList of IntegersUsed in the response to to indicate the transcode profile IDs that were used to generate the renditionNoNoYes
ad_asset_store_statusesArrayArray of ad_asset_store_status objects.

See Ad_asset_store_status Object.
YesYesYesThe 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_idIntegerLinks a rendition with provided Operator FreeWheel network ID.Not required

Ad Asset Store Status Object

FieldTypeRequired?Notes
idintYes

Either tag or id must be present in the request.
tagstringYes

Either tag or id must be present in the request.
statusenum:
  • AVAILABLE
  • UNAVAILABLE
YesFor 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 NameTypeDescriptionOptional?Sample
nameStringName of the parameter.Nogender
valueStringValue of the parameter.Yesm

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 NameTypeDescriptionOptional?Included in GET?
uriStringThe Uniform Resource Indentifier (URI) addressNoYes
cdn_providerStringThe Content Delivery Network (CDN) provider identifier. If provided, it must be a configured CDN provider in this network.YesYes
content_typeStringContent type of the media. In rare cases, the content type of the additional media is different from the one specified in rendition.uri.YesYes

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 NameTypeDescriptionOptional?
idStringUniversal identifier of the creative. If you provide this, you must also include registry.No
registryString, EnumAuthority of registration of the universal ID, one of Ad-ID, Clearcast, and Pub-ID (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'"