Edit

Digital Platform API - Historical reporting

Overview

Historical report is the primary analytics report in Microsoft Monetize, offering comprehensive data across a wide range of dimensions and metrics. It consolidates more than ten legacy report types, including Network Analytics, Seller Brand Review, and Seller Fill and Delivery. It reduces the number of report types a user needs to interact with, providing features to improve usability such as categorization of dimensions and metrics and comprehensive search capabilities.

Historical report is built from two datasets accessible through a single interface, with dimension and metric incompatibilities surfaced during selection. The expanded range of options provides a more detailed view of data across multiple aspects of delivery and inventory, with additional reportable dimension combinations, such as placement and device. The Historical report includes most of the data available in the legacy reporting system.

Note

This report is GA and includes data starting from October 10, 2024. Planned updates will extend its functionality to align with the Network Analytics, Seller Fill and Delivery, and Video Analytics reports. Additional , metrics, and adjustment data will be introduced in future updates.

Timing of Report Events

The Historical report enables metrics to be attributed to the hour of the originating ad request, rather than the time when each subsequent event occurs. This ensures consistency when calculating rates for events that may occur hours after the initial ad call, such as video impressions, native impressions, and conversions.

Example

In the example below, a video ad request has a 6-hour TTL, and its related events occur over several hours:

Event Event Time
Ad Request 08:00
Impression 10:00
Post-View Conversion 11:00

In the Historical report, all these events are attributed back to the 08:00 hour when the ad request was made.

Historical Report View

Hour Ad Requests Imps Post-View Conversions Fill Rate Conversion Rate
08:00 1 1 1 100% 100%

Differences Compared to Legacy Reports

Legacy reports attribute events to the actual event time. Using the same example, the legacy reporting view would look like this:

Hour Ad Requests Imps Post-View Conversions Fill Rate Conversion Rate
08:00 1 0 0 0% 0%
10:00 0 1 0 0% 0%
11:00 0 0 1 0% 0%

Because timestamps are handled differently, metric counts will not match exactly between Historical reports and legacy reports when viewed at the day or hour level. This difference is expected and reflects the underlying attribution logic.

Report mappings

Delivery Analytics and Inventory Analytics reports are consolidated into a single Historical report builder experience. This integration streamlines reporting workflows and provides expanded insights into performance and inventory that provides:

  • Consolidated reporting for comprehensive performance analysis
  • Broader coverage of metrics and dimensions
Legacy Report Name Mapped Report Name API Name
Delivery Analytics Historical Report monetize_creative_brand_analytics
Inventory Analytics Historical Report monetize_supply_analytics

Note

Coverage of dimensions and metrics is in progress. Additional fields are being added to support the deprecation of legacy report types.

Legacy reports

Legacy reports will no longer receive Microsoft Monetize data starting early 2026. Historical data will remain accessible based on each report’s standard retention period or 2 years 6 months, whichever is shorter, with some specific dimensions in the report having shorter retentions of 99 days or 14 months, mirroring retention of equivalent fields in relevant Legacy reports. These new report types automatically include data for all impression types except for 7=RTB (a buying transaction on supply from another seat to your own) for Microsoft Monetize sellers.

Note

  • Communication will be provided in advance to support the transition process.
  • Reporting for Microsoft Invest and External SSPs is not included in these datasets.

Legacy report types

Network report types

The reports consolidate Delivery and Inventory analytics, streamlining data access. The table below maps the consolidated reports to their legacy counterparts and API names:

UI Report Name API Report Name
Network Analytics network_analytics
Seller Brand Review seller_brand_review
Seller Brand Review Hourly (alpha) seller_brand_review_hourly (alpha)
Seller Fill and Delivery Network seller_fill_and_delivery_network
Seller Site Domain seller_site_domain
Site Domain Performance network_site_domain_performance
Device Analytics network_device_analytics
Carrier Analytics network_carrier_analytics
Prebid Server Analytics prebid_server_analytics
Audio Analytics audio_analytics_network

Advertiser or Publisher report types

