Get outputs by Run UUID
curl --request GET \
--url https://api.edges.run/v1/runs/{run_uid}/outputs \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.edges.run/v1/runs/{run_uid}/outputs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.edges.run/v1/runs/{run_uid}/outputs"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)[
{}
]{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}Runs
Get Run Outputs
Retrieve processed outputs for an async or scheduled run once it has terminated, including stopped and failed runs.
GET
/
runs
/
{run_uid}
/
outputs
Get outputs by Run UUID
curl --request GET \
--url https://api.edges.run/v1/runs/{run_uid}/outputs \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.edges.run/v1/runs/{run_uid}/outputs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.edges.run/v1/runs/{run_uid}/outputs"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)[
{}
]{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}{
"error_label": "<string>",
"error_scope": "input",
"error_ref": "ERR-12345",
"message": "<string>",
"status_code": 123,
"params": {},
"data": {}
}This endpoint is not available for runs executed in
live mode. It only works for runs executed in async or schedule mode. For live mode runs, results are returned directly in the API response.When outputs are available
You can retrieve outputs once the run has terminated — not only whenstatus is SUCCEEDED.
That includes terminal statuses that are not a full success, such as STOPPED, FAILED, and PARTIAL_SUCCEEDED. Use GET /runs/{run_uid} to read status and output_count. If output_count is greater than 0, those processed rows are available here.
If the terminated run produced no outputs, the response is an empty list.
Stopping or canceling an async run does not discard work already done. Fetch this endpoint to collect the outputs produced before termination.
A
409 (STATUS_409) is returned only while the run is still active or pending. The message is that outputs cannot be retrieved for a run that is not terminated. Do not match on the previous wording (Cannot get outputs for a run that is not succeeded).Integrations that treated every non-
SUCCEEDED run as a 409 will now receive a 200 with the outputs produced before termination.Pagination
This endpoint uses cursor-based pagination by default. Follow theX-Pagination-Next response header to retrieve subsequent pages.
limitcontrols the page size (default: 100, max: 500).- The
X-Pagination-Nextheader contains the full URL for the next page, includinglimitandcursor. - When the
X-Pagination-Nextheader is absent, there are no more pages.
# First request
curl -X GET "https://api.edges.run/v1/runs/{run_uid}/outputs?limit=200" \
-H "Accept: application/json" \
-H "X-API-Key: <YOUR_API_KEY>"
# Follow X-Pagination-Next header for subsequent pages
curl -X GET "https://api.edges.run/v1/runs/{run_uid}/outputs?limit=200&cursor=<cursor_value>" \
-H "Accept: application/json" \
-H "X-API-Key: <YOUR_API_KEY>"
The
offset parameter is deprecated. If provided, the system falls back to offset-based pagination and cursor pagination is not used. Prefer following the X-Pagination-Next URL for all new integrations.Rate Limits
Run’s Routes Limits
All
/runs/* routes share a single limit — status, outputs, inputs and the rest draw on the same per-minute budget, so polling several of them counts against one allowance.| Plan Tier | Max Requests/Second | Max Requests/Minute | Rationale |
|---|---|---|---|
| Trial | < 1 | 30 | Supports 2 concurrent runs @ 10s polling interval |
| Bronze | 1 | 60 | Supports 2 concurrent runs with more aggressive polling |
| Silver / Gold | 2.5 | 150 | Supports 5 concurrent runs @ 10s polling interval |
| Platinum / Diamond | 5 | 300 | Supports 10 concurrent runs @ 10s polling interval |
| Titanium | 10 | 600 | Supports 15 concurrent runs @ 10s polling interval |
/v1/runs/{run_uid}/outputs. These limits support realistic polling patterns if you prefer polling over callbacks.
These limits are aligned with concurrent execution limits. For example, with a Silver/Gold plan (5 concurrent runs), you can poll all active runs every 10 seconds with comfortable headroom.
Capacity Examples
| Plan Tier | Polling Capacity | Use Case |
|---|---|---|
| Trial | Poll 2 runs every 10s | Basic polling during development |
| Bronze | Poll 2 runs every 10s with headroom | Small-scale polling |
| Silver / Gold | Poll 5 runs every 10s, or 1 run every 4s | Team polling operations |
| Platinum / Diamond | Poll 10 runs every 10s | Multi-workspace polling |
| Titanium | Poll 15 runs every 10s | Enterprise-scale polling |
Implementation Details:
- Rate limit type: Per-workspace, per-minute
- Error response: Standard 429 with
X-RateLimit-Type: /v1/runs/outputs - Headers include
X-RateLimit-Remainingfor visibility
Authorizations
Path Parameters
Run UUID
Query Parameters
Number of outputs to return
Required range:
1 <= x <= 500(deprecated) Number of outputs to skip for pagination
Required range:
x >= 0(optional) Cursor value obtained from the X-Pagination-Next response header of a previous request, used to continue pagination. If not provided, the first page will be returned.
Response
Returns the run outputs

