report.generate

Beta

This endpoint is currently in beta and may change without notice.

Generates a new report or polls the status of an existing report generation.

Two-step process:

  1. Call with only reportId to start generation and receive a requestId.
  2. Poll with both reportId and requestId every second until status is complete or failed.

Result Style (resultStyle):

  • inline (default): completed report data is embedded in the response under reportData.
  • url: for a completed report, reportData contains url (a short-lived presigned S3 download URL) and metadata instead of the inline data/columnNames. Use this to download large reports directly from S3 instead of through the API. includeHeadersInData must be true (or omitted) when resultStyle is url.
  • Repeat resultStyle on every poll (step 2, with requestId). The requested style is not stored server-side, so a poll that omits resultStyle defaults to inline and returns reportData even for a report started with resultStyle: url.
  • The presigned download is served with Content-Encoding: br (Brotli) and no content negotiation, so the client fetching reportData.url must decode Brotli. Browsers, node-fetch, curl installed from brew, and Python requests with the brotli/brotlicffi package decode it automatically; stock macOS curl and a bare pip install requests do not.
  • For "Show All" reports whose result is a single aggregate count, the response falls back to inline: reportData contains data/columnNames and no url. Detect the fallback by checking for reportData.data with no reportData.url. Report types that are not supported by the public API continue to return the standard "not supported" error rather than falling back.

Rate Limiting (Per Organization):

  • Start generation requests (without requestId): 15 requests per minute per organization.
  • Concurrent limit: Maximum 3 report operations at once per organization (shared with report.synchronous).
  • Polling requests (with requestId): Bypass all limits.

Usage Notes:

  • If you receive a 429 error, your organization has hit its limit. Wait and retry or use report.synchronous.
  • For synchronous retrieval of existing data, use report.synchronous.
  • Use this async endpoint for reports that may exceed 30 seconds.

Requires the reportsRead permission.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
uuid
required
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

The ID of the report

When true (default), column headers are included as the first row in the data array. When false, headers are only in the columnNames property.

enum

How completed report data is returned. "inline" (default) embeds the data in the response; "url" returns a short-lived presigned S3 download URL instead. Requires includeHeadersInData to be true (or omitted) when "url".

Request ID for polling existing report generation status.

Response

Language
Credentials
Basic
base64
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json