Bidders - Creative service

Xandr works with members who care deeply about brand and reputation. For this reason, we are careful to ensure that the advertisements (creatives) that pass through our system are acceptable to all parties. For quality assurance, all creatives that serve on third-party inventory must be pre-registered using the Creative Service.

  • Creatives are identified by their media_url (either a third-party adserver URL or a Content Delivery Network URL for a flash/GIF file).
  • We will check media_urls on a regular basis. If a file disappears, the creative will be treated as unaudited.
  • An audit notify request will be sent to the audit_notify_uri handler for each creative whose audit status has changed.
  • Uploading malware or deceptive creatives or purposely mislabeling creatives is absolutely prohibited.
  • It is highly recommended to configure your member (see the Member Service) to receive emails when:
    • The creative is audited (by configuring the audit_notify_email field in the Member Service.)
    • The creative has been scanned by Sherlock (by configuring the sherlock_notify_email in the Member Service.)

Note

Expired Creative Policy

When a creative (1) has not run and (2) has not been modified for 15 consecutive days, then it will be automatically marked expired ("is_expired": true) and will not serve on any inventory. Creatives will be automatically reactivated if your bidder resumes bidding with the creative.

Permissions:

  • Only admin can change audit_status field.
  • Creatives that are modified after they've been audited will return to an pending audit status.

REST API

HTTP method End point Description
DELETE https://api.adnxs.com/creative/MEMBER_ID?id=CREATIVE_ID Delete a creative.
GET https://api.adnxs.com/creative/MEMBER_ID
https://api.adnxs.com/creative/MEMBER_ID?num_elements=X&start_element=Y&min_last_activity=Z&sort=id.asc
View all of a member's creatives.
Note: If you have more than 100 creatives for a member, please use the num_elements and start_element parameters discussed below.

To see a specific number and range of creatives for a member. X is the number of elements to be returned. This should be 100 or lower. Y is the first element of the X elements to be returned. The first element is 0. If you use num_elements, you must also specify the start_element. To retrieve unique paginated results use the parameter &sort=id.asc as shown below. You may also specify min_last_activity=Z as a filter. Z must be in the form YYYY-MM-DD.
GET https://api.adnxs.com/creative/MEMBER_ID/CREATIVE_ID https://api.adnxs.com/creative?member_id=MEMBER_ID&id=CREATIVE_ID1,CREATIVE_ID2,CREATIVE_ID3 https://api.adnxs.com/creative?member_id=MEMBER_ID&code=CODE View a specific creative.
POST https://api.adnxs.com/creative/MEMBER_ID (creative JSON) Add a new creative.
PUT https://api.adnxs.com/creative-macro-check?include_tests=1 (replace_pattern_in_content_url JSON) Modify an existing creative.
PUT https://api.adnxs.com/creative/MEMBER_ID/CREATIVE_ID (creative JSON) https://api.adnxs.com/creative/MEMBER_ID?code=CODE

JSON structure

