report/export

Field and value reference · Markdown

GET/report/export

Fetch CSV-schema export rows for the requested time range. Requires the reports:read permission.

Request

cURL
curl -X GET "https://provisioning.cloudx.io/api/v1/report/export?start_time=1712448000&end_time=1712534399" \
  -H "Authorization: Bearer $CLOUDX_API_KEY"

Query parameters

NameTypeDescription
start_timerequiredinteger<int64>Start of the time range as a Unix timestamp in seconds. The requested range must not exceed 31 days and must not start before 2020-01-01 UTC.
end_timerequiredinteger<int64>End of the time range as a Unix timestamp in seconds. The requested range must not exceed 31 days and must not end before 2020-01-01 UTC.
countrystringISO 3166-1 alpha-2 country code filter.
device_osstringDevice operating system filter. Allowed values: iOS, Android.
granularitystringReporting bucket size. Defaults to daily. Allowed values: daily, hourly.

Responses

CSV-schema export rows.
{
  "columns": [
    "<string>"
  ],
  "rows": [
    [
      "<string>"
    ]
  ],
  "row_count": 123
}

200 CSV-schema export rows.

FieldTypeDescription
columnsrequiredarray of string
rowsrequiredarray of array of string
row_countrequiredinteger<int64>

400 Invalid request parameters.

FieldTypeDescription
errorrequiredstring

401 Unauthorized.

FieldTypeDescription
errorrequiredstring

403 Forbidden.

FieldTypeDescription
errorrequiredstring

500 Internal server error.

FieldTypeDescription
errorrequiredstring

Export response reference

rows is an array of string arrays. Each row uses the same position as columns. row_count is the number of returned rows. CloudX returns at most 100,000 rows. The requested range is inclusive, uses Unix seconds, must start on or after 2020-01-01 UTC, and cannot exceed 31 days.

Daily exports always return these columns, in this order:

PositionColumnString value
1dateUTC calendar date in YYYY-MM-DD.
2network_nameDynamic buyer adapter name, or CloudX Exchange for CloudX settlement.
3app_nameApp name enriched from the live configuration when the ad unit matches it. Otherwise source text.
4app_store_idApp bundle ID enriched from the live configuration when the ad unit matches it. It is not always a numeric store ID.
5platformSource platform text. Casing is not normalized, for example android or iOS.
6ad_unit_idDynamic CloudX ad-unit ID.
7ad_typeLowercase configured ad-unit type when the ad unit matches the live configuration, such as banner, interstitial, rewarded, mrec, or native.
8network_placementActive mapped network placement_id, if configured. Otherwise an empty string.
9countryISO 3166-1 alpha-2 country code, or an empty string when unavailable.
10impressionsBase-10 integer count.
11clicksBase-10 integer count.
12revenueDecimal currency amount with exactly two fractional digits.
13attemptsBase-10 integer request count.
14responsesBase-10 integer response or fill count.

Hourly exports replace only position 1. The column is bucket_start, an RFC 3339 UTC timestamp such as 2026-04-01T13:00:00Z. Positions 2 through 14 do not change.

device_os accepts only iOS or Android. It filters source data. It does not normalize the returned platform text. country filters by an ISO alpha-2 code. This endpoint returns production data only and has no test_mode parameter. network_name, app identifiers, ad-unit identifiers, and placement IDs depend on your configuration and data. They are not fixed enums.

attempts and responses depend on the reporting source. Legacy reporting uses SSP request totals for attempts and returns 0 for responses. SDK reporting uses ad-request totals for attempts and fill totals for responses.

Daily JSON example

{
  "columns": ["date", "network_name", "app_name", "app_store_id", "platform", "ad_unit_id", "ad_type", "network_placement", "country", "impressions", "clicks", "revenue", "attempts", "responses"],
  "rows": [
    ["2026-04-01", "CloudX Exchange", "Sample Puzzle", "com.example.puzzle", "iOS", "ad-unit-home", "banner", "", "US", "1200", "18", "14.25", "1500", "960"]
  ],
  "row_count": 1
}

Hourly JSON example

{
  "columns": ["bucket_start", "network_name", "app_name", "app_store_id", "platform", "ad_unit_id", "ad_type", "network_placement", "country", "impressions", "clicks", "revenue", "attempts", "responses"],
  "rows": [
    ["2026-04-01T13:00:00Z", "meta", "Sample Puzzle", "com.example.puzzle", "iOS", "ad-unit-home", "banner", "home-banner", "US", "120", "2", "1.43", "150", "96"]
  ],
  "row_count": 1
}