curl https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files \
-H "x-api-key: $STREAMPIXEL_API_KEY"
const res = await fetch(
'https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files',
{ headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } }
);
const { files, liveBuildId } = await res.json();
const inFlight = files.filter((f) => f.state);
import os, requests
r = requests.get(
"https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files",
headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
)
data = r.json()
in_flight = [f for f in data["files"] if "state" in f]
{
"projectId": "664f1a2b3c4d5e6f7a8b9c0d",
"region": "Europe",
"autoRelease": true,
"liveBuildId": "665a2b3c4d5e6f7a8b9c0e1f",
"total": 2,
"files": [
{
"id": "66a0b1c2d3e4f5a6b7c8d9e0",
"status": "Distributing to Servers",
"phase": "distributing",
"uploadedAt": "2026-09-26T09:12:04.000Z",
"statusUpdatedAt": "2026-09-26T09:31:40.000Z",
"note": null,
"unrealVersion": "5.4",
"psVersion": 2,
"appPath": null,
"lastRetryError": null,
"lastRetryAt": null,
"queue": { "inQueue": true, "position": 2, "ahead": 1, "processingNow": false },
"state": "queued",
"verdict": "Genuinely queued: 1 build ahead of it in this region, the oldest queued 14 min ago, and the build machine is busy on one of them. It is processed in order.",
"likelyStuck": false
},
{
"id": "665a2b3c4d5e6f7a8b9c0e1f",
"status": "Approved",
"phase": "live",
"uploadedAt": "2026-09-20T15:02:11.000Z",
"statusUpdatedAt": "2026-09-20T15:41:03.000Z",
"note": null,
"unrealVersion": "5.4",
"psVersion": 2,
"appPath": "665a2b3c4d5e6f7a8b9c0e1f",
"lastRetryError": null,
"lastRetryAt": null
}
],
"queue": {
"region": "Europe",
"totalInQueue": 2,
"builders": { "total": 1, "online": 1, "busy": 1, "idle": 0, "lastReportAt": "2026-09-26T09:45:12.000Z", "redisTrouble": false }
}
}
List Builds
Every build uploaded to a project with its pipeline phase, and for builds still in flight, their place in the region’s queue.
GET
/
api
/
v1
/
projects
/
{projectId}
/
files
curl https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files \
-H "x-api-key: $STREAMPIXEL_API_KEY"
const res = await fetch(
'https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files',
{ headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } }
);
const { files, liveBuildId } = await res.json();
const inFlight = files.filter((f) => f.state);
import os, requests
r = requests.get(
"https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files",
headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
)
data = r.json()
in_flight = [f for f in data["files"] if "state" in f]
{
"projectId": "664f1a2b3c4d5e6f7a8b9c0d",
"region": "Europe",
"autoRelease": true,
"liveBuildId": "665a2b3c4d5e6f7a8b9c0e1f",
"total": 2,
"files": [
{
"id": "66a0b1c2d3e4f5a6b7c8d9e0",
"status": "Distributing to Servers",
"phase": "distributing",
"uploadedAt": "2026-09-26T09:12:04.000Z",
"statusUpdatedAt": "2026-09-26T09:31:40.000Z",
"note": null,
"unrealVersion": "5.4",
"psVersion": 2,
"appPath": null,
"lastRetryError": null,
"lastRetryAt": null,
"queue": { "inQueue": true, "position": 2, "ahead": 1, "processingNow": false },
"state": "queued",
"verdict": "Genuinely queued: 1 build ahead of it in this region, the oldest queued 14 min ago, and the build machine is busy on one of them. It is processed in order.",
"likelyStuck": false
},
{
"id": "665a2b3c4d5e6f7a8b9c0e1f",
"status": "Approved",
"phase": "live",
"uploadedAt": "2026-09-20T15:02:11.000Z",
"statusUpdatedAt": "2026-09-20T15:41:03.000Z",
"note": null,
"unrealVersion": "5.4",
"psVersion": 2,
"appPath": "665a2b3c4d5e6f7a8b9c0e1f",
"lastRetryError": null,
"lastRetryAt": null
}
],
"queue": {
"region": "Europe",
"totalInQueue": 2,
"builders": { "total": 1, "online": 1, "busy": 1, "idle": 0, "lastReportAt": "2026-09-26T09:45:12.000Z", "redisTrouble": false }
}
}
Return every build on a project, newest first, with where each one is in the pipeline. Builds that are still being processed also carry their queue position and a verdict, so a CI job can poll this one endpoint after Upload File instead of guessing.
Scope:
read. A build is called a file in the API because that is what the pipeline receives: a .zip. uploadId from Upload File, fileId here and buildId on the control endpoints are the same value.Prerequisites
| Requirement | Where to get it |
|---|---|
| Project ID | Finding your IDs or List Projects |
API key with read | API authentication |
Path parameters
string
required
The project whose builds to list. Must belong to the key’s account.
Headers
string
required
Your Streampixel API key.
Response
string
The project id.
string
The project’s region:
US-East-1, Europe, Asia Pacific or Australia. Builds are distributed to this region’s streaming servers.boolean
When
false, processed builds stop at Ready until you set one active.string | null
The build currently served to viewers, or
null if none is approved.number
Number of builds on the project.
array
One entry per build, newest first.
Show Build fields
Show Build fields
string
The build id. Use it for Build Status and Set Active Build.
string
Raw pipeline status:
pending, Downloading Files, Extracting & Scanning, Saving to Repository, Ready, Distribute, Distributing to Servers, Approved, Download Failed, Reject.string
The status as a stable word:
waiting, downloading, scanning, saving, ready, queued, distributing, live, failed, rejected.string | null
ISO 8601 upload time.
string | null
ISO 8601 time the status last changed.
null on builds uploaded before this field existed.string | null
The pipeline’s or an operator’s reason when a build failed or was rejected.
string | null
Engine version detected in the build.
number | null
Pixel Streaming plugin generation detected:
1 or 2.object | null
Present only while the build is in flight:
inQueue, position, ahead (builds ahead of it in the region), processingNow.string
Present only while in flight. The verdict from Build Status:
queued, processing, stalled, no_builder_online, ready_for_activation.string
Present only while in flight. One sentence explaining
state.boolean
Present only while in flight.
true when the wait is not a normal queue wait.object | null
Present when any build is in flight:
region, totalInQueue (all entries in the region’s queue, including other customers’, counted only), and builders (total, online, busy, idle, lastReportAt).curl https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files \
-H "x-api-key: $STREAMPIXEL_API_KEY"
const res = await fetch(
'https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files',
{ headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } }
);
const { files, liveBuildId } = await res.json();
const inFlight = files.filter((f) => f.state);
import os, requests
r = requests.get(
"https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/files",
headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
)
data = r.json()
in_flight = [f for f in data["files"] if "state" in f]
{
"projectId": "664f1a2b3c4d5e6f7a8b9c0d",
"region": "Europe",
"autoRelease": true,
"liveBuildId": "665a2b3c4d5e6f7a8b9c0e1f",
"total": 2,
"files": [
{
"id": "66a0b1c2d3e4f5a6b7c8d9e0",
"status": "Distributing to Servers",
"phase": "distributing",
"uploadedAt": "2026-09-26T09:12:04.000Z",
"statusUpdatedAt": "2026-09-26T09:31:40.000Z",
"note": null,
"unrealVersion": "5.4",
"psVersion": 2,
"appPath": null,
"lastRetryError": null,
"lastRetryAt": null,
"queue": { "inQueue": true, "position": 2, "ahead": 1, "processingNow": false },
"state": "queued",
"verdict": "Genuinely queued: 1 build ahead of it in this region, the oldest queued 14 min ago, and the build machine is busy on one of them. It is processed in order.",
"likelyStuck": false
},
{
"id": "665a2b3c4d5e6f7a8b9c0e1f",
"status": "Approved",
"phase": "live",
"uploadedAt": "2026-09-20T15:02:11.000Z",
"statusUpdatedAt": "2026-09-20T15:41:03.000Z",
"note": null,
"unrealVersion": "5.4",
"psVersion": 2,
"appPath": "665a2b3c4d5e6f7a8b9c0e1f",
"lastRetryError": null,
"lastRetryAt": null
}
],
"queue": {
"region": "Europe",
"totalInQueue": 2,
"builders": { "total": 1, "online": 1, "busy": 1, "idle": 0, "lastReportAt": "2026-09-26T09:45:12.000Z", "redisTrouble": false }
}
}
Errors
| Status | code | Cause |
|---|---|---|
403 | API_KEY_SCOPE | The key lacks the read scope. |
403 | — | The project belongs to another account. |
404 | NOT_FOUND | No project with that id. |
Next steps
Build Status
One build’s queue position and a verdict on whether the wait is genuine.
Set Active Build
Make a processed build the one viewers get.