Field Set By Required Type Description
active internal no Boolean Read-only. The current state of the creative.
added_by_bidder internal no int The ID of the bidder that added this creative.
adservers internal no array of objects Read-only. The ad servers that deliver the creative or are called for data collection purposes during the delivery of the creative.
adx_audit internal no object Read only. This object contains information about the status and feedback related to the Google Ad Exchange audit of the creative. Information about whether or not a creative has been approved is returned in the audit_status field.
allow_audit client no Boolean Set to true if you would like to opt the creative into the audit process.
allow_ssl_audit client no Boolean If true, the creative will be submitted for secure (https) auditing. If false, the creative will not be submitted. If true, either media_url_secure or content_secure is required as well.
Default: false
audit_feedback internal no string If the creative has failed the creative audit for Xandr, this includes the audit team's reasoning.
audit_status audit team and client no enum ('no_audit','pending','rejected','unauditable', 'audited') The status of the audit. This field is set by the Xandr creative auditing team. A creative that does not have audit_status "audited" may be resubmitted for audit by setting the audit_status of the creative to "pending."
backup_upload_status Deprecated.
brand client no object Contains the id of the brand of the company advertising the creative, the name, and the category_id. Will be audited.
Tip: To return category_name as well, pass show_category_name=true in the query string of your call.
brand_id client no int The id of the brand of the company advertising the creative.
campaign client no string(50) The (optional) name of the campaign for this creative - used for reporting/management purposes.
categories audit team no List of ints IDs of categories associated with the creative - see Category Service. For GET, these are only returned if you use the flag attributes=true in the request URL.
click_action no no string The action that the device should take when the creative is clicked. Currently, this field will be set to the only supported click action, "click-to-web"
Default: click-to-web
click_target no no string The target of the click_action. For click-to-web, this is the click_url of the creative. click_url will eventually be deprecated in favor of this field.
click_trackers Deprecated.
click_url client yes (When creative.format is image) string(1000) Does not work for Bidder clients.
code client no string (100) The member code of the creative; used for external ID mapping purposes only (see Incoming Bid Response from Bidders).
content client no (if media_url exists) text The raw javascript or html content of the creative used instead of a media_url.
content_secure client no (if media_url_secure exists) text Javascript or HTML content when "format" is "raw-js" or "iframe-html" served on a secure ad call.
created_on internal no timestamp The timestamp when the creative was originally uploaded to Xandr
creative_upload_status Deprecated.
description no string (400) Optional description associated with the creative.
filter Deprecated.
flash_backup_url no string Backup for flash format creatives, which will be served if the user's browser doesn't support flash.
flash_click_variable client no string For flash creatives only. Attempting to POST or PUT to this field for non-flash creatives is not enabled. This is the name of the Flash clickTAG variable into which Xandr will insert a click tracking URL (if click tracking is enabled) that will be followed when the user clicks on the creative. See Adobe's designer's guide on how to set up a Flash file to use the clickTAG variable.
format Deprecated.
height client yes int The height of the creative in pixels.
id internal yes (on update) int The ID of the creative; used for internal matching purposes only.
impression_trackers Deprecated.
is_expired internal no boolean Indicates whether the creative has been served or modified in the past 15 days.
is_prohibited internal no boolean True if the Xandr internal auditing system has detected malicious behavior while analyzing the creative. If True, this creative will not be eligible to serve.
is_suspicious internal no boolean True if the Xandr internal auditing system has detected suspect behavior while analyzing the creative. If True, this creative will not be eligible to serve.
language_id audit team no int ID of the creative's language - see Language service
last_activity internal no timestamp The date and time when the creative was last modified. Timezone is UTC. Read Only.
last_checked internal no timestamp The timestamp that the URL was last checked for existence.
media_subtypes Deprecated.
media_url client no (if content exists) string(1000) The URL of the creative - can be image, flash, html, javascript. URL must exist and should be on a CDN or equivalent.
media_url_secure client no (if content_secure exists) string(1000) The URL of the secure (https) creative - can be image, flash, HTML, javascript to be served on a secure ad call. URL must exist and should be on a CDN or equivalent.
member_id client no int The ID of the member this creative belongs to. This is specified in the URI of the API call and does not need to also be in the JSON.
mobile client no object Information needed for mobile creatives to pass the creative audit. See Mobile below.
native Deprecated.
native_attribute client yes (required for native ads with template 39461) object This is the native object that contains elements required for native ads. For more information, see the description of the Native Attribute object below.
no_iframes Deprecated.
no_iframes Deprecated.
not_found internal no boolean How many times the URL has failed to load. After a certain number of checks, the creative will deactivate.
original_content internal no string This field is for reference only. When a tag with third party content is uploaded to Xandr, the original content uploaded with the creative will be stored in this field.
Default:
Required on: POST when submitting as type raw-html.
original_content_secure internal no string See original_content. This is the secure version of this content.
passed_sherlock_audit internal no boolean Indicates whether the creative has been recently checked by the Xandr automated creative auditing system ("Sherlock").
pixel_type Deprecated. Please use the pixels field instead.
pixel_url Deprecated. Please use the pixels field instead.
pixel_url_secure Deprecated. Please use the pixels field instead.
pixels client no array of objects The pixels to serve with the creative. They can be for external impression tracking, external click tracking, or other purposes, such as adding the AdChoices icon to a creative. See Pixels below for more details.
placement client no string(50) The (optional) name of the placement for this creative - used for reporting/management purposes.
pop_values Deprecated.
segments client no array A list of segments that a user will be added to upon viewing or clicking on this creative. For more information, see Segments below. Example: "segments": [ { "id": 11111, "action": "add_on_view" }, { "id": 22222, "action": "add_on_click" } ]
size_in_bytes internal no int The size of the media file in bytes.
sla client no integer The target timeframe when requesting a platform audit. A value of 0 is standard, 2 is priority/rush. Default is 0.
Note: When requesting a standard audit, the api will populate this field with a value of null.
ssl_status audit team no enum('disabled','pending','approved','failed') Only creatives with ssl_status = approved will be eligible to serve on secure inventory. Note: If a creative fails the ssl Sherlock audit, you can submit it for a retest (once you've fixed the downstream non-secure content) by changing this field to "pending".
Default: 'disabled'
state internal no enum The state of the creative. Possible values are "active" or "inactive"
status client no object The status of the creative describing if the creative is ready to serve. See Status below for details.
technical_attributes audit team no List of ints IDs of technical attributes associated with the creative - see Technical Attribute Service. For GET, these are only returned if you use the flag attributes=true in the request URL.
template client yes object The creative template (ex.: template_id 6 ) for the creative's format and media type (i.e., flash and expandable). The template includes code to control how the creative renders on web pages. For more details, see Creative Template below.
Warning: When using a template for the "raw-html" format (HTML that will not be served in an iFrame), everything in the content field must be escaped (quotes, slashes, etc.,) and wrapped in a document.write(); statement. This is necessary to deliver the content to the page Default: POST
text_description client yes, only if format is text string up to 70 characters The lower line of text displayed in a text creative
text_display_url client yes, only if format is text string up to 35 characters The readable URL displayed in a text creative
text_title client yes, only if format is text string up to 25 characters The top line of text displayed in a text creative
track_clicks Deprecated.
track_clicks Deprecated.
video_attribute client no object Attributes for third-party in-stream (VAST) video creatives. See Video Attribute below for more details.
width client yes int The width of the creative in pixels.

Mobile

Field Type Description
alternative_landing_page_url string An alternative landing page URL that can be viewed in a desktop browser for creatives that have a landing page targeted to a specific device, operating system, or carrier.
Warning: You must provide an auditable URL in order for your creative to pass auditing.

Audio

Field Type Description
click_target string The target of the click_action, which is the action that the device should take when the creative is clicked. Enter a URL that our audit team can use to verify the brand and attributes of your audio creative. Ensure that the site the URL points to is in the same language as the audio. This URL is used only for auditing purposes.
Warning: You must provide an auditable URL in order for your creative to pass auditing.

Video attribute

The template id for video_attribute is 6439 - Video: Standard VAST (also accepts VPAID), and the object includes the following fields:

Note

Audio The video attribute object is also used to create audio creatives. The template id for audio is 38745 - Xandr Audio Template (VAST). Both XML-urls and audio file urls are accepted.

VAST check. When adding a third party VAST or VPAID video creative, a series of checks are performed on the XML. There are different outputs you may see and corrective action that can be taken. See VAST Check for details.

Field Type Description
duration_ms double The duration, in milliseconds, of the in-stream (VAST) video creative. This must be greater than 0.
is_skippable boolean If true, the in-stream (VAST) video creative is skippable. Only third-party skippable VAST video creatives are supported; therefore, when is_skippable is true, is_hosted must be false.
wrapper object The VAST document wrapper that contains the elements array and the trackers array.

Video attribute wrapper

The wrapper object contains the following fields:

Field Type Description
elements array Elements of the VAST wrapper.
secure_url string Secure URL of the VAST document.
url string URL of the VAST document.

Video attribute wrapper element

The elements array contains the following fields:

At least one element must be specified.

Field Type Description
trackers array VAST event trackers.
type string Read only. Type of element. Possible value: "linear"
vast_element_type_id int VAST element ID. Possible value: 1: linear

Video attribute event trackers

You can drop pixels on every event that we track in reporting (see vast_event_type_id below). Add the pixel(s) as trackers on the creative. The trackers array contains the following fields:

Field Type Description
event_type string Read only. The type of event corresponding to vast_event_type_id.
is_segment_pixel boolean Defines the pixel as a segment pixel, and ensures the userid for that event is added to segment regardless of device type. Default value = false. Where this is set to true, the url must be configured in the standard format: https://ib.adnxs.com/seg?add=segmentID, otherwise you will receive an error.
name string The name of the event tracker.
secure_url string The secure URL of the event tracker.
url string The URL of the event tracker.
vast_event_type_id int The ID of the VAST event. Possible values:
- 1: service
- 2: start
- 3: skip
- 4: error
- 5: first_quartile
- 6: midpoint
- 7 : third_quartile
- 8: completion
- 9: impression
- 10: click

Creative template

You can use the Creative Template Service to view all rendering templates that can be assigned to creatives.

Field Type Description
id int The ID of the creative template.

Here are standard template ids for the most common creative formats.

ID Format Name
1 url-html Standard Banner
2 url-js Standard Banner
3 flash Standard Banner
4 image Standard Banner
5 raw-js Standard Banner
6 raw-html Standard Banner
7 iframe-html Standard Banner
8 url-xml In-Banner Video
9 url-html Popup
10 url-js Popup
11 flash Popup
12 image Popup
13 raw-js Popup
14 raw-html Popup
15 iframe-html Popup
6439 VAST, VPAID Standard VAST

For Expandable creatives, please see the Expandables and Rich Media page for more details.

Status

Name Type Description
user_ready boolean The status of the creative set by the user describing if the creative is ready to serve or not. Possible values: "true" or "false"
Default: true
hosted_assets_association_complete boolean / null Read-only. Status of the creative uploaded by Xandr's internal systems. Possible values: "true" or "false" for hosted creatives and "null" for third-party creatives.

Native attribute

The native_attribute object contains the following fields. For more information, see Adding a native creative in the Examples .

Field Type Description
data_assets array of objects Attributes of the native creative. See Data Assets below for more details.
image_assets array of objects Attributes of each individual image. See Image Assets for more details.
image_trackers array of objects A list of third-party impression tracking URLs intended to be used with native creatives. For more information, see Image Trackers below.
javascript_trackers array of objects A list of third-party impression tracking URLs. For more information, see Javascript Trackers below. All OpenRTB and Xandr macros are supported for this field except for ${AUCTION_PRICE} and ${PRICE_PAID}.
link object URLs associated with the native creative. See Link below for details.
privacy_url string If support was indicated in the request, URL of a page informing the user about the buyer’s targeting activity. Xandr does not provide a default privacy link.
video_assets array of objects Attributes of the video assets. See Video Assets for more details.

Note

Please use image_trackers for impression trackers and link.trackers for click trackers.

The link object contains the landing page URL, fallback URL and Trackers associated with the native creative. The link object is required for native attribute.

The link object includes the following fields:

Field Type Description
fallback_url string A backup url if the main deeplink url is not supported.
trackers array of objects A list of third-party tracking URLs intended to be used with native creatives. This should be an array of click trackers. See Trackers below for more details.
url string The landing page of the native creative.
Required On : POST,PUT

Note

All native creatives are submitted for secure auditing by default.

  • If the secure url has not been specified for any tracker (image trackers, javascript trackers, and creative image asset trackers), secure audit is disabled for that creative.

  • If the secure URL has not been specified, but URL is prefixed wit `https`, the creative will be submitted for secure audit.

Trackers

Name Type Description
url string A third-party impression tracking URL. This should contain your impression tracker.
url_secure string A third-party impression tracking URL (that uses SSL). This should contain your impression tracker.

Image trackers

Name Type Description
url string A third-party impression tracking URL. This should contain your impression tracker.
url_secure string A third-party impression tracking URL (that uses SSL). This should contain your impression tracker.

Javascript trackers

Name Type Description
url string A third-party javascript tracking URL.
url_secure string A third-party javascript tracking URL (that uses SSL)

Data assets

The data_assets object includes the following fields:

Field Type Description
data_type string The asset type for the native creative. Possible values:
- sponsored_by
- title
- description
- rating
- call_to_action
- display_url
- likes
- downloads
- price
- sale_price
- phone
- address
- additional_description
value string The description of the data_type asset that you have specified.
- "sponsored_by" - brand name of the sponsor
- "title" - title of the creative
- "description" - description of the product or service being advertised
- "rating" - rating of the product being offered
- "call_to_action" - suggested action for next step
- "display_url" - the URL you would like displayed
- "likes" - social media likes
- "downloads" - number downloads/installs of this product
- "price" - Price for product / app / in-app purchase
- "sale_price" - sale price that can be used together with price to indicate a discounted price
- "phone" - phone number "address" - address
- "additional_description" - the longer version of your ad's description

Image assets

The image_assets object includes the following fields:

Field Type Description
creative_asset_image object The object containing details of the creative asset. Required for third-party native creatives. See details in Creative Asset Image below.
image_type string The format of the image. Possible values include:
- icon_image
- main_image

Creative asset image

Field Type Description
height int The height of the image. Value must be > 0
url string The url of the image.
url_secure string The secure url of the image.
width int The width of the image. Value must be > 0

Video assets

The video_assets object includes the following fields:

Field Type Description
video_creative_id int The Xandr creative id of the video asset associated with the native creative. Note: A separate video creative must be registered first before registering a native video creative.

Pixels

You use this array to add up to five Xandr-approved and custom pixels to a creative.

Xandr-approved pixels are from trusted, commonly-used providers. Most of them do not cause the creative to be resubmitted for audit. To add a Xandr-approved pixel to a creative, you need to pass only the pixel_template_id and the number of params that the pixel requires. See the "Adding a Xandr-approved pixel to a creative" example below for further guidance. Note that you can use the Pixel Template Service to get information about these pixels, including whether or not they trigger re-audit.

Custom pixels are defined by you and do cause the creative to be resubmitted for audit. To add a custom pixel, you need to pass only the format and, depending on the format, the content or url. See the Adding a custom pixel to a creative example below for further guidance.

Field Type Description
content string (255) If the pixel format is "raw-js", the HTML or JavaScript content to serve with the creative.
format enum The format of the pixel. Possible values: "raw-js", "url-html", "url-js", or "url-image".
id int Read-only. The ID of the pixel.
param_1 string For Xandr-approved pixel: The value for the first parameter in the pixel content or URL. To find out how many parameters are required for a Xandr-approved pixel, use the [Pixel Template Service](pixel-template-service .md).
param_2 string For Xandr-approved pixel: The value for the second parameter in the pixel content or URL.
param_3 string For Xandr-approved pixel: The value for the third parameter in the pixel content or URL.
param_4 string For Xandr-approved pixel: The value for the fourth parameter in the pixel content or URL.
param_5 string For Xandr-approved pixel: The value for the fifth parameter in the pixel content or URL.
pixel_template_id int The ID of the Xandr-approved pixel. You can use the Pixel Template Service to get this ID.
url string (255) If the pixel format is "url-html", "url-js", "url-image", or "raw-url", the URL of the HTML, JavaScript, or Image pixel to serve with the creative.

Segments

These fields will be included in the Segments array:

Field Type Description
action enum The action taken by users that will add them to the segment. Possible values: 'add on view' or 'add on click'.
Required On: POST, PUT
id int The ID of the segment.
Required On: POST, PUT
name string The segment's name.
segment_id int The ID of the segment. This field contains the same information as the id field.
Field Type Description
landing_page_url string The landing page URL entered by the Xandr administrator during the audit process.
Default: null
thirdparty_campaign_id int Read-only. If the campaign has been synced with a third-party, this is the ID in the third-party system.
Default: null
thirdparty_creative_id int Read-only. If the creative has been synced with a third-party such as Yahoo Ad Exchange, this is the ID in the third-party system.If an issue arises with the sync, you can reset thirdparty_creative_id to null with the following PUT call: $ curl -b cookies -c cookies -X PUT -d '{"creative":{}}' 'https://api.adnxs.com/creative/MEMBER_ID/CREATIVE_ID&reset_thirdparty_creative_id' Default: null

Changes that cause Re-Audit

Once a creative has passed Xandr audit (audit_status is "audited"), changing any of the following fields causes the creative to be resubmitted for audit (allow_audit is set to "pending"):

  • width
  • height
  • content
  • media_url
  • click_url
  • template
  • custom_macros
  • media_subtypes
  • language
  • categories
  • technical_attributes
  • brand_id
  • pixel_url
  • pixels (if adding or removing a custom pixel or a Xandr-approved pixel)
  • text_title (if text creative)
  • text_description (if text creative)
  • text_display_url (if text creative)
  • pop_window_maximize (if pop creative)
  • pop_is_tag_initiated (if pop creative and changing from false to true)
  • video_attribute
  • media_assets

Also, if the audit_status is "no_audit", changing allow_audit from "false" to "true" causes the creative to be resubmitted for Xandr audit.

Examples

Adding a creative

$ cat creative
{
 "creative":
  {     "width" : 300,
        "height" : 250,
        "media_url" : "https://ad.doubleclick.net/adi/ABC.Advertising.com/DEF.40;sz=300x250;click0=",
        "template":{
           "id": 1 
        }
  }
}
$ curl -b cookies -c cookies -X POST -d @creative.json "https://api.adnxs.com/creative/5"
{
  "response": {
    "status": "OK",
    "count": 1,
    "id": 703355,
    "creative": {
      "id": 703355,
      "active": true,
      "member_id": 5,
      "description": null,
      "code": null,
      "code2": null,
      "media_url": "https:\/\/ad.doubleclick.net\/adi\/ABC.Advertising.com\/DEF.40;sz=300x250;click0=",
      "audit_status": "pending",
      "allow_audit": true,
      "size_in_bytes": 0,
      "last_checked": null,
      "not_found": 0,
      "added_by_bidder": null,
      "campaign": null,
      "placement": null,
      "format": null,
      "width": 300,
      "height": 250,
      "click_url": null,
      "landing_page_url": null,
      "flash_click_variable": null,
      "no_iframes": false,
      "content": null,
      "original_content": null,
      "track_clicks": true,
      "audit_feedback": null,
      "created_on": "2013-10-31 21:17:17",
      "flash_backup_url": null,
      "is_self_audited": false,
      "file_name": null,
      "is_prohibited": false,
      "last_activity": "2013-10-31 21:17:17",
      "passed_sherlock_audit": true,
      "is_expired": false,
      "creative_upload_status": null,
      "backup_upload_status": null,
      "filter": null,
      "is_suspicious": false,
      "suspicious_activity_timestamp": null,
      "media_subtypes": [
        "banner"
      ],
      "no_adservers": false,
      "is_blanking": false,
      "is_rotating": false,
      "text_title": null,
      "text_description": null,
      "text_display_url": null,
      "click_action": "click-to-web",
      "click_target": null,
      "ssl_status": "disabled",
      "allow_ssl_audit": false,
      "media_url_secure": null,
      "content_secure": null,
      "original_content_secure": null,
      "flash_backup_url_secure": null,
      "is_hosted": false,
      "content_source": "standard",
      "thirdparty_creative_id": null,
      "thirdparty_campaign_id": null,
      "custom_request_template": null,
      "brand": {
        "id": 1,
        "name": "Unknown",
        "category_id": 8
      },
      "language": {
        "id": 1,
        "name": "English"
      },
      "template": {
        "id": 1
      },
      "segments": null,
      "pixels": null,
      "mobile": null,
      "brand_id": 1,
      "sla": "0",
      "sla_eta": "2013-11-01 11:18:17"
    }
  }
}

View the creative that was added

$ curl -b cookies -c cookies 'https://api.adnxs.com/creative/5/6'
{
   "response":{
        "status":"OK",
        "creative":{
                "id": 6,
                "active": true,
                "member_id": 5,
                "description": null,
                "code": null,
                "brand_id": 43,
                "media_url": "https:\/\/ad.doubleclick.net\/adi\/ABC.Advertising.com\/DEF.40;sz=300x250;click0=",
                "audit_status": "pending",
                "allow_audit": true,
                "size_in_bytes": 18467,
                "last_checked": null,
                "not_found": false,
                "added_by_bidder": 14,
                "campaign": null,
                "placement": null,
                "format": "url-html",
                "width": 300,
                "height": 250,
                "click_url": "",
                "flash_click_variable": null,
                "pixel_url": "",
                "no_iframes": false,
                "content": null,
                "original_content": null,
                "track_clicks": true,
                "pixel_type": "image",
                "audit_feedback": null,
                "created_on": "0000-00-00 00:00:00",
                "flash_backup_url": null,
                                "is_self_audited": false,
                "last_activity": "2008-08-26 05:41:04",
                                "passed_sherlock_audit": true,
                                "is_expired": false,
                                "creative_upload_status": null,
                                "backup_upload_status": null,
                        "filter": null,
                        "is_suspicious": false,
                        "suspicious_activity_timestamp": null,
                        "media_subtypes": [
                                "banner"
                        ],
                        "no_adservers": false,
                        "is_blanking": false,
                        "is_rotating": false,
                        "text_title": null,
                        "text_description": null,
                        "text_display_url": null,
                        "click_action": "click-to-web",
                        "click_target": null,
                        "ssl_status": "disabled",
                        "allow_ssl_audit": false,
                        "media_url_secure": null,
                        "content_secure": null,
                        "original_content_secure": null,
                        "flash_backup_url_secure": null,
                        "is_hosted": false,
                        "content_source": "standard",
                        "thirdparty_creative_id": null,
                        "thirdparty_campaign_id": null,
                        "custom_request_template": null,
                        "brand": {
                                "id": 5,
                                "name": "Adobe",
                                "category_id": 27
                        },
                        "language": {
                                "id": 16,
                                "name": "Norwegian"
                        },
                        "template": {
                                "id": 1
                                },
                        "segments": null,
                        "pixels": null,
                        "mobile": null,
                        "brand_id": 5,
                        "sla": null,
                        "sla_eta": null
                        }
  }
}

Modifying a creative

If you then decide to add a campaign name "Triple Play - October 2008" to the creative for reporting purposes:

$ cat creative_mod
{"creative" : {
        "campaign":"Triple Play - October 2008"
        }
}
$ curl -b cookies -c cookies -X PUT --data-binary @creative_mod 'https://api.adnxs.com/creative/5/6'
{
   "response":{
        "status":"OK",
        "id":6
}}

And then to view the change:

$ curl -b cookies -c cookies 'https://api.adnxs.com/creative/5/6'
{
    "response": {
        "creatives": [
            {
                "id": 6,
                "active": true,
                "member_id": 5,
                "description": null,
                "code": null,
                "brand_id": 43,
                "media_url": "https:\/\/ad.doubleclick.net\/adi\/ABC.Advertising.com\/DEF.40;sz=300x250;click0=",
                "audit_status": "pending",
                "allow_audit": true,
                "size_in_bytes": 18467,
                "last_checked": null,
                "not_found": 0,
                "added_by_bidder": 14,
                "campaign": "Triple Play - October 2008",
                "placement": null,
                "format": "url-html",
                "width": 300,
                "height": 250,
                "click_url": "",
                "flash_click_variable": null,
                "pixel_url": "",
                "no_iframes": false,
                "content": null,
                "original_content": null,
                "track_clicks": true,
                "pixel_type": "image",
                "audit_feedback": null,
                "created_on": "2008-08-26 05:41:04",
                "flash_backup_url": null,
                "last_activity": "2008-09-14 06:20:04"
            }
        ],
        "status": "OK"
    }
}

Submit a creative for audit

If you would like to request an audit for a creative it must be active and have the allow_audit field set to true:

$ cat creative_mod
{"creative" : {
        "audit_status": "pending",
                "allow_audit" : true
        }
}
$ curl -b cookies -c cookies -X PUT --data-binary @creative_mod 'https://api.adnxs.com/creative/5/6'
{
   "response":{
        "status":"OK",
        "id":6
}}

Unexpire a creative and resubmit for audit

If a creative has expired, you can update it with these settings to set the status to "pending" and resubmit the creative for audit. Note that as of November 2017, creatives that have been expired for over one year will be permanently deleted. See "Expired Creative Policy" at the top of this page for more information.

$ cat unexpire_creative
{
    "creative": {
    "audit_status": "pending",
    "allow_audit": true,
    "status": {
        "user_ready": true
        }
    }
}

Submit a mobile creative for audit

This example uses the new mobile object:

$ cat mobile_creative
{
    "creative" : {
        "audit_status": "pending",
        "allow_audit" : true,
        "mobile" : {
                 "alternative_landing_page_url" : "https://..."
        }
    }
}
$ curl -b cookies -c cookies -X PUT --data-binary @creative_mod 'https://api.adnxs.com/creative/5/6'
{
   "response":{
        "status":"OK",
        "id":6
   }
}

Submit a creative for priority audit

If you would like to submit for a priority audit. Set "sla" to 2 (a value of 1 is not currently used). You will be charged a priority audit fee per your contract.

$ cat creative_mod
{"creative" : {
        "audit_status": "pending",
        "sla": 2
        }
}
$ curl -b cookies -c cookies -X PUT --data-binary @creative_mod 'https://api.adnxs.com/creative/5/6'
{
   "response":{
        "status":"OK",
        "id":6
}}

View the estimated audit time for your creative ('sla_eta')

$ curl -b cookies -c cookies 'https://api.adnxs.com/creative/5/6'
{
    "response": {
        "creatives": [
            {
                "id": 6,
                ...
                "audit_status": "pending",
                "sla": 0,
                "sla_eta": "2011-05-21 05:33:06"
            }
        ],
        "status": "OK"
    }
}

Adding a creative (third-party HTML tag)

$ cat creative
{
 "creative":
  { "width" : 300,
    "height" : 250,
    "media_url" : "https://ad.doubleclick.net/adi/ABC.Advertising.com/DEF.40;sz=300x250;click0=",
    "template":{
       "id": 1
    }
  }
}                       
$ curl -b cookies -c cookies -X POST -d @creative.json 'https://api.sand-08.adnxs.net/creative?member_id=1282'   
  
{
    "response":{
        "status":"OK",
        "count":1,
        "start_element":null,
        "num_elements":null,
        "id":816447,
        "creative":{
            "id":816447,
            "active":true,
            "member_id":1282,
            "description":null,
            "code":null,
            "code2":null,
            "media_url":"https:\/\/ad.dblclick.net\/adi\/ABC.Advertising.com\/DEF.40;sz=300x250;click0=",
            "audit_status":"pending",
            "allow_audit":true,
            "size_in_bytes":0,
            "last_checked":null,
            "not_found":0,
            "added_by_bidder":null,
            "campaign":null,
            "placement":null,
            "format":null,
            "width":300,
            "height":250,
            "click_url":null,
            "landing_page_url":null,
            "flash_click_variable":null,
            "no_iframes":false,
            "content":null,
            "original_content":null,
            "track_clicks":true,
            "audit_feedback":null,
            "created_on":"2014-01-24 16:02:31",
            "flash_backup_url":null,
            "is_self_audited":false,
            "file_name":null,
            "is_prohibited":false,
            "last_activity":"2014-01-24 16:02:31",
            "passed_sherlock_audit":true,
            "is_expired":false,
            "creative_upload_status":null,
            "backup_upload_status":null,
            "filter":null,
            "is_suspicious":false,
            "suspicious_activity_timestamp":null,
            "media_subtypes":[
                "banner"
            ],
            "no_adservers":false,
            "is_blanking":false,
            "is_rotating":false,
            "text_title":null,
            "text_description":null,
            "text_display_url":null,
            "click_action":"click-to-web",
            "click_target":null,
            "ssl_status":"disabled",
            "allow_ssl_audit":false,
            "media_url_secure":null,
            "content_secure":null,
            "original_content_secure":null,
            "flash_backup_url_secure":null,
            "is_hosted":false,
            "content_source":"standard",
            "thirdparty_creative_id":null,
            "thirdparty_campaign_id":null,
            "custom_request_template":null,
            "brand":{
                "id":1,
                "name":"Unknown",
                "category_id":8
            },
            "language":{
                "id":1,
                "name":"English"
            },
            "template":{
                "id":1
            },
            "segments":null,
            "pixels":null,
            "mobile":null,
            "brand_id":1,
            "sla":"0",
            "sla_eta":"2014-01-27 00:03:31"
        }

Adding an iframe-html creative

The creative service allows for a number of different types of creatives to be created. For example, to create a creative using the format "iframe-html", you would upload the raw html that will be embedded in an iframe in the page serving the ad.

$ cat iframe-html-creative
{
   "creative" : {
        "content":"<script type=\"text/javascript\" language=\"javascript\">
                   var sample_var = 350;
                   </script>
                   <script type=\"text/javascript\" language=\"javascript\" src=\"https://sample_source.com/sample_id?ord=${CACHEBUSTER}\"</script>",
        "width":"300",
        "height":"250",
        "format":"iframe-html",
        "brand_id" : 43
        }
}
$ curl -b cookies -c cookies --data-binary @iframe-html-creative 'https://api.adnxs.com/creative/5'
{
   "response":{
        "status":"OK",
        "id":7
}}

Adding a Xandr-approved pixel to a creative

This example walks you through the process of adding the Xandr-approved Evidon AdChoices Icon pixel to a creative.

First, you need to find out the pixel_template_id and the number of parameters you must define for the pixel. You use the Pixel Template Service to get this information.

$ curl -b cookies -c cookies 'https://api.adnxs.com/pixel-template'
{
    "response": {
        "status": "OK",
        "count": 3,
        "start_element": 0,
        "num_elements": 100,
        "pixel-templates": [
            {
                "id": 1,
                "name": "Evidon AdChoices Icon",
                "format": "raw-js",
                "content": "(function() {document.write('<sc'+'ript type=\"text/javascript\"' + ((\"https:\"
                 == document.location.protocol) ? \"https://c.betrad.com\" : \"https://c.betrad.com\") +
                 '/surly.js?;ad_wxh=${CREATIVE_SIZE};coid=${P1};nid=${P2};${P3}\"></scr'+'ipt>');}());",
                "num_required_params": 2,
                "require_reaudit": false
            },
            {
                "id": 2,
                "name": "Brilig Impression Tracker",
                "format": "url-image",
                "num_required_params": 1,
                "require_reaudit": false,
                "url": "https://p.brilig.com/contact/bct?pid=${P1}&_ct=pixel&adid=${CP_ID}&action=1"
            },
            ...
        ],
        "dbg_info": {
            ...
        }
    }
}

