Export Process Overview
Exports are intended to deal with requests for large data sets where it doesn't make sense to use the normal process of working with JSON and paging through results.
Step 1: Request Export
Make a call to get the export you need from the list of export methods. The response will contain the jobID you'll need to check the status of the export job.
A job is considered a duplicate when there is an existing job with a status of "Pending" for the same call (e.g. /exports/emails/) with the same parameters (i.e. the same date range). If a duplicate job exists, an error will be returned. Consider preventing your app from making the exact same call so quickly. Bulk export data is not intended to change rapidly.
Step 2: Check Job Status
Using the jobID returned from your export request, make a call to request the status of the job. Keep checking periodically until the job status is "Completed" or "Failed". Under normal circumstances, jobs will be completed within a few minutes of the original request. For a list of all possible statuses, see /exports/jobStatus.
Job Not Completed
Job Completed with No Records
If no records are returned, a file will not be generated and the process is complete.
Job Completed with Records
This is the response you're looking for. When the job is completed and has records, the response will contain the fileKey you will use to retrieve the file (see Step 3). The file will be available until the time specified by the fileExpiration (remember, all times are GMT).
Step 3: Retrieve File
For details on the response file format, see /exports/getFile.