UI Report Name API Report Name
Advertiser Analytics advertiser_analytics
Site Domain Performance site_domain_performance
Publisher Analytics network_publisher_analytics
Not Available publisher_brand_review
Seller Fill and Delivery Publisher seller_fill_and_delivery_publisher

Historical report creation

The Historical report enables streamlined report creation. Users can select from various Dimensions, Metrics, and Filters to customize their reports.

Understanding the ad request to impression funnel

The Historical Report, starting 12 November 2025, includes metrics that help analyze the impression request funnel and troubleshoot integrations.

These metrics were previously available in the Seller Fill and Delivery report. They are now exposed with more granular dimensions and filters to support deeper analysis.

Note

Non-transactional metrics such as Ad Requests, Ad Responses, and Filtered Requests are provided for directional troubleshooting only and must not be used for billing or financial reconciliation.


Ad request flow

The following diagram illustrates how an ad request progresses through Microsoft Monetize, from receipt to final outcome.

The screenshot shows ad request flow.


Ad request lifecycle

Ad requests received

Ad Requests Received counts the total number of unique impressions sent to Microsoft Monetize.

  • Each impression is counted individually.
  • This count is independent of message structure. For example, if multiple impressions are included in a single OpenRTB request, each impression is counted separately.
  • This metric supports a limited set of dimensions and is not reportable with certain dimensions, such as Operating System.

Ad requests auctioned

Ad Requests Auctioned counts impressions that were submitted to the auction process.

  • Impressions are counted using the same methodology as Ad Requests Received.
  • Only impressions that enter the auction are included.

Filtering

The first step of the auction process evaluates inventory quality.

  • If an impression is filtered before bidding, it is counted as a Filtered Request.
  • Filtered requests are logged with a filtered request reason.
  • Filtered requests do not proceed to bidding.

Ad responses

If the auction results in at least one eligible bid from managed or third-party demand, an Ad Response is counted.


Impressions sold

Impressions are considered sold when an impression tracker is received within the TTL (time to live) for the creative media type.

Impressions can be:

  • Kept impressions (managed demand)
  • Resold impressions (third-party demand)

Video player errors

Video Player Errors are counted when a video error is reported after the auction completes.

Note

This metric may not align with the Seller Fill and Delivery report due to updates in processing logic.


Default impressions and no responses

If the impression returned is a default creative, it is counted separately, including:

  • Default impressions
  • Default no responses (non-video)
  • Video default no responses

If an impression tracker is not received within the TTL, the outcome is counted as Bid Sent No Responses.
This behavior applies to both standard and default creatives.


No eligible demand

When no managed, programmatic, or default demand is eligible, the request is counted as Ad Requests No Eligible Demand.

  • Blank impressions are recorded for specific integrations (for example, /UT).
  • Blank impressions are not recorded for integrations where a downstream auction is expected (for example, Prebid).
  • PSAs are recorded when no eligible demand exists and PSAs are enabled for the placement.

Metrics

UI name API field Description
Ad Requests Received ad_requests Total count of unique impressions sent to Microsoft Monetize
Ad Requests Auctioned ad_requests_auctioned Total count of unique impressions evaluated for auction
Filtered Requests filtered_requests Total count of auctioned requests filtered pre-bid for inventory quality
Ad Requests No Eligible Demand ad_requests_no_creative Total count of requests with no eligible managed, programmatic, or default demand
Ad Responses ad_responses_total Total count of auctions with at least one eligible bid
Video Ad Responses ad_responses Total count of auctions with at least one eligible video bid
Bid Sent No Responses bid_sent_no_responses Bid responses returned but where the creative ultimately did not render
Default No Responses defaults_no_responses Requests where a default creative was sent but no response was received
Video Default Errors video_default_errors Errors reported when a default video creative should have served
Video Player Errors video_player_errors Errors reported after VAST XML delivery (maximum 1 per auction)
Response Rate response_rate Total ad responses ÷ (Ad Requests − Filtered Requests)
Win Rate win_rate (Kept + Resold impressions) ÷ Total Ad Responses
Fill Rate fill_rate (Kept + Resold impressions) ÷ Ad Requests Auctioned
Ad Request RPM ad_request_rpm Seller revenue per 1,000 auctioned ad requests

