Activity Exports

Create and download asynchronous impression, request, and bid activity exports with the CloudX CLI.

Activity Exports

Use the cloudx export group to create asynchronous activity exports for completed UTC dates:

  • cloudx export impressions for impression-level revenue data
  • cloudx export requests for request-level auction activity
  • cloudx export bids for bid and non-bid activity

Each command prints an export ID and its current status. Add --wait to wait for a terminal status, or use --output <path> to wait and download the gzip-compressed CSV file.

cloudx export bids

Creates a full-day bid activity export as a gzip-compressed CSV file. By default, the file contains bid responses together with no-bid, timeout, and error rows, which supports analysis from bidder request through bid outcome. The export runs asynchronously so large result sets do not have to fit within a normal API response.

Winner rows contain the actual bid price. For losing bid rows, bid_price_cpm is always 0 and bid_price_disclosure is redacted.

Usage

cloudx export bids --date YYYY-MM-DD [filters] [--wait] [--output <path>]

--date is required and must identify a completed UTC day within the previous 45 days. The current UTC day cannot be exported because it is not complete.

Options

FlagRequiredDescription
--dateYesCompleted UTC day in YYYY-MM-DD format. Must be within the previous 45 days.
--appNoApp bundle, for example com.example.game.
--ad-unit-idNoCloudX ad unit ID.
--countryNoISO 3166-1 alpha-2 country code, for example US or GB.
--device-osNoDevice OS. Allowed values: iOS, Android.
--bidderNoBidder/network code.
--bids-onlyNoExclude no-bid, timeout, and error rows.
--test-modeNoTraffic to include: production, test, or all. Default: production.
--waitNoPoll until the export is ready or failed.
--outputNoDownload the ready .csv.gz file to this path. Implies --wait.

Only two bid activity exports may be processing for an account at the same time. Submitting the same date and filters again reuses the matching queued, running, or completed export instead of creating duplicate work.

When an export is ready, CloudX returns a download URL that expires after one hour. Re-running the same command can issue a fresh URL while the generated file is still retained. Generated files are retained for up to seven days.

Examples

Queue an export and print its export ID and current status:

cloudx export bids --date 2026-08-10

Wait for completion and download all bidder outcomes:

cloudx export bids \
  --date 2026-08-10 \
  --output ./bids-2026-08-10.csv.gz

Download only bid responses for one app and bidder:

cloudx export bids \
  --date 2026-08-10 \
  --app com.example.game \
  --bidder example-bidder \
  --bids-only \
  --output ./example-bidder-2026-08-10.csv.gz

API workflow

API clients can create the same export with POST /export/bids. The response contains an export_id and a processing, ready, or failed status. Poll GET /export/bids/{export_id} until the status is terminal; a ready response includes a short-lived url and expires_at.

{
  "date": "2026-08-10",
  "app_bundle": "com.example.game",
  "bidder": "example-bidder",
  "include_non_bids": true,
  "test_mode": "production"
}

CSV Schema

The CSV contains one row per matching bidder outcome. Row order is not guaranteed.

ColumnDescription
event_timeBidder outcome event time in UTC.
processing_date_and_hourUTC processing hour in YYYYMMDD_HH format.
auction_idAuction ID and join key for related exports.
time_usecEvent time as Unix epoch microseconds.
bid_idBid ID, when a bidder returned one.
imp_idOpenRTB impression ID.
round_numberAuction round number.
priorityAuction round priority.
app_bundleApp bundle or package name.
ad_unit_idCloudX ad unit ID.
bidderBidder/network code.
statusRecorded bidder outcome, such as bid, nobid, timeout, or error.
nonbid_reasonNumeric non-bid reason. See the code details below.
bid_rejection_reasonwinner, outbid, a recorded rejection reason, or the non-bid status.
bid_price_cpmBid price in CPM. Actual for the winner; always 0 for losing bids.
bid_price_disclosureactual, redacted, or not_applicable.
effective_floor_cpmEffective seller floor in CPM.
effective_floor_sourceSource used to determine the effective floor.
deal_idDeal ID returned with the bid, when available.
countryUppercase ISO country code.
device_osDevice operating system.
test_modetrue for test traffic; false for production traffic.
http_statusBidder HTTP response status, when available.
latency_msBidder response latency in milliseconds.
error_typeRecorded bidder error type, when applicable.
currencyCPM currency. Currently USD.

