Best Practices for Exporting Reports

This guide will help you optimize your ReportExport integration. Key topics include exporting reports efficiently, refreshing data when needed, and avoiding unnecessary API usage or rate-limit issues.

Streamline your report export

  1. Send a request to /ReportExport with your desired parameters. See Export a report to learn how.

  2. Track the status of the job in the following way after submitting your export request:

    • Poll (i.e., check periodically) the Jobs API by using the URIs returned in the /ReportExport response to the call: GET /Jobs/{Id}.
  3. Once the job reaches a Completed state, download the file by calling: /Jobs/{Id}/Download.

    All completed job results are cached indefinitely, meaning your data will remain available for download at any time in the future.

Managing report data & replays

If you need refreshed or updated results for a previously completed job, use: /Jobs/{Id}/Replay endpoint. To maintain optimal performance and stay within your API rate limits, keep these best practices in mind:

  • When to replay: Only trigger a replay if the original job FAILED or CANCELLED, or if you know the underlying data has been updated.
  • Timing is key: Avoid replaying a job immediately after the initial request. For the most up-to-date information, request exports later in the day or the following day once datasets have fully synchronized.
  • Avoid redundancy: Don't call /ReportExport again with the same parameters to refresh data; it won't change the results and will simply count against your quota.
  • Optimize range: Use smaller date ranges whenever possible to improve download performance and reduce export size.
  • Limit frequency: Avoid integrations that repeatedly trigger replays or re-run the same report multiple times per day.

Frequently asked questions

How long are results available for download?

Results are currently stored indefinitely.

Is there a limit to how often I can poll for a status?

No, there is no specific limiter on polling.

Why am I getting the same Job ID every time I call /ReportExport?

The system detects duplicates requests with identical parameters and returns the existing JobId to save resources. A new ID is only generated if parameters change or if a new calendar day has passed (for default date ranges).