Three lines

Uber

Developers

Get Started with Async Reporting

The Uber Ads API asynchronous reporting system is ideal for bulk data exports, scheduled reports, and historical analysis. Report generation is a two-step process: submit a request to receive a report_id, then poll the status endpoint until the report is ready for download.

Step 1: Submit Report Request

Endpoint: POST /v1/ads/{account_id}/reporting/report

curl -X POST "https://api.uber.com/v1/ads/{account_id}/reporting/report" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "report_type": "AD_PERFORMANCE",
    "time_range": {
      "start_time": "2025-09-24T00:00:00Z",
      "end_time": "2025-09-24T23:59:59Z"
    },
    "columns": ["campaign_id", "impressions", "clicks", "ad_spend"],
    "time_unit": "DAILY",
    "file_format": "CSV"
  }'

Response:

{
  "report_id": "{report_uuid}"
}

Step 2: Poll Report Status

Once you have submitted a report request, generation typically takes a few minutes but can vary based on report complexity and data volume. Use the report_id returned from your initial request to check the generation status by calling the GET report endpoint. The download URL expires 5 minutes after the report status becomes COMPLETED.

Endpoint: GET /v1/ads/{account_id}/reporting/{report_id}

curl -X GET "https://api.uber.com/v1/ads/{account_id}/reporting/{report_id}" \
  -H "Authorization: Bearer {ACCESS_TOKEN}"

Possible status values: COMPLETED, FAILED, PROCESSING

Response when completed:

{
  "status": "COMPLETED",
  "result": {
    "success_result": {
      "report_url": "https://example.com/report.csv",
      "file_size": "526",
      "url_expires_at": "2025-09-30T08:44:36Z",
      "report_schema": ["campaign_id", "impressions", "clicks", "ad_spend"]
    }
  },
  "started_at": "2025-09-24T17:53:11Z",
  "finished_at": "2025-09-24T17:53:12Z"
}

Uber

Developers
© 2026 Uber Technologies Inc.