nonbid_reason follows the IAB Tech Lab Seat Non-Bid status-code ranges. CloudX passes through bidder-supplied OpenRTB nbr values from 1 through 99. When CloudX determines the outcome, it currently emits these values:

ValueMeaning
0No bid: general. This value also applies when the bidder omits nbr or returns an invalid value.
100Error: general.
101Error: timeout.
103Error: bidder unreachable.
300Response rejected: general.
301Response rejected: below floor.
303Response rejected: invalid category mapping.
304Response rejected: below deal floor.
305Response rejected: bid currency not supported. This value is CloudX-specific.
351Response rejected: creative size not allowed.
352Response rejected: creative is not secure.

cloudx export requests

Creates a full-day request activity export as a gzip-compressed CSV file, with one row per CloudX auction request. Use it to analyze request volume, fill decisions, bidder participation, and auction latency. The export runs asynchronously so large result sets do not have to fit within a normal API response.

request_status is filled when the auction selected a winner, unfilled when it did not, and error when request processing failed. A filled request does not guarantee that the client ultimately rendered an impression; join auction_id to the impression export for impression delivery and revenue.

Usage

cloudx export requests --date YYYY-MM-DD [filters] [--wait] [--output <path>]

--date is required and must identify a completed UTC day within the previous 45 days. The current UTC day cannot be exported because it is not complete.

Options

FlagRequiredDescription
--dateYesCompleted UTC day in YYYY-MM-DD format. Must be within the previous 45 days.
--appNoApp bundle, for example com.example.game.
--ad-unit-idNoCloudX ad unit ID.
--countryNoISO 3166-1 alpha-2 country code, for example US or GB.
--device-osNoDevice OS. Allowed values: iOS, Android.
--request-statusNoRequest outcome. Allowed values: filled, unfilled, error.
--test-modeNoTraffic to include: production, test, or all. Default: production.
--waitNoPoll until the export is ready or failed.
--outputNoDownload the ready .csv.gz file to this path. Implies --wait.

Only two request activity exports may be processing for an account at the same time. Submitting the same date and filters again reuses the matching queued, running, or completed export instead of creating duplicate work.

When an export is ready, CloudX returns a download URL that expires after one hour. Re-running the same command can issue a fresh URL while the generated file is still retained. Generated files are retained for up to seven days.

Examples

Wait for completion and download all request outcomes:

cloudx export requests \
  --date 2026-08-10 \
  --output ./requests-2026-08-10.csv.gz

Download unfilled production requests for one app and country:

cloudx export requests \
  --date 2026-08-10 \
  --app com.example.game \
  --country US \
  --request-status unfilled \
  --output ./unfilled-requests-2026-08-10.csv.gz

API workflow

API clients can create the same export with POST /export/requests. The response contains an export_id and a processing, ready, or failed status. Poll GET /export/requests/{export_id} until the status is terminal; a ready response includes a short-lived url and expires_at.

{
  "date": "2026-08-10",
  "app_bundle": "com.example.game",
  "request_status": "unfilled",
  "test_mode": "production"
}

CSV Schema

The CSV contains one row per matching CloudX auction request. Row order is not guaranteed.

ColumnDescription
event_timeRequest event time in UTC.
processing_date_and_hourUTC storage processing hour in YYYYMMDD_HH format.
auction_idAuction ID and join key for bid and impression exports.
time_usecEvent time as Unix epoch microseconds. Source precision is milliseconds.
app_idCloudX app ID resolved from the current inventory configuration, when available.
app_bundleApp bundle or package name received with the request.
app_nameApp name received with the request, when available.
ad_unit_idCloudX ad unit ID resolved from the current inventory configuration; otherwise the request placement ID.
ad_formatAd format resolved from the current inventory configuration, when available.
request_statusfilled, unfilled, or error.
is_filled_requesttrue when CloudX selected an auction winner.
http_statusHTTP status returned by the auction endpoint.
imp_countNumber of OpenRTB impression opportunities in the request.
priorityPriority of the winning or final attempted auction round.
bidder_countNumber of bidder calls made across the auction.
bid_countNumber of bid responses recorded across the auction.
nonbid_countNumber of non-bid outcomes recorded across the auction.
has_winnertrue when the auction selected a winner.
winner_bidderWinning bidder/network code, when filled.
auction_duration_msAuction processing duration in milliseconds.
countryUppercase ISO 3166-1 alpha-2 country code when recognized.
device_osDevice operating system.
device_typeRecorded device type, when available.
os_versionDevice OS version, when available.
sdk_versionCloudX SDK version, when available.
session_idPublisher SDK session identifier, when supplied.
test_modetrue for test traffic; false for production traffic.
ab_test_idCloudX A/B test ID, when assigned.
ab_test_variantAssigned A/B test variant, when available.
errorRecorded request-processing error, when applicable.

