post
https://api.ashbyhq.com/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:
- Call with only
reportIdto start generation and receive arequestId. - Poll with both
reportIdandrequestIdevery second untilstatusiscompleteorfailed.
Result Style (resultStyle):
inline(default): completed report data is embedded in the response underreportData.url: for a completed report,reportDatacontainsurl(a short-lived presigned S3 download URL) andmetadatainstead of the inlinedata/columnNames. Use this to download large reports directly from S3 instead of through the API.includeHeadersInDatamust betrue(or omitted) whenresultStyleisurl.- Repeat
resultStyleon every poll (step 2, withrequestId). The requested style is not stored server-side, so a poll that omitsresultStyledefaults toinlineand returnsreportDataeven for a report started withresultStyle: url. - The presigned download is served with
Content-Encoding: br(Brotli) and no content negotiation, so the client fetchingreportData.urlmust decode Brotli. Browsers,node-fetch,curlinstalled frombrew, and Pythonrequestswith thebrotli/brotlicffipackage decode it automatically; stock macOScurland a barepip install requestsdo not. - For "Show All" reports whose result is a single aggregate count, the response falls back to
inline:reportDatacontainsdata/columnNamesand nourl. Detect the fallback by checking forreportData.datawith noreportData.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
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…