Bid sent no responses: common scenarios

This metric typically occurs when Microsoft Advertising returns a bid, but the creative does not render. Common scenarios include:

  • An external system (for example, Prebid or a waterfall-based ad server) selects a different bid.
  • The user leaves the page before the impression tracker fires.
  • Lazy loading prevents the ad from rendering.
  • A video ad is requested but never plays.

Dimensions available only for transacted impressions

For the following metrics:

  • Ad Requests Received
  • Ad Requests Auctioned
  • Filtered Requests
  • Bid Sent No Responses

The dimensions listed below are not reportable and only populate when an impression is transacted:

  • Viewability metrics
  • Browser
  • Creative
  • Brand
  • Carrier
  • Deal Type
  • Curator
  • Audit Status

Time frame and data retention

Time ranges

The report_interval field in the JSON request can be set to one of the following:

  • custom
  • current_hour
  • last_hour
  • today
  • yesterday
  • last_48_hours
  • last_2_days
  • last_7_days
  • last_14_days
  • last_30_days
  • month_to_date
  • month_to_yesterday

Data retention period

Note

To run a report for a custom time frame, set the start_date and end_date fields in your report request. For more details about these fields, see Report Service. For reports with a start date before the hourly-to-daily cutoff, UTC is enforced.

  • Hourly data: Data is retained for the last 100 days.
  • Cumulative data: Data is retained for up to 2 years and 2 months.
  • Current maximum data availability: Data is retained for 90 days (planned extensions forthcoming).

Intervals

Intervals determine how your data is grouped together into rows in the report response. The following is a complete list of intervals available for reports. However, all intervals are not available for every report.

  • Hourly: Data is grouped by the hour.
  • Daily: Data is grouped by the day.
  • Monthly: Data is grouped by the month.
  • Cumulative: Data is covered by an entire selected period.

Filters

Filters allow you to limit displayed data by specific dimensions. Available filters include:

  • Advertiser name
  • Publisher name
  • Impression type

Dimensions

Warning

Some Dimensions, such as Device Make and Creative, cannot be used together. An info message will indicate unavailable combinations.