cloudx export impressions

Creates a full-day, impression-level revenue export as a gzip-compressed CSV file. The export runs asynchronously so large result sets do not have to fit within a normal API request. When a publisher supplies a hashed user ID and applicable privacy signals allow it, the export includes that value for user-level revenue analysis.

Usage

cloudx export impressions --date YYYY-MM-DD [filters] [--wait] [--output <path>]

--date is required and must identify a completed UTC day within the previous 45 days. The current UTC day cannot be exported because it is not complete.

Options

FlagRequiredDescription
--dateYesCompleted UTC day in YYYY-MM-DD format. Must be within the previous 45 days.
--app-idNoCloudX app ID. Cannot be combined with --app.
--appNoApp bundle, for example com.example.game. Cannot be combined with --app-id.
--ad-unit-idNoCloudX ad unit ID.
--countryNoISO 3166-1 alpha-2 country code, for example US or GB.
--device-osNoDevice OS. Allowed values: iOS, Android.
--bidderNoBidder/network code.
--line-item-idNoCloudX line item ID.
--test-modeNoTraffic to include: production, test, or all. Default: production.
--waitNoPoll until the export is ready or failed. The wait can run for up to 2 hours and 15 minutes.
--outputNoDownload the ready .csv.gz file to this path. Implies --wait.

Only two impression exports may be processing for an account at the same time. Submitting the same date and filters again reuses the matching queued, running, or completed export instead of creating duplicate work.

When an export is ready, CloudX returns a download URL that expires after one hour. Re-running the same command can issue a fresh URL while the generated file is still retained. Generated files are retained for up to seven days.

Examples

Queue an export and print its export ID and current status:

cloudx export impressions --date 2026-07-16

Wait for completion and download the result:

cloudx export impressions \
  --date 2026-07-16 \
  --output ./impressions-2026-07-16.csv.gz

Export production impressions for one iOS app in the United States:

cloudx export impressions \
  --date 2026-07-16 \
  --app com.example.game \
  --country US \
  --device-os iOS \
  --test-mode production \
  --output ./example-game-us-ios.csv.gz

Check the downloaded archive and preview its header and first rows:

gzip -t ./impressions-2026-07-16.csv.gz
gzip -cd ./impressions-2026-07-16.csv.gz | head

API workflow

API clients can create the same export with POST /export/impressions. The response contains an export_id and a processing, ready, or failed status. Poll GET /export/impressions/{export_id} until the status is terminal; a ready response includes a short-lived url and expires_at.

CSV Schema

The CSV contains one row per matching impression. Row order is not guaranteed.

ColumnDescription
event_timeImpression event time in UTC.
impression_idUnique impression event ID.
auction_idRelated auction ID.
bid_idWinning bid ID.
app_idCloudX app ID.
app_bundleApp bundle or package name.
ad_unit_idCloudX ad unit ID.
ad_unit_nameAd unit display name.
ad_formatAd format recorded for the impression.
placementPublisher placement value.
custom_dataPublisher-provided custom data.
hashed_user_idPublisher-provided hashed user ID captured at auction time. Empty when no ID was set, privacy signals suppressed persistence, or the value exceeded 128 characters.
countryUppercase ISO country code.
device_osDevice operating system.
device_typeDevice type recorded for the impression.
advertising_idDevice advertising identifier, when available.
advertising_vendor_idVendor identifier, when available.
test_modetrue for test traffic; false for production traffic.
networkBidder/network code.
line_item_idCloudX line item ID.
price_cpmWinning price expressed as CPM.
revenue_usdRevenue for this individual impression in USD.
currencyRevenue currency. Currently USD.
revenue_precisionRevenue precision. Currently exact.
creative_idCreative ID, when available.
network_placement_idNetwork-side placement ID, when available.
ab_test_idA/B test ID, when applicable.
ab_test_variantA/B test variant, when applicable.