Custom Reporting API

The Custom Reporting API offers a powerful tool to pull complex reports from Pulse, within limits. The Custom Reporting API allows you to generate reports as you need them, without having pre-existing report definitions. This means that:

  • You create report definitions from scratch for each new report, stating the metrics, dimensions and filters you want.
  • Reports can be generated for unaggregated data.
  • Reports may be slower to generate, because data needs to be aggregated each time you generate a new report.

Getting Started

  • Base URL:
  • Requests: GET and POST requests are used. You pass parameters by using common REST parameters like PATH and QUERY, as well as HTTP HEADERS. The body of the requests should be provided in JSON format and encoded using UTF-8.
  • Responses: All responses contain an HTTP status code in the header and the body is in JSON format, except for fetching the generated report.
  • Swagger documentation: Custom Reporting API
  • Related user documentation:

Data Availability

Tracking data is received continuously in the Pulse backend, and is sorted into hour-long buckets according to the tracking request's timestamp from when the request was triggered on the end user's device. Because this data may be received a lot later than the time it was sent, we employ two processing windows:
  • one that processes data from the bucket with timestamps from three hours to two hours ago, and
  • one that simultaneously processes data from the bucket with timestamps from 25 hours to 24 hours ago.

One processing run takes about 30 minutes, and with the double processing of each bucket, a 99,99% of data completeness level is reached in most circumstances. However, if significant amounts of data is received after 24 hours, or inconsistencies are detected, the data can be reprocessed manually.


The following limitations apply to the Custom Reporting API:
  • Reports return maximum 100000 rows. To make sure your report is not incomplete due to reaching the maximum number of rows, see these tips.
  • Only 200 reports are loaded and visible in the user interface.
  • You can define maximum eight grouping dimensions for a report.
  • You are recommended to filter on maximum ten tags in a report. Although more tags are allowed, we cannot guarantee a successful run of the report.
  • You cannot combine breaking down the data based on audience segments and tags in the same report, because the report result cardinality could be too high.
  • You can run maximum two reports at the same time. If there are two reports waiting to complete in Custom Reporting, you can still create new reports but their status is set to "Queued".
    • When one of the currently running reports is done (ready, failed, or cancelled), the first report in queue is run.
    • Queued reports are ordered based on creation or refresh date and time, so the report with the oldest creation or refresh date and time is the first one in queue, and this order cannot be changed.
    • You can queue maximum 10 reports. Refreshing a report also counts towards your queue.
    • You can delete or cancel queued reports.
  • If the refreshable reports functionality is enabled for your account, and a report was created with a future end date, then it can be refreshed at the earliest six hours after the last time it was refreshed or created for the first time successfully. Also, you are only able to refresh the report results up until three days after that future date has passed.
  • The query for a report runs for maximum 1 hour. Queries that take longer are cancelled, and the report's status is set to 'Failed'.
  • Data for Custom Reporting is only available for the past 25 months. Reports where at least a part of the selected time span falls outside the data retention period, fail to run.

    In addition,

    • audience data is only available from December 1, 2017
    • content ID data is only available from March 7, 2018
    • meaningful flag data is only available from November 19, 2018
  • The time span of a report can be maximum twelve months. Reports requested over a longer period fail to run.
  • Only the described dimensions, metrics, and filters in this document set are available in Custom Reporting.
  • Revenue metrics are visible to all users of your Pulse account when using Custom Reporting, even if a particular user cannot see revenue metrics in the Pulse User Interface.
  • The Custom Reporting tool calculates the approximate count of unique inventory and unique impressions metrics by using the HyperLogLog algorithm, which provides deterministic results when running reports for the same time range, filters, and dimensions. This way your reports run faster, and finish, which cannot be guaranteed when using distinct counts. The expected difference from distinct counts is only 2 to 3%. For more information, see Using HLL++ to speed up count-distinct in massive datasets.
  • Lookup values for audience segments have no history. As a result, a Custom Report may break, when the segment mapping in the Pulse backend is updated or is missing segments. Updated segment mappings only make the segment IDs resolve to a different name. Missing segment mappings resolve to 'undefined' in the reports.
  • Error tracking reports only work if error tracking is enabled for your account, and you have an integration with at least one of the following SDKs:
    • HTML5 SDK (Core and Pulse) or any of its derivatives (HTML5 Ad Player and Plugins) for version or higher
    • iOS Pulse SDK version or higher
    • Android Pulse SDK version or higher

    No error tracking information is available for direct VAST or VMAP integrations.

  • There is a daily quota of 300 reports you can run using the Custom Reporting UI and API combined. For more information, contact your Account Manager.

Invalid Combinations

Before you begin, you should understand which filters, dimensions, and metrics cannot be used together in the same report, and which depend on a specific combination.
  • Ad, goal, or campaign dimension cannot be used together with the inventory or fill rate metric in the same report. These combinations do not yield meaningful results.

  • Tag and audience dimensions cannot be used together in the same report, because the report result cardinality could be too high and surpass the 100000 row limit for Custom Reporting.

  • Audience provider filter must always be used in combination with audience dimension and the other way around, otherwise the query fails.

If the above is not respected, you cannot create the report and you get a 422 error from the Custom Reporting API.