> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contentignite.com/llms.txt
> Use this file to discover all available pages before exploring further.

# /report/:id/data

> Runs a saved custom revenue report and returns its rows. The columns depend on the report. 

Some field names differ from Fusion's labels: `imp_fill` is Fill, `fill` is Ad Server Fill, `rpm` is eRPM and `ecpm` is eCPM



## OpenAPI

````yaml /openapi.json get /v1/report/{id}/data
openapi: 3.0.1
info:
  title: CI Public API
  description: >-
    # Introduction

    Welcome to the Content Ignite API. A central place for all Content Ignite
    functionality. 


    This API enforces a separation between function and form, meaning anything
    you can do in our platforms can be replicated in your own bespoke solution.


    # Authentication

    Authentication is handled via JWTs. You can retrieve your unique JSON Web
    Token from the settings page in the platform, which needs to be passed in
    with every request.

    To do this, simple include it in an Authorization header with the "Bearer"
    key word.


    Please contact support for help getting started.


    # Error Codes

    This is a fully RESTful API, so prepare for a number of different HTTP
    status codes.


    There is also a standard "success" field returned for each request. This
    boolean value can provide a first check against a response.


    # Rate limit

    We reserve the right to block requests if we deem a client to be abusing the
    API.
  version: 1.0.0
servers:
  - url: https://api.tagdeliver.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Reporting
  - name: Reporting/Revenue Reports
  - name: Reporting/Experiment Reporting
  - name: Reporting/Campaign Reports
  - name: Reporting/Health Check
  - name: Reporting/Ads.txt
  - name: Reporting/Utility
  - name: Reporting/Insights Hub
  - name: Reporting/Insights Hub/SSP Insights
  - name: Reporting/Insights Hub/Core Web Vitals
  - name: Reporting/Insights Hub/Ads.txt Insights
  - name: Reporting/Insights Hub/Live Insights
  - name: Reporting/Insights Hub/Metrics
  - name: Reporting/Insights Hub/Diagnostics
  - name: Reporting/Insights Hub/Revenue Insights
  - name: Reporting/Insights Hub/Revenue Analytics
  - name: Reporting/Insights Hub/Demand Mix
  - name: Reporting/Insights Hub/Benchmarking
  - name: Organisation
  - name: Organisation/Organisation Meta
  - name: Organisation/Pricing
  - name: Ad Stack
  - name: Ad Stack/Integration
  - name: Publisher
  - name: Publisher/Publisher Stack
  - name: Publisher/Publisher Tag
  - name: Publisher/Publisher Meta
  - name: Publisher/Experiment
  - name: Publisher/Config (Ad unit)
  - name: Publisher/App Placement
  - name: AI
  - name: AI/Activity
  - name: Billing
  - name: Billing/Invoice
  - name: Audit Log
  - name: '[IN PROGRESS] Integration'
  - name: '[IN PROGRESS] Integration/Mapping'
  - name: '[IN PROGRESS] User'
  - name: '[IN PROGRESS] User/Account'
  - name: public