Column Type Filter? Description
advertiser string No The advertiser that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
advertiser_id int Yes The ID of the advertiser that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
advertiser_name string No The name of the advertiser that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
bidder int No The Bidder object (in most cases this is a DSP).
bidder_id int Yes The ID of the Xandr Bidder object (in most cases this is a DSP).
bidder_name int No The name of the Xandr Bidder object (in most cases this is a DSP).
billing_period_id int Yes The ID of the Billing Period
billing_period.booked_imps_budget_daily int No The daily impression budget of the insertion order's billing period.
billing_period.booked_imps_budget_lifetime int No The lifetime impression budget of the insertion order's billing period.
billing_period.start_date datetime No The earliest date of the insertion order's billing period. Note: Alpha-Beta Notice: This field or feature is part of functionality currently in either Alpha or Beta phase. It is therefore subject to change.
billing_period.end_date datetime No The last date of the insertion order's billing period. Note: Alpha-Beta Notice: This field or feature is part of functionality currently in either Alpha or Beta phase. It is therefore subject to change.
billing_period.external_code int No The custom code for the billing period.
buyer_member string No The name with ID in brackets of the Xandr buyer member that purchased the impression
buyer_member_id int Yes The ID of the Xandr buyer member that purchased the impression
buyer_member_name string No The Name of the Xandr buyer member that purchased the impression
buyer_seat string No The seat for the Bidder. This enables reporting on sub-seats for bidders that do not have buyer_member_id breakouts.
buyer_seat_id int Yes The ID of the seat for the Bidder. This enables reporting on sub-seats for bidders that do not have buyer_member_id breakouts.
buyer_seat_name string No The name of the seat for the Bidder. This enables reporting on sub-seats for bidders that do not have buyer_member_id breakouts.
buyer_seat_code string No The custom buyer seat ID (submitted by DSP) which was used to bid on the impression
flight_id int No The ID of the line item flight under which the impression was purchased.
flight_booked_impressions_budget_daily int No The daily impression budget for the line item's flight.
flight_booked_impressions_budget_lifetime int No The lifetime impression budget for the line item's flight.
flight_start_date datetime No The start date of the line item's flight.
flight_end_date datetime No The end date of the line item's flight.
insertion_order string Yes The insertion order that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
insertion_order_id int No The insertion order ID that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
insertion_order_name string No The insertion order name that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
insertion_order.billing_code string No The billing code associated with the insertion order (if there is one).
insertion_order.end_date datetime No The end date of the insertion order (for legacy insertion orders).
insertion_order.start_date datetime No The start date of the insertion order (for legacy insertion orders).
insertion_order.state string No The state of the insertion order (e.g., active, inactive).
insertion_order.type int Yes The type of insertion order associated with the impression (e.g. Legacy, Seamless).
line_item string No The line item order that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
line_item_id int Yes The line item ID that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
line_item_name string No The line item name that bought the impression. This will be an object owned by the seller and will be populated for a managed bought or deal v2 impression.
line_item.comments string No Any comments that have been entered for this line item.
line_item.start_date datetime No The start date of the line item.
line_item.end_date datetime No The end date of the line item.
line_item.status string No The state of the line item (e.g., active, inactive).
line_item_code string No The optional external code applied to the line item.
li_priority string Yes The bidding priority for a line item that targets direct inventory. For more information, see Bidding Priority in the UI Documentation. Possible values: 1 - 20, where 20 is the highest priority.
li_subtype string Yes The line item subtype (e.g., Augmented, Deal, Guaranteed).
li_subtype_id int No The line item subtype ID.
li_subtype_name string No The line item subtype name.
salesrep_for_line_item string Yes A custom reporting label field containing the sales representative. You may only select one reporting label per report.
trafficker_for_line_item string Yes A custom reporting label field containing the trafficker. You may only select one reporting label per report.
type_for_line_item string Yes A custom reporting label field used to list the line item type (e.g., Retargeting LI). This is not the same as the Type attribute described above. You may only select one reporting label per report.
insertion_order_type string Yes A custom reporting label field used to list the insertion order type (e.g., Branding IO). This is not the same as the Type attribute described above. You may only select one reporting label per report.
insertion_order.sales_rep_label string Yes A customer reporting label field used to list the sales representative associated with the insertion order. You may only select one reporting label per report.
insertion_order.trafficker_label string Yes A customer reporting label field used to list the trafficker associated with the insertion order. You may only select one reporting label per report.
placement string No The Xandr Placement for the impression.
placement_id int Yes The ID of the Xandr Placement for the impression.
placement_name string No The name of the Xandr Placement for the impression.
placement.code string No The code of the Xandr Placement for the impression.
placement.code2 string No The code of the Xandr Placement for the impression.
placement.code3 string No The code of the Xandr Placement for the impression.
plmt_grp string No Xandr Placement Group for the impression.
plmt_grp_id int Yes The ID of the Xandr Placement Group for the impression.
plmt_grp.name string No The name of the Xandr Placement Group for the impression.
plmt_grp.code string No The code of the Xandr Placement Group for the impression.
publisher string No The Xandr Publisher for the impression.
publisher_id int Yes The ID of the Xandr Publisher for the impression.
publisher_name string No The name of the Xandr Publisher for the impression.
brand string No The Brand as determined by the Xandr creative audit or self assigned for managed traffic
brand_id int Yes The ID for the Brand as determined by the Xandr creative audit or self assigned for managed traffic
brand_name string No The name for the Brand as determined by the Xandr creative audit or self assigned for managed traffic
brand_category_id int Yes The parent category ID for the creative's assigned brand
brand_category_name string No The parent category name for the creative's assigned brand
creative string No Creative that served. It will only be populated for managed impressions.
creative_id int Yes The Xandr ID for the creative that served.
creative_name string No The Xandr name for the creative that served. The name will only be populated for managed impressions.
creative_code string No The code of the creative.
creative_type string No The media type of the creative that transacted
creative_type_id int No The media type ID of the creative that transacted
size string Yes For display creatives, this is the creative width x height in pixels
domains_exposed_id int No Whether this inventory's domains are exposed for targeting by buyers. Allowed values: "Exposed", "Not exposed"
domains_exposed int No Whether this inventory's domains are exposed for targeting by buyers. Allowed values: "Exposed", "Not exposed"
exposed_for_resale string No Viewability profile, used by sellers to expose/hide their content_categories info to buyers
exposed_for_resale_id int No Viewability profile, used by sellers to expose/hide their publisher info to buyers
allowed_media_types_bitmap_name string No An array of the permitted media types for the impression
audit_type string No The type of audit performed on the domain where the impression occurred.
audit_type_id int Yes The ID of the type of audit performed on the domain where the impression occurred.
audit_type_name string No The name of the type of audit performed on the domain where the impression occurred.
browser string No The Name and ID of the browser in which the impression was served. To retrieve a complete list of browser IDs and names, use the Browser Service.
browser_id int Yes The ID of the browser in which the impression was served. To retrieve a complete list of browser IDs and names, use the Browser Service.
content_category string No The ID and name of the universal content category associated with the audited domain.
content_category_id int Yes The ID of the universal content category associated with the audited domain.
content_category_name string No The name of the universal content category associated with the audited domain.
fold_position string No The fold position, i.e. where on the page the placement is located. For allowed values, see fold_position_id.
fold_position_id int Yes The ID of the fold position, i.e. where on the page the placement is located. Possible values for impressions: 0 = "unknown", 1 = "above", 2 = "below".
supply_type_id int Yes The ID of the type of inventory.
supply_type_name string No The type of inventory. Possible values: "web", "mobile_web", "mobile_app", "facebook_sidebar".
prebid_server_eligible int Yes Yes if PSP was eligible to bid into the auction for the impression.
prebid_server_eligible_name string No Yes if PSP was eligible to bid into the auction for the impression.
ssp string No When the transaction is bought by PSP (bidder_id=443) this field will show the individual SSP that transacted. Otherwise, the SSP will be recorded as Monetize.
ssp_id int No When the transaction is bought by PSP (bidder_id=443) this field will show the individual SSP that transacted. Otherwise, the SSP will be recorded as Monetize.
ssp_name string No When the transaction is bought by PSP (bidder_id=443) this field will show the individual SSP that transacted. Otherwise, the SSP will be recorded as Monetize.
deal string No The name and ID of the affected deal.
deal_id int Yes The ID of the deal.
deal_name string No The name of the affected deal.
deal_type string Yes Possible values: Open Auction (1), Private Auction (2), First Look (3), Programmatic Guaranteed (4), Curated (5 - only relevant for Curators).
revenue_type string No For managed line items, this is the basis on which the booked revenue gets recorded for the Seller.
revenue_type_id int Yes The basis on which the advertiser has agreed to pay you for the impression.
carrier string No The carrier for the device on which the impression was served.
carrier_id int Yes The ID of the carrier for the device on which the impression was served.
carrier_name string No The name of the carrier for the device on which the impression was served.
device_make string No The device manufacturer
device_make_id int Yes The ID of the device make on which the impression was served. The make is generally the manufacturer of the device (i.e., Apple).
device_make_name string No The name of the device make on which the impression was served. The make is generally the manufacturer of the device (i.e., Apple). To retrieve a complete list of device make IDs and names, use the Device Make Service.
device_model string No The ID and name of the device model on which the impression was served. The model is generally the specific product (i.e., IPhone).
device_model_id int Yes The ID of the device model on which the impression was served. The model is generally the specific product (i.e., IPhone).
device_model_name string No The name of the device model on which the impression was served. The model is generally the specific product (i.e., IPhone).
device_type string No The device type the impression originated from. 0=Unknown, 1=PC, 2=Phone, 3=Tablet, 4=TV, 5=Game Console, 6=Media Player, 7=Set top box
device_type_id int Yes The ID of the device type the impression originated from. 0=Unknown, 1=PC, 2=Phone, 3=Tablet, 4=TV, 5=Game Console, 6=Media Player, 7=Set top box
operating_system string No The name of the operating system of the device followed by the ID (Microsoft Advertising format).
operating_system_id int Yes The ID of the operating system of the device.
operating_system_name string No The name of the operating system of the device.
operating_system_family string No The name of the operating system family (e.g., Android, Microsoft Windows) of the device followed by the ID (Microsoft Advertising format).
operating_system_family_id int Yes The ID of the operating system family associated with the device the impression was served on.
operating_system_family_name string No The name of the operating system family associated with the device the impression was served on.
curator_member string No The ID of the curator that was present in the transaction
curator_member_id int Yes The ID of the curator that was present in the transaction
curator_member_name string No The name of the curator that was present in the transaction
is_curated boolean Yes Yes if the transaction occurred via a curator
demand_channel string No The type of demand that bought the impression. Possible values: Managed (imp_type=5), PSP (bidder_id=443), Standard Deal, Priority Deal, PG Deal, Curation (curator_member_id > 0) and Open Exchange (imp_type=6).
demand_channel_id int Yes The type of demand that bought the impression. Possible values: Managed (imp_type=5), PSP (bidder_id=443), Standard Deal, Priority Deal, PG Deal, Curation (curator_member_id > 0) and Open Exchange (imp_type=6).
demand_channel_name string No The type of demand that bought the impression. Possible values: Managed (imp_type=5), PSP (bidder_id=443), Standard Deal, Priority Deal, PG Deal, Curation (curator_member_id > 0) and Open Exchange (imp_type=6).
imp_type string No The type of transaction. (1=blank, 2=PSA, 3=Default Error, 4=default, 5=kept, 6=resold, 7=RTB, 8=PSA Error, 9=External Impression, 10=External Click, 11=Insertion)
imp_type_id int Yes The type of transaction. (1=blank, 2=PSA, 3=Default Error, 4=default, 5=kept, 6=resold, 7=RTB, 8=PSA Error, 9=External Impression, 10=External Click, 11=Insertion)
call_type string Yes The Impbus handler the impression originated from
sdk_version string No The version of the Xandr SDK (AST or Mobile SDK) used to generate the ad request.
mobile_application string No Domain / App The application the bundle on the ad request was mapped to
mobile_application_id int No Domain / App The ID for the application the bundle on the ad request was mapped to
mobile_application_name string No Domain / App The name for the application the bundle on the ad request was mapped to
site_domain string No Domain / App The domain detected for the ad request
geo_country string Yes Geography The country/region 2 digit code in which the impression took place. For impression requests for which Xandr received no indication that the ad was rendered (i.e., non-transacted), country/region information is not provided. Country/region information is detected by the IP address of the user. Note: Some discrepancies are normal with external data sources due to differences between country/region detection methods.
geo_country_name string No The country/region name in which the impression took place. For impression requests for which Xandr received no indication that the ad was rendered (i.e., non-transacted), country/region information is not provided. Country/region information is detected by
day date No The day of the Auction
hour date No The hour of the auction. Note: For impressions older than 100 days, the day will be returned rather than the hour.
month date No The month of the auction
filtered_request_reason string No The reason why the impression request was filtered out by Xandr's inventory quality controls and the auction was not held. Possible reasons are: "Invalid Domain" (1), "Invalid IP" (2), "Suspected Domain Detection Tampering" (3, 4, 5), "Unknown" (6, 7), “White Ops: General IVT” (17) - consists of traffic identified through routine means of filtration, executed through application of lists or with other standardized parameter checks, “White Ops: Sophisticated IVT” (18) - consists of more difficult to detect situations that require advanced analytics, multi-point corroboration/coordination, significant human intervention, etc., to analyze and identify, "Valid Impression" (0) is also a valid filtered request reason, but in that case, an auction was held and it was not filtered.
filtered_request_reason_id int No The reason why the impression request was filtered out by Xandr's inventory quality controls and the auction was not held. Possible reasons are: "Invalid Domain" (1), "Invalid IP" (2), "Suspected Domain Detection Tampering" (3, 4, 5), "Unknown" (6, 7), “White Ops: General IVT” (17) - consists of traffic identified through routine means of filtration, executed through application of lists or with other standardized parameter checks, “White Ops: Sophisticated IVT” (18) - consists of more difficult to detect situations that require advanced analytics, multi-point corroboration/coordination, significant human intervention, etc., to analyze and identify, "Valid Impression" (0) is also a valid filtered request reason, but in that case, an auction was held and it was not filtered.
supply_chain_node_count Int Y The number of nodes in the Ad Request SCHAIN.
supply_chain_is_complete String Y Indicates whether the SCHAIN is marked as complete on the Ad Request.
is_gpid_present String Y Indicates whether a Global Placement ID (GPID) was present on the impression.
Note:
This field is a reporting-only characteristic and does not affect the value of GPID at auction time. It is supported for Impressions metrics only. A subset of ad requests that do not result in a transacted impression are not GPID-reportable. As a result, using this field together with Ad Request or Response metrics may not accurately reflect true GPID coverage and is not recommended.

