Custom Reporting API

The Custom Reporting API offers a powerful tool to pull complex reports from Ooyala Pulse, within limits. The Custom Reporting API allows you to generate reports as you need them, without having pre-existing report definitions, unlike the Insight Reporting API. 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:
  • Related user documentation:


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, refer to these tips.
  • You can store at most 200 reports. If another report is created after the allocation is filled, then the report with the oldest creation date is removed.
  • 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.
    Note: In addition, audience data in Custom Reporting is only available from 1 December, 2017.
  • 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%.
  • Lookup values for audience segments have no history. As a result, a Custom Report may break, when the segment mapping in Ooyala's 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.

Was this article helpful?