Report URL Result Style

  • report.generate and report.synchronous now accept an optional resultStyle parameter. With resultStyle: "url", a completed report's reportData carries a short-lived presigned S3 download url and metadata instead of the inline data/columnNames, letting clients download large reports directly from S3.
  • The presigned download is served with Content-Encoding: br (Brotli) and no content negotiation, so clients fetching reportData.url must decode Brotli. Browsers, node-fetch, and Python requests with the brotli/brotlicffi package decode it automatically; stock macOS curl and a bare pip install requests do not.
  • Once decoded, the downloaded body is JSON of the form { data, columnNames, metadata } — the same shape as inline reportData, with column headers as the first row of data. Its metadata carries only updatedAt and title; the read-time reportGeneratedAt/cacheExpiresAt timestamps appear on the API response's reportData.metadata, not in the downloaded file.
  • With resultStyle: "url", a small set of completed reports whose cached result is stored in the legacy inline format fall back to inlinereportData carries data/columnNames and no url. Detect the fallback by checking for reportData.data with no reportData.url.