Metrics

Note

Adjustment revenue is not currently reportable. Revenue metrics may have minor discrepancies due to varying aggregation levels.

Column Type Description
imps int The number of impressions recorded, of any imp_type. N.B. For some call_types such as /OpenRTB2 and /prebid blank impressions are not recorded as imps, as typically there is a further auction when Xandr returns bids, and it would not be known if the final impression blanked, or Xandr lost in the final auction.
sold_network_rpm double The revenue per 1000 impressions that were not blanks, defaults or errors.
total_revenue_ecpm money The total revenue per 1000 impressions.
revenue money The total net revenue.
imps_blank int The total number of impressions in which a blank creative served.
imps_default int The total number of impressions in which a default creative served because there were no valid bids.
imps_default_error int The total number of impressions in which a default creative served due to a timeout issue.
imps_kept int The total number of impressions in which one of your managed advertisers served a creative.
imps_resold int The total number of impressions sold to a third-party buyer.
imps_primary_creative int The number of page-level roadblocks that served the master creative. Note: Alpha-Beta Notice: This field or feature is part of functionality currently in either Alpha or Beta phase. It is therefore subject to change.
imps_psa int The total number of impressions in which a public service announcement served because no other creative was eligible.
imps_psa_error int The total number of impressions in which a public service announcement served due to timeout issue.
seller_revenue money The net revenue resultant from a 3rd party buyer (to the seller)
booked_revenue money The net revenue applied on the Line Item that won the impression.
clicks int The number of clicks recorded. Clicks are deduplicated by auction (so maximum 1 click per unique auction) and have a 6 hour TTL to be recorded. Clicks can be measured for display impresisons bought by Xandr Invest and for Video and Native creatives from all buyers.
total_revenue_ecpc money The total revenue per click.
cost money The cost to purchase 3rd party inventory via a Line Item
cpm money The cost per 1000 impressions.
starts int The number of start events received by Xandr, maximum 1 per auction.
25_pcts int The number of first quartile events received by Xandr, maximum 1 per auction.
50_pcts int The number of second quartile events received by Xandr, maximum 1 per auction.
75_pcts int The number of third quartile events received by Xandr, maximum 1 per auction.
completions int The number of completion events received by Xandr, maximum 1 per auction.
errors int The number of error events received by Xandr, maximum 1 per auction.
skips int The number of skip events received by Xandr, maximum 1 per auction.
start_rate double video_starts / imps
video_25_pct_completion_rate double video_25_pcts / video_starts
video_50_pct_completion_rate double video_50_pcts / video_starts
video_75_pct_completion_rate double video_75_pcts / video_starts
video_skip_rate double video_skips / video_starts
started_video_completion_rate double Video completions per load (video_completions / video_starts)
revenue_per_video_complete double The revenue per video completion.
view_measured_imps int The total number of impressions that were measured for viewability
imps_viewed int The total number of impressions that were measured as viewable by the Xandr viewability script
view_measurement_rate double The percentage of impressions measured for viewability out of the total number of impressions. (View Measured Imps / Imps)
view_rate double The percentage of impressions that were viewable out of the total number of impressions measured for viewability. (Viewed Imps / View Measured Imps)
total_revenue_vcpm money The total revenue per 1000 viewable impressions.
ad_requests int The number of unique auctions Xandr considered for auction, before any filtration was applied. N.B. One ad call may contain multiple tags. In such a scenario we would count an ad request for every tag within the ad request message.
filtered_requests int The number of unique auctions that Xandr filtered due to inventory quality checks
external_click int Clicks as recorded by the external clicktracker.
external_impression int Imps as recorded by the external impression tracker.
total_revenue_ecpa money The total revenue per acquisition.
ad_requests Total count of unique impressions sent to Microsoft Monetize
ad_requests_auctioned Total count of unique impressions evaluated for auction
filtered_requests Total count of auctioned requests filtered pre-bid for inventory quality
ad_requests_no_creative Total count of requests with no eligible managed, programmatic, or default demand
ad_responses_total Total count of auctions with at least one eligible bid
ad_responses Total count of auctions with at least one eligible video bid
bid_sent_no_responses Bid responses returned but where the creative ultimately did not render
defaults_no_responses Requests where a default creative was sent but no response was received
video_default_errors Errors reported when a default video creative should have served
video_player_errors Errors reported after VAST XML delivery (maximum 1 per auction)
response_rate Total ad responses ÷ (Ad Requests − Filtered Requests)
win_rate (Kept + Resold impressions) ÷ Total Ad Responses
fill_rate (Kept + Resold impressions) ÷ Ad Requests Auctioned
ad_request_rpm Seller revenue per 1,000 auctioned ad requests

