Exports
List export history, check export status, and download source CSV files from completed exports.
List exports
GET
/v1/exports Returns a paginated list of exports, most recent first.
Required scope: read_exports
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number. |
per_page | integer | 25 | Results per page (maximum 100). |
Request
curl "https://app.simpleproductfeeds.com/v1/exports?page=1&per_page=10" \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": [
{
"id": "exp_567",
"object": "export",
"status": "completed",
"rows_count": 1482,
"started_at": "2026-03-09T14:25:00Z",
"completed_at": "2026-03-09T14:30:00Z",
"failed_at": null,
"error_details": null,
"has_source_csv": true,
"created_at": "2026-03-09T14:24:00Z"
},
{
"id": "exp_566",
"object": "export",
"status": "failed",
"rows_count": 0,
"started_at": "2026-03-09T12:00:00Z",
"completed_at": null,
"failed_at": "2026-03-09T12:01:30Z",
"error_details": "Shopify API rate limit exceeded",
"has_source_csv": false,
"created_at": "2026-03-09T12:00:00Z"
}
],
"meta": {
"page": 1,
"per_page": 10,
"total": 45,
"total_pages": 5,
"has_more": true
}
}
Response fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier with exp_ prefix. |
object | string | Always "export". |
status | string | Export status: "pending", "running", "completed", "failed", or "cancelled". |
rows_count | integer | Number of product rows in the export. |
started_at | string | null | ISO 8601 timestamp when the export started processing. |
completed_at | string | null | ISO 8601 timestamp when the export finished successfully. |
failed_at | string | null | ISO 8601 timestamp when the export failed, if applicable. |
error_details | string | null | Error message if the export failed. |
has_source_csv | boolean | Whether a downloadable source CSV is available. |
created_at | string | ISO 8601 timestamp when the export was created. |
Export status values
| Status | Description |
|---|---|
pending | Export is queued and waiting to start. |
running | Export is currently fetching products or generating the feed. |
completed | Export finished successfully. |
failed | Export encountered an error. See error_details. |
cancelled | Export was stopped before completion. |
Get an export
GET
/v1/exports/:id Returns a single export by ID.
Required scope: read_exports
Request
curl https://app.simpleproductfeeds.com/v1/exports/exp_567 \
-H "Authorization: Bearer spf_live_sk_your_key_here"
The exp_ prefix is optional — both exp_567 and 567 are accepted.
Response
Returns a single export object wrapped in data.
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No export found with the given ID. |
Download export CSV
GET
/v1/exports/:id/download Returns a temporary presigned URL to download the source CSV for an export.
Required scope: read_exports
Request
curl https://app.simpleproductfeeds.com/v1/exports/exp_567/download \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": {
"download_url": "https://s3.amazonaws.com/...",
"filename": "export_567.csv",
"expires_in": 3600
}
}
| Field | Type | Description |
|---|---|---|
download_url | string | Presigned S3 URL. Valid for the duration specified in expires_in. |
filename | string | Suggested filename for the download. |
expires_in | integer | Number of seconds until the download URL expires. |
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No export found with the given ID. |
| 404 | no_download | This export does not have a downloadable source CSV. |