Feed Runs
View per-feed run history, check the latest run status, and download feed output files.
A feed run is the output of applying a feed’s rules and transformations to an extract. Each time an extract completes, every active feed generates a new run. The latest completed run determines the published feed file at the feed’s URL.
Runs are scoped to a specific feed — use the feed ID in the path to access a feed’s run history.
List runs
/v1/feeds/:feed_id/runs Returns a paginated list of runs for a specific feed, 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/feeds/feed_1/runs?page=1&per_page=10" \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": [
{
"id": "run_234",
"object": "run",
"feed_id": "feed_1",
"status": "completed",
"has_output": true,
"created_at": "2026-03-09T15:05:00Z",
"completed_at": "2026-03-09T15:05:30Z"
},
{
"id": "run_233",
"object": "run",
"feed_id": "feed_1",
"status": "completed",
"has_output": true,
"created_at": "2026-03-08T14:05:00Z",
"completed_at": "2026-03-08T14:05:25Z"
}
],
"meta": {
"page": 1,
"per_page": 10,
"total": 45,
"total_pages": 5,
"has_more": true
}
}
Run response fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier with run_ prefix. |
object | string | Always "run". |
feed_id | string | ID of the feed this run belongs to (with feed_ prefix). |
status | string | Run status: "running", "completed", or "failed". |
has_output | boolean | Whether a downloadable output file is available. |
created_at | string | ISO 8601 timestamp when the run started. |
completed_at | string | null | ISO 8601 timestamp when the run finished. |
Run status values
| Status | Description |
|---|---|
running | Feed transformations are being applied to the extract data. |
completed | Run finished successfully. The feed output file is available. |
failed | Run encountered an error during transformation. |
Get a run
/v1/feeds/:feed_id/runs/:id Returns a single run by ID.
Required scope: read_exports
Request
curl https://app.simpleproductfeeds.com/v1/feeds/feed_1/runs/run_234 \
-H "Authorization: Bearer spf_live_sk_your_key_here"
The run_ prefix is optional — both run_234 and 234 are accepted.
Response
Returns a single run object wrapped in data.
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No run found with the given ID for this feed. |
Get latest run
/v1/feeds/:feed_id/runs/latest Returns the most recent completed run for a feed. This is the run that produced the currently published feed file.
Required scope: read_exports
Request
curl https://app.simpleproductfeeds.com/v1/feeds/feed_1/runs/latest \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
Returns a single run object wrapped in data.
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No completed runs found for this feed. |
Download feed output
/v1/feeds/:feed_id/runs/latest/download Returns a temporary presigned URL to download the output file from the latest completed run. This is the fully transformed feed file — the same content served at the feed’s public URL.
Required scope: read_exports
Request
curl https://app.simpleproductfeeds.com/v1/feeds/feed_1/runs/latest/download \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": {
"download_url": "https://s3.amazonaws.com/...",
"filename": "feed_1.txt",
"expires_in": 300
}
}
| 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 (300). |
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No completed runs found for this feed, or the output file is not available. |