Examples

Create the JSON-formatted report request

The JSON file should include the report_type monetize_supply_analytics or monetize_creative_brand_analytics, as well as the columns (dimensions and metrics) and report_interval that you want to retrieve. You can also filter for specific dimensions, define granularity (year, month, day), and specify the format in which the data should be returned (csv, excel, or html). For a full explanation of fields that can be included in the JSON file, see the [Report Service[(report-service.md)].


$ cat monetize_supply_analytics.json
{
    "report": {
        "report_type": "monetize_supply_analytics",
        "columns": ["hour", "seller_member_name", "buyer_member_name", "advertiser_name", "publisher_name", "imps", "clicks"],
        "report_interval": "last_48_hours",
        "format": "csv"
    }
}

POST the request to the Reporting service


$ curl -b cookies -X POST -d @ monetize_supply_analytics 'https://api.appnexus.com/report'
{
   "response": {
      "status": "OK",
      "report_id": "097f59fc3ab7d02c5d60db42081d9b69"
   }
}

GET the report status from the Report service

After submitting a report request, use the GET method to check the status.

Example request

Make a GET call with the Report ID to retrieve the status of the report. Continue making this GET call until the execution_status is ready. Then use the report-download service to save the report data to a file, as described in the next step.

$ curl -b cookies 'https://api.appnexus.com/report?id=097f59fc3ab7d02c5d60db42081d9b69' 

{ 

   "response":{ 
      "status":"OK", 
      "report":{ 
         "name":null, 
         "created_on":"2010-05-25 19:19:53", 
         "json_request":"{\"report\":{\"report_type\":\"monetize_supply_analytics\",\"columns\":[\"hour\",\"seller_member_name\", 
            \"buyer_member_name\",\"advertiser_name\",\"publisher_name\",\"imps\",\"clicks\"], 
            \"row_per\":[\"hour\",\"seller_member_id\",\"buyer_member_id\",\"advertiser_id\",\"publisher_id\"], 
            \"report_interval\":\"last_48_hours\"}}", 
         "url": "report-download?id=b97897a7864dd8f34e7457226c7af592" 
      }, 
      "execution_status":"ready" 
   } 
}

GET the report data from the Report download service

To download the report data to a file, make another GET call with the Report ID, but this time to the report-download service. You can find the service and Report ID in the url field of the previous GET response. When identifying the file that you want to save to, be sure to use the file extension of the format that you specified in your initial POST.

Note

If an error occurs during download, the response header will include an HTTP error code and message. Use -i or -v in your call to expose the response header.

curl -b cookies 'https://api.appnexus.com/report-download?id=b97897a7864dd8f34e7457226c7af592' > /tmp/monetize_supply_analytics.csv

Tip

There is a limit of 100,000 rows per report when you download them as XLSX and Excel file.