paths:
  /v1/report/{id}/data:
    get:
      tags:
        - Reporting/Revenue Reports
        - public
      summary: /report/:id/data
      description: >-
        Runs a saved custom revenue report and returns its rows. The columns
        depend on the report. 


        Some field names differ from Fusion's labels: `imp_fill` is Fill, `fill`
        is Ad Server Fill, `rpm` is eRPM and `ecpm` is eCPM
      parameters:
        - name: id
          in: path
          description: Unique report ID
          required: true
          example: ''
          schema:
            type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                    description: Report name; null when saved without one
                    nullable: true
                  table_state:
                    type: object
                    description: >-
                      Saved table layout from the dashboard (for example
                      columns, sorting, pagination, rowGrouping, aggregation).
                      Stored as sent and not validated; null when none was saved
                    additionalProperties: true
                    properties: {}
                    nullable: true
                  start:
                    type: string
                    format: date
                    description: First day covered, worked out from the saved date range
                  end:
                    type: string
                    format: date
                    description: Last day covered (inclusive)
                  currency:
                    type: string
                    description: >-
                      Currency of all revenue values, ISO 4217 code; GBP when
                      none is set
                  results:
                    type: array
                    description: >-
                      Report rows. Each row has `id` plus one key per entry in
                      the report's fields, so only the saved fields appear. Rows
                      are grouped by the dimension fields; sorted and capped by
                      the saved order and limit. Empty array when there is no
                      data
                    items:
                      type: object
                      properties:
                        id:
                          description: >-
                            Row key built from the row's dimension values. A
                            64-bit number: returned as a string when above
                            9007199254740991, otherwise as a number that may be
                            beyond JavaScript's safe range. Use it as a key only
                          anyOf:
                            - type: integer
                            - type: string
                        date:
                          type: string
                          format: date
                        month:
                          type: string
                          format: date
                          description: First day of the month, `YYYY-MM-01`
                        uid:
                          type: integer
                          description: Site id
                        publisher:
                          type: string
                          description: Site domain
                        organisation:
                          type: string
                          description: Organisation name
                        config_id:
                          type: integer
                          description: Ad unit config id
                          nullable: true
                        config_name:
                          type: string
                          description: Ad unit config label; empty or null when not set
                          nullable: true
                        unit:
                          type: string
                          description: Ad unit type, as in the unit filter options
                        environment:
                          type: string
                          enum:
                            - web
                            - app
                        platform:
                          type: string
                          description: Platform id, as in the platform filter options
                        account_name:
                          type: string
                          description: Integration account name
                        account_owner:
                          type: string
                          description: >-
                            Name of the organisation that owns the integration
                            account
                        partner:
                          type: string
                          description: Lower-case partner name
                          nullable: true
                        channel:
                          type: string
                          nullable: true
                        geo:
                          type: string
                          description: ISO 3166-1 alpha-2 country code
                          nullable: true
                        region:
                          type: string
                          description: Continent code, as in the region filter options
                        revenue_source:
                          type: string
                          description: '`saas` or `pap`'
                          nullable: true
                        device:
                          type: string
                          description: '`mobile`, `tablet` or `desktop`'
                          nullable: true
                        creative_size:
                          type: string
                          description: '`WIDTHxHEIGHT` in pixels, or `fluid`'
                          nullable: true
                        campaign:
                          type: string
                          description: Campaign name; null when the row has no campaign
                          nullable: true
                        campaign_advertiser:
                          type: string
                          description: Advertiser name; null when the row has no campaign
                          nullable: true
                        line_item:
                          type: string
                          description: Line item name; null when the row has no line item
                          nullable: true
                        tag:
                          type: string
                          description: >-
                            Tag name; null when the site has no tag. A site with
                            several tags appears once per tag, so summing across
                            tags counts it more than once
                          nullable: true
                        ad_impressions:
                          type: integer
                        ad_requests:
                          type: integer
                        ad_responses:
                          type: integer
                        ad_unit_loads:
                          type: integer
                        clicks:
                          type: integer
                        viewable_impressions:
                          type: integer
                        page_impressions:
                          type: integer
                        q1_impressions:
                          type: integer
                          description: Video impressions that reached the first quartile
                        q2_impressions:
                          type: integer
                          description: Video impressions that reached the midpoint
                        q3_impressions:
                          type: integer
                          description: Video impressions that reached the third quartile
                        q4_impressions:
                          type: integer
                          description: Video impressions that completed
                        gross_revenue:
                          type: number
                          description: >-
                            Revenue before Content Ignite's fees, in the
                            reporting currency, rounded to 2 decimal places (not
                            rounded when the report includes page_impressions or
                            page_rpm)
                        net_revenue:
                          type: number
                          description: >-
                            Revenue after Content Ignite's fees (SaaS eCPM fee
                            or P&P revenue share), in the reporting currency,
                            rounded to 2 decimal places (not rounded when the
                            report includes page_impressions or page_rpm)
                        cost:
                          type: number
                          description: >-
                            Content Ignite's fees: gross_revenue minus
                            net_revenue, in the reporting currency, rounded to 2
                            decimal places
                        ecpm:
                          type: number
                          description: >-
                            eCPM in Fusion: gross_revenue per 1,000
                            ad_impressions, in the reporting currency; null when
                            there are no impressions
                          nullable: true
                        rpm:
                          type: number
                          description: >-
                            eRPM in Fusion: net_revenue per 1,000
                            ad_impressions, in the reporting currency; null when
                            there are no impressions
                          nullable: true
                        page_rpm:
                          type: number
                          description: >-
                            net_revenue per 1,000 page_impressions, in the
                            reporting currency; null when there are no page
                            impressions
                          nullable: true
                        ctr:
                          type: number
                          description: >-
                            clicks / ad_impressions as a fraction (0.01 = 1%);
                            null when there are no impressions
                          nullable: true
                        fill:
                          type: number
                          description: >-
                            Ad Server Fill in Fusion: ad_responses / ad_requests
                            as a fraction; null when there are no requests. For
                            the Fill shown on Fusion pages, use imp_fill
                          nullable: true
                        imp_fill:
                          type: number
                          description: >-
                            Fill in Fusion: ad_impressions / ad_requests as a
                            fraction; null when there are no requests
                          nullable: true
                        unit_fill:
                          type: number
                          description: >-
                            ad_responses / ad_unit_loads as a fraction; null
                            when there are no unit loads
                          nullable: true
                        viewability:
                          type: number
                          description: >-
                            viewable_impressions / ad_impressions as a fraction;
                            null when there are no impressions
                          nullable: true
                        q1_percent:
                          type: number
                          description: q1_impressions / ad_impressions as a fraction
                          nullable: true
                        q2_percent:
                          type: number
                          description: q2_impressions / ad_impressions as a fraction
                          nullable: true
                        q3_percent:
                          type: number
                          description: q3_impressions / ad_impressions as a fraction
                          nullable: true
                        q4_percent:
                          type: number
                          description: q4_impressions / ad_impressions as a fraction
                          nullable: true
                      required:
                        - id
                  cost:
                    type: string
                    description: >-
                      Query cost for Content Ignite staff, such as `£0.000412`;
                      null for everyone else
                    nullable: true
                  timeMs:
                    type: integer
                    description: Query run time in milliseconds
                  duration:
                    type: string
                    description: >-
                      Query run time as text: `850ms` under a second, `N
                      second(s)` under a minute, otherwise `HH:MM:SS`
                  success:
                    type: boolean
                required:
                  - title
                  - table_state
                  - start
                  - end
                  - currency
                  - results
                  - cost
                  - timeMs
                  - duration
                  - success
              example:
                title: Weekly revenue by site
                table_state:
                  columns:
                    orderedFields:
                      - date
                      - publisher
                      - device
                      - ad_impressions
                      - net_revenue
                  sorting:
                    sortModel:
                      - field: net_revenue
                        sort: desc
                  pagination:
                    pageSize: 50
                    page: 0
                start: '2026-10-16'
                end: '2026-10-22'
                currency: GBP
                results:
                  - date: '2026-10-22'
                    publisher: example.com
                    device: mobile
                    ad_impressions: 48210
                    net_revenue: 61.84
                    id: -3216549870123457000
                  - date: '2026-10-22'
                    publisher: news.example.com
                    device: mobile
                    ad_impressions: 30544
                    net_revenue: 37.12
                    id: '12854730091827364519'
                  - date: '2026-10-21'
                    publisher: example.com
                    device: tablet
                    ad_impressions: 6120
                    net_revenue: 8.05
                    id: '15002938475610293847'
                cost: null
                timeMs: 640
                duration: 640ms
                success: true
          headers: {}
      deprecated: false
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.