Overview
This API provides real-time reporting for Marketplace Performance Outcomes (MPO) via an asynchronous export workflow designed for large volumes of data.- Data latency: Approximately 10 minutes.
- Base URL:
- Compatibility: This endpoint supports both multi-seller and single-seller campaign configurations.
- Create an asynchronous report job with your filters.
- Poll the job status until it is complete.
- Download the generated export file (CSV or JSON).
1. Create a report job
Endpoint:POST /stats/realtime-reports/export
Submit a request with your desired filters. The API creates an export job and returns an identifier (UUID) and a status (typically Pending).
2. Poll for Completion
Endpoint:GET /stats/report-jobs/{reportId}
Poll the job status until it reaches Done. Do not poll more than once every 5–10 seconds to remain within rate limits.
- Status options:
Pending,Done,Failure,Expired. - Note: Identical requests may reuse cached results, returning a previously generated ID.
3. Download the report
Endpoint:GET /stats/realtime-reports/{reportId}
Once the status is Done, this call returns the raw file bytes.
- CSV output:
Content-Type: text/csv. - JSON output:
Content-Type: application/json.
Data models
Request attributes (RealTimeProductReportJob)
Field | Type | Description |
|---|---|---|
| string | Output format: |
| array[string] | IDs of advertiser accounts. |
| array[string] | Optional campaign filter. |
| array[string] | Optional seller filter. |
| array[string] | Aggregation levels (for example, |
| array[string] | Metrics to retrieve. Default: |
| integer | Duration in minutes counted backwards from now (60–1440). Mutually exclusive with |
| string | ISO-8601 UTC start time; must be within the last 24 hours from the time of the request. |
| string | ISO-8601 UTC end time. If omitted, defaults to the current time when |
| string | IANA time zone identifier (default: |
Dimensions
Dimension | Description | Constraints |
|---|---|---|
| ID of the advertiser. | — |
| ID of the partner. | — |
| ID of the campaign (ad set-level entity in MPO). | — |
| ID of the seller used in the MPO public API. | — |
| Client-provided product ID. | Cannot be combined with |
| Start of hourly aggregation bucket (ISO-8601; minutes/seconds = 00) in the requested time zone. | Cannot be combined with |
| Start of minute aggregation bucket (ISO-8601; seconds = 00) in the requested time zone. | Cannot be combined with |
Metrics
Metric | Description |
|---|---|
| Number of clicks generated. |
| Number of display opportunities used. |
| Total cost in the advertiser account currency. |
Step 1. Create an Async Report Job
This endpoint creates a new asynchronous report job for a real-time product report. The backend triggers production of an export file and may reuse cached results when the same request has already been processed.Sample Request
Sample Response
Successful Response
Error Example: unsupported fileFormat
If fileFormat is not one of csv or json, the API returns a 400 Bad Request validation error.
Step 2. Poll for completion
This endpoint polls the job status until it reachesDone.Do not poll more than once every 5–10 seconds to remain within rate limits.
- Status options:
Pending,Done,Failure,Expired. - Note: Identical requests may reuse cached results, returning a previously generated ID.
Step 3. Download Report Output
This endpoint downloads the file corresponding to a completed export job.status = Done (typically up to 4 hours). If the file has expired, you must create a new export job and download its output within this retention window.- If
fileFormat = csv→Content-Type: text/csv - If
fileFormat = json→Content-Type: application/json
Path Parameters
Name | In | Type | Description |
|---|---|---|---|
| path | string (UUID) | Unique ID of the export job. |
Example Request
Successful response
- 200 OK only if job status is
Done. - Body contains raw file bytes (CSV or JSON).
Output formats
CSV output
The response contains a header row followed by data rows.JSON output
The response contains a columnar JSON payload with adata array and top-level columns and rows fields.
Validation rules
The following validation rules are explicitly described via field notes and domain errors.1) Required fields
advertiserIdsis required.- Missing required fields yields
invalid-query.
2) File format
fileFormatmust be one ofcsvorjson.- Otherwise the API returns
json-serialization-error(as shown in the example).
3) Time interval definition
You must use exactly one of:- Relative interval:
lookbackWindow(minutes from now). - Absolute interval:
startDate(and optionallyendDate).
lookbackWindowmust be within 60–1440.lookbackWindowcannot be combined withstartDateand/orendDate.startDateis mutually exclusive withlookbackWindow.startDatemust be within the last 24 hours relative to “now”. Requests with an olderstartDateare rejected.- If
startDateis provided andendDateis omitted,endDatedefaults to the current time.
4) Time zone
timezonemust exist in the IANA Time Zone database.- Invalid time zones yield
invalid-query(as part of “invalid query definition”).
5) Dimension combination constraints
- Only one of the following dimensions can be used in a single request:
productIdhourminute
invalid-dimensioncombination.
6) Report lifecycle constraints
- Downloading output is only valid when
status == Done. - If the job does not exist (or is not visible), the API returns
export-not-foundand maps it to HTTP403. - If the job exists, but the output has been permanently deleted, the API returns
export-alreadyexpired.
7) Caching behavior (identical requests)
- Identical requests may reuse cached results, meaning a previous export/report ID may be returned instead of generating a new export.
Errors & status codes
HTTP status codes
HTTP | Meaning |
|---|---|
400 | Bad request (invalid syntax or validation error). |
401 | Authentication failed (missing or expired token). |
403 | Insufficient permissions, no campaign found in scope, or export job not found. |
409 | Conflicting parameters (for example, invalid combination of filters). |
429 | Throttling limit reached (example value noted: 200 requests/minute — to be confirmed). |
500 | Internal server error. |
Domain errors / validation errors
Code | Title / Description | Notes |
|---|---|---|
| Insufficient account permissions | Caller lacks rights for specified advertisers. |
| Invalid query definition | Missing required fields, unsupported dimensions/metrics, invalid time zone, invalid IDs. |
| Invalid lookback window | Outside 60–1440 or combined with dates. |
| Invalid time interval definition | Dates combined with |
| Invalid combination of dimensions | Only one of |
| Unsupported file format | Only CSV and JSON are supported. |
| Export job not found | Requested |
| Export already expired | Output has been permanently deleted. |