The Evidon AdChoices Icon pixel is the first in the response. You note that id is 1. You also note that num_required_params is 2. This means that, when adding the pixel to your creative, you must provide values for {P1} and {P2} in the pixel content.

Then you create the JSON-formatted file for adding the pixel to the creative. In the file, you set pixel_template_id to 2, and you set param_1 and param_2 to the values for {P1} and {P2} in the pixel content.

Note

The pixels array will be completely overwritten with the information in this file. Therefore, if the creative already includes any pixels, be sure to specify them in the file as well.

$ cat creative_update
{
    "creative": {
        "pixels": [
            {
                "pixel_template_id": 1,
                "param_1":"12",
                "param_2":"34"
            }
        ]
    }
}

Finally, you make a PUT call to update the creative. The pixels array in the response then shows that the pixel has been added. The two parameters are defined and have been populated in the pixel content. Note that, because the Evidon AdChoices Icon pixel does not cause the creative to require re-auditing, audit_status has not be reverted to "pending".

$ curl -b cookies -c cookies -X PUT -d @creative_update 'https://api.adnxs.com/creative/3/503577'
{
    "response": {
        "status": "OK",
        "count": 1,
        "id": "503577",
        "start_element": 0,
        "num_elements": 100,
        "creative": {
            "name": null,
            "brand_id": 1,
            "media_url": "https://creative.com/300x250",
            "id": 503577,
            "code": null,
            "code2": null,
            "state": "active",
            "click_track_result": "not_tested",
            "member_id": 3,
            ...
            "audit_status": "audited",
            ...
            "pixels": [
                {
                    "id": 163,
                    "pixel_template_id": 1,
                    "param_1": "12",
                    "param_2": "34",
                    "param_3": null,
                    "param_4": null,
                    "param_5": null,
                    "format": "url-image",
                    "content": "(function() {document.write('<sc'+'ript type=\"text/javascript\"' +
                     ((\"https:\" == document.location.protocol) ? \"https://c.betrad.com\" :
                     \"https://c.betrad.com\") + '/surly.js?;ad_wxh=${CREATIVE_SIZE};coid=12;nid=34;
                     \"></scr'+'ipt>');}());"
                }
            ],
            ...
        },
        "dbg_info": {
            ...
        }
    }
}

Adding a custom pixel to a creative

In this example, the PUT request adds a custom url-js pixel to creative 503577. In the JSON-formatted file, the format is set to "url-js", and the url is set to the location of the JavaScript that you want to serve with the creative. Note in the response that audit_status is "pending"; this is because adding a custom pixel to a creative causes the creative to be resubmitted for audit.

Note

The pixels array will be completely overwritten with the information in this file. Therefore, if the creative already includes any pixels, be sure to specify them in the file as well.

$ cat creative_update
{
    "creative": {
        "pixels": [
            {
                "format": "url-js",
                "url":"https://50.16.221.228/render_js?cb=${CACHEBUSTER}&uid=${USER_ID}&ref=${REFERER_URL}
                 &campaign_id=147"
            }
        ]
    }
}
$ curl -b cookies -c cookies -X PUT -d @creative_update 'https://api.adnxs.com/creative/3/503577'
{
    "response": {
        "status": "OK",
        "count": 1,
        "id": "503577",
        "start_element": 0,
        "num_elements": 100,
        "creative": {
            "name": null,
            "brand_id": 1,
            "media_url": "https://creative.com/300x250",
            "id": 503577,
            "code": null,
            "code2": null,
            "state": "active",
            "click_track_result": "not_tested",
            "member_id": 3,
            ...
            "audit_status": "pending",
            ...
            "pixels": [
                {
                    "id": 196,
                    "pixel_template_id": null,
                    "param_1": null,
                    "param_2": null,
                    "param_3": null,
                    "param_4": null,
                    "param_5": null,
                    "format": "url-js",
                    "url": "https://50.16.221.228/render_js?cb=${CACHEBUSTER}&uid=${USER_ID}
                     &ref=${REFERER_URL}&campaign_id=147"
                }
            ],
            ...
        },
        "dbg_info": {
            ...
        }
    }
}

Add a video creative with video attribute object and wrapper

{
    "creative": {
        "id": 145,
        ...
        "template_id": 6439,
        "video_attribute": {
            "is_skippable": true,
            "duration_ms": 21000,
                        "wrapper": {
                "url": "http://www.doubleclick.net/...",
                "secure_url": "https://www.doubleclick.net/...",
                "elements": [
                    {
                                                "vast_element_type_id": 1,
                        "name": "linear",
                        "trackers": [
                            {
                                                                "name": "startTracker",
                                "vast_event_type_id": 2,
                                "url": "http://tracker.com/...",
                                "secure_url": "https://tracker.com/...",
                                                                "event_type": "start"
                            },
                                                        {
                                                                "name": "completionTracker",
                                "vast_event_type_id": 8,
                                "url": "http://tracker.com/...",
                                "secure_url": "https://tracker.com/...",
                                                                "event_type": "completion"
                            }
                        ]
                    }
                ]
            }
        }
    }
}

Adding a native creative

When adding a native creative, use template ID 39461.

cat native
{
        "creative": {
                "description": "native_test",
                "brand_id": 1,
                "media_url": "https://mediaurl.com",
                "code": "test",
                "code2": null,
                "member_id": 4,
                "state": "active",
                "template": {
                        "id": 39461
                },
                "native_attribute": {
                        "link": {
                                "url": "https://url.com",
                                "fallback_url": "https://fallback.com",
                                "trackers": [{
                                        "url": "http://url.com",
                                        "url_secure": "https://secureurl.com"
                                }]
                        },
                        "data_assets": [{
                                "data_type": "sponsored_by",
                                "value": "a value"
                        }, {
                                "data_type": "rating",
                                "value": "8"
                        }],
                        "image_assets": [{
                                "image_type": "icon_image",
                                "creative_asset_image": {
                                        "url": "http://url.com",
                                        "url_secure": "https://secureurl.com",
                                        "height": 1,
                                        "width": 1
                                }
                        }],
                        "image_trackers": [{
                                "url": "http://url.com",
                                "url_secure": "https://secureurl.com"
                        }],
                        "javascript_trackers": [{
                                "url": "http://url.com",
                                "url_secure": "https://secureurl.com"
                        }]
                },
                "thirdparty_viewability_providers": null,
                "status": {
                        "user_ready": true
                },
                "sla_eta": null
        }
}
$ curl -b cookies -c cookies -X POST -s @native 'https://api.adnxs.com/creative/4'
{
        "response": {
                "status": "OK",
                "count": 1,
                "id": 411,
                "start_element": 0,
                "num_elements": 100,
                "dbg_info": {
                        ...
                },
                "creative": {
                        "description": "native_test",
                        "brand_id": 1,
                        "media_url": "https://mediaurl.com",
                        "id": 411,
                        "code": "test",
                        "code2": null,
                        "member_id": 4,
                        "state": "active",
                        "click_track_result": "not_tested",
                        "format": "url-file",
                        "width": null,
                        "height": null,
                        "click_url": null,
                        "flash_click_variable": null,
                        "no_iframes": false,
                        "content": null,
                        "original_content": null,
                        "file_name": null,
                        "track_clicks": true,
                        "audit_status": "pending",
                        "macros": null,
                        "profile_id": null,
                        "audit_feedback": null,
                        "is_prohibited": false,
                        "is_suspicious": false,
                        "created_on": "2017-03-09 21:54:11",
                        "flash_backup_url": null,
                        "last_modified": "2017-03-09 21:54:11",
                        "is_control": false,
                        "allow_audit": true,
                        "is_expired": false,
                        "creative_upload_status": null,
                        "backup_upload_status": null,
                        "use_dynamic_click_url": false,
                        "media_subtypes": [
                                "popunder",
                                "popup",
                                "banner"
                        ],
                        "size_in_bytes": 0,
                        "is_self_audited": false,
                        "no_adservers": false,
                        "text_title": null,
                        "text_description": null,
                        "text_display_url": null,
                        "click_action": "click-to-web",
                        "click_target": null,
                        "ssl_status": "pending",
                        "allow_ssl_audit": true,
                        "media_url_secure": "https://MEDIAURL.appnexus.com",
                        "content_secure": "document.write(\\\"\\\")",
                        "original_content_secure": null,
                        "flash_backup_url_secure": null,
                        "is_hosted": false,
                        "content_source": "standard",
                        "lifetime_budget": null,
                        "lifetime_budget_imps": null,
                        "daily_budget": null,
                        "daily_budget_imps": null,
                        "enable_pacing": null,
                        "allow_safety_pacing": null,
                        "landing_page_url": null,
                        "thirdparty_creative_id": null,
                        "thirdparty_campaign_id": null,
                        "facebook_audit_status": null,
                        "facebook_audit_feedback": null,
                        "custom_request_template": null,
                        "language": {
                                "id": 1,
                                "name": "English"
                        },
                        "brand": {
                                "id": 1,
                                "name": "Unknown",
                                "category_id": null
                        },
                        "template": {
                                "id": 329,
                                "name": "native ad",
                                "media_subtype_id": 17,
                                "format_id": 11
                        },
                        "ios_ssl_audit": null,
                        "adx_audit": null,
                        "custom_macros": null,
                        "segments": null,
                        "folder": null,
                        "campaigns": null,
                        "line_items": null,
                        "competitive_brands": null,
                        "competitive_categories": null,
                        "pixels": null,
                        "mobile": null,
                        "video_attribute": null,
                        "media_assets": null,
                        "sla": null,
                        "thirdparty_pixels": null,
                        "native": null,
                        "native_attribute": {
                                "link": {
                                        "url": "https://url.com",
                                        "fallback_url": "https://fallback.com",
                                        "trackers": [{
                                                "url": "http://url.com",
                                                "url_secure": "https://secureurl.com"
                                        }]
                                },
                                "data_assets": [{
                                        "data_type": "sponsored_by",
                                        "value": "a value"
                                }, {
                                        "data_type": "rating",
                                        "value": "8"
                                }],
                                "image_assets": [{
                                        "image_type": "icon_image",
                                        "creative_asset_image": {
                                                "url": "https://vcdn.adnxs.com/sand/creative-image/ea/f5/30/28/eaf53028-e6c6-4ac0-bcbb-ce8fe14b73ab.png",
                                                "url_secure": "https://secureurl.com",
                                                "height": 12,
                                                "width": 34
                                        }
                                }],
                                "image_trackers": [{
                                        "url": "http://url.com",
                                        "url_secure": "https://secureurl.com"
                                }],
                                "javascript_trackers": [{
                                        "url": "http://url.com",
                                        "url_secure": "https://secureurl.com"
                                }]
                        },
                        "thirdparty_viewability_providers": null,
                        "status": {
                                "user_ready": true,
                        },
                        "sla_eta": null,
                        "currency": "USD",
                        "type": "standard"
                }
        }
}

Determining the Technical Atttributes assigned to your creative

Although technical attributes isn't something that can be added to the automated reports today, this can be retrieved through the Creative service in the bidder API. For more information please refer to the Technical Attribute Service

This can be accessed by adding the query string parameter "?attributes=true" as: "adnxs.com/creative/MEMBER_ID/CREATIVE_ID?attributes=true"

"technical_attributes": [
{
 "id": 2,
 "name": "Flash"
},
{
 "id": 9,
"name": "Initial Load > 40kb"
},
 {
  "id": 13,
  "name": "Banner has AdChoices Icon"
 },
 {
  "id": 15,
  "name": "Animated: 15 seconds or less"
 }
 ]

The Meta Service provides the most up to date information about interfacing with objects in our API.

Creative Macros

The impression bus supports two types of creative macros replaced in real time: pre-defined Xandrcreative macros and custom macros that can be defined by the bidder. The main difference between the two is the perspective. For example, the impression bus has no knowledge of a Campaign or an Insertion Order when a real time bid is placed, so any objects supported with a bidder's internal object model and required in a macro should be supported using custom macros.

Warning

Macro Restrictions

  • Only pre-defined Xandr macros and custom macros are supported when registering creatives.

  • DO NOT use OpenRTB macros when registering creatives. OpenRTB macros are for use only in the bid response.

  • Do not give a custom macro a name that matches the name of an OpenRTB macro.

Xandr creative macros

See Xandr Macros for a complete list of the available creative macros.

Click Tracking Example:

"media_url": "https://ad.doubleclick.net/adi/N5364.Ivillage.com/B2965815.5;sz=728x90;click0=${CLICK_URL};ord=${CACHEBUSTER}?"

Custom Macros

Using custom_macro functionality in the Bid Response, you can dynamically pass into the pre-registered creatives. For instance, if you wanted to always return a particular campaign and reporting code, you could set up your creative as follows:

{
   "creative":{
       "media_url":"https://adserver.com/imp?z=300x250;camp=${CAMPAIGN_ID};int=${INT_CODE}",
       "format":"url-html",
       "width":"300",
       "height":"250"
}}

Then, when your bidder responds to an auction, the bid response can specify the name and value of the macros to replace, by including, for example:

"custom_macros":[
{
   "name":"CAMPAIGN_ID",
   "value":"452346"
},
{
   "name":"INT_CODE",
   "value":"a352-45we-sdr3"
}]

Note

Even if the value is an integer, it must be placed within quotation marks (for example,  "42").

<iframe src="https://adserver.com/sz=300x250;camp=452346;int=a352-45we-sdr3" width=300 height=250/>