report/export
Field and value reference · Markdown
/report/exportFetch CSV-schema export rows for the requested time range. Requires the reports:read permission.
Request
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
| Name | Type | Description |
|---|---|---|
start_timerequired | integer<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_timerequired | integer<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. |
country | string | ISO 3166-1 alpha-2 country code filter. |
device_os | string | Device operating system filter. Allowed values: iOS, Android. |
granularity | string | Reporting bucket size. Defaults to daily. Allowed values: daily, hourly. |
Responses
{
"columns": [
"<string>"
],
"rows": [
[
"<string>"
]
],
"row_count": 123
}200 CSV-schema export rows.
| Field | Type | Description |
|---|---|---|
columnsrequired | array of string | |
rowsrequired | array of array of string | |
row_countrequired | integer<int64> |
400 Invalid request parameters.
| Field | Type | Description |
|---|---|---|
errorrequired | string |
401 Unauthorized.
| Field | Type | Description |
|---|---|---|
errorrequired | string |
403 Forbidden.
| Field | Type | Description |
|---|---|---|
errorrequired | string |
500 Internal server error.
| Field | Type | Description |
|---|---|---|
errorrequired | string |
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:
| Position | Column | String value |
|---|---|---|
| 1 | date | UTC calendar date in YYYY-MM-DD. |
| 2 | network_name | Dynamic buyer adapter name, or CloudX Exchange for CloudX settlement. |
| 3 | app_name | App name enriched from the live configuration when the ad unit matches it. Otherwise source text. |
| 4 | app_store_id | App bundle ID enriched from the live configuration when the ad unit matches it. It is not always a numeric store ID. |
| 5 | platform | Source platform text. Casing is not normalized, for example android or iOS. |
| 6 | ad_unit_id | Dynamic CloudX ad-unit ID. |
| 7 | ad_type | Lowercase configured ad-unit type when the ad unit matches the live configuration, such as banner, interstitial, rewarded, mrec, or native. |
| 8 | network_placement | Active mapped network placement_id, if configured. Otherwise an empty string. |
| 9 | country | ISO 3166-1 alpha-2 country code, or an empty string when unavailable. |
| 10 | impressions | Base-10 integer count. |
| 11 | clicks | Base-10 integer count. |
| 12 | revenue | Decimal currency amount with exactly two fractional digits. |
| 13 | attempts | Base-10 integer request count. |
| 14 | responses | Base-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
}