Export workflow run data
curl --request GET \
--url https://api.langdock.com/workflows/{workflowId}/runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.langdock.com/workflows/{workflowId}/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.langdock.com/workflows/{workflowId}/runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.langdock.com/workflows/{workflowId}/runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.langdock.com/workflows/{workflowId}/runs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.langdock.com/workflows/{workflowId}/runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/workflows/{workflowId}/runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"run_id": "7d2a1c4e-2f6a-4b9f-8c31-1a6d8e4f2b90",
"run_number": 42,
"run_status": "COMPLETED",
"run_created_at": "2026-08-12T09:15:00.000Z",
"run_updated_at": "2026-08-12T09:15:08.000Z",
"workflow_version": "3",
"trigger_mode": "WEBHOOK",
"node_execution_id": "2b8c1d4e-6f7a-4b90-9c12-3d5e7f8a1b20",
"node_id": "9c1f2d3e-7a4b-4c58-8d19-2e6f0b7a4c31",
"node_type": "agent",
"node_status": "COMPLETED",
"node_created_at": "2026-08-12T09:15:01.000Z",
"node_updated_at": "2026-08-12T09:15:06.000Z",
"failure_code": null,
"input": {
"customer_id": "customer-42"
},
"input_error": null,
"output": {
"category": "support"
},
"output_error": null,
"logs": [],
"data_redacted": false,
"execution_data_expired_at": null
}
]
}{
"message": "Workflow run exports are limited to 10,000 runs. Select a smaller date range.",
"code": "WORKFLOW_RUN_EXPORT_LIMIT_EXCEEDED",
"details": {
"maxRuns": 10000
}
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}Workflow Run Export API
Workflow Run Export API
Export workflow run and node execution data as JSON for analysis and debugging.
GET
/
workflows
/
{workflowId}
/
runs
Export workflow run data
curl --request GET \
--url https://api.langdock.com/workflows/{workflowId}/runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.langdock.com/workflows/{workflowId}/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.langdock.com/workflows/{workflowId}/runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.langdock.com/workflows/{workflowId}/runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.langdock.com/workflows/{workflowId}/runs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.langdock.com/workflows/{workflowId}/runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/workflows/{workflowId}/runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"run_id": "7d2a1c4e-2f6a-4b9f-8c31-1a6d8e4f2b90",
"run_number": 42,
"run_status": "COMPLETED",
"run_created_at": "2026-08-12T09:15:00.000Z",
"run_updated_at": "2026-08-12T09:15:08.000Z",
"workflow_version": "3",
"trigger_mode": "WEBHOOK",
"node_execution_id": "2b8c1d4e-6f7a-4b90-9c12-3d5e7f8a1b20",
"node_id": "9c1f2d3e-7a4b-4c58-8d19-2e6f0b7a4c31",
"node_type": "agent",
"node_status": "COMPLETED",
"node_created_at": "2026-08-12T09:15:01.000Z",
"node_updated_at": "2026-08-12T09:15:06.000Z",
"failure_code": null,
"input": {
"customer_id": "customer-42"
},
"input_error": null,
"output": {
"category": "support"
},
"output_error": null,
"logs": [],
"data_redacted": false,
"execution_data_expired_at": null
}
]
}{
"message": "Workflow run exports are limited to 10,000 runs. Select a smaller date range.",
"code": "WORKFLOW_RUN_EXPORT_LIMIT_EXCEEDED",
"details": {
"maxRuns": 10000
}
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}{
"message": "<string>",
"code": "<string>",
"details": {},
"errors": [
{}
]
}Use the Workflow Run Export API to export workflow run and node execution data as JSON. Each row gives you run metadata, node status, and detailed execution data when you have access to the node.
You receive one row for each node execution. A run without node executions returns one row with
For a dedicated deployment, replace
Include
Rows are ordered from oldest to newest by run creation time and then node execution creation time. The endpoint does not paginate. Use a narrower date range to reduce the response size.
The
Malformed query parameters return
Before you start
Before you start, make sure you have:- Workspace API key: Create a workspace API key with the
WORKFLOW_APIscope under Settings > Workspace > Products > API. Personal API keys only support the Completion APIs. See Personal API keys. - Workflow access: The API key must belong to a workflow owner or editor. Workspace administrators can also access workflows without a workflow share. A workflow shared with the User role does not grant access to this endpoint, including for workspace administrators.
A workspace administrator’s API key can export data across the workspace. An API key owned by a non-administrator is limited to workflows that person owns or can edit. Only grant this scope to trusted users.
Base URL
- Langdock Cloud
- Dedicated Deployment
https://api.langdock.com
https://<your-domain>/api/public
Endpoint
GET /workflows/{workflowId}/runs
null node fields.
Authentication
Send your API key as a Bearer token:cURL
curl "https://api.langdock.com/workflows/550e8400-e29b-41d4-a716-446655440000/runs?from=2026-08-01&to=2026-08-31" \
-H "Authorization: Bearer YOUR_API_KEY"
https://api.langdock.com with your deployment base URL.
Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
workflowId | Path | string | Yes | ID of the workflow to export. Must be a valid GUID. |
from | Query | string | Yes | Start of the export range for the run creation time. Use an ISO 8601 date or timestamp. A date only value starts at 00:00:00.000 UTC. |
to | Query | string | Yes | End of the export range for the run creation time. Use an ISO 8601 date or timestamp. A date only value ends at 23:59:59.999 UTC. The value must be equal to or later than from. |
Z or an explicit UTC offset in full timestamps. A timestamp without a timezone is interpreted in the server’s local timezone. Both date values are required. The API does not apply a default date range. You receive every node execution for a matching run, even if the node execution falls outside the date range.
Response
You receive adata array with flattened workflow run and node execution rows:
Success
{
"data": [
{
"run_id": "7d2a1c4e-2f6a-4b9f-8c31-1a6d8e4f2b90",
"run_number": 42,
"run_status": "COMPLETED",
"run_created_at": "2026-08-12T09:15:00.000Z",
"run_updated_at": "2026-08-12T09:15:08.000Z",
"workflow_version": "3",
"trigger_mode": "WEBHOOK",
"node_execution_id": "2b8c1d4e-6f7a-4b90-9c12-3d5e7f8a1b20",
"node_id": "9c1f2d3e-7a4b-4c58-8d19-2e6f0b7a4c31",
"node_type": "agent",
"node_status": "COMPLETED",
"node_created_at": "2026-08-12T09:15:01.000Z",
"node_updated_at": "2026-08-12T09:15:06.000Z",
"failure_code": null,
"input": {
"customer_id": "customer-42"
},
"input_error": null,
"output": {
"category": "support"
},
"output_error": null,
"logs": [],
"data_redacted": false,
"execution_data_expired_at": null
}
]
}
Response fields
| Field | Type | Description |
|---|---|---|
run_id | string | ID of the workflow run. |
run_number | number | Sequential number of the run within the workflow. |
run_status | string | Status of the workflow run: PENDING, IN_PROGRESS, AWAITING_INPUT, COMPLETED, FAILED, or CANCELLED. |
run_created_at | string | Creation time of the workflow run in ISO 8601 format. |
run_updated_at | string | Last update time of the workflow run in ISO 8601 format. |
workflow_version | string | Version of the workflow used for the run. Version 0 is the draft workflow version. The public endpoint does not provide a test or production filter. |
trigger_mode | string or null | Mode that triggered the run: WEBHOOK, FORM, SCHEDULED, INTEGRATION_POLLING, or MANUAL. |
node_execution_id | string or null | ID of the node execution. |
node_id | string or null | ID of the workflow node. |
node_type | string or null | Type of the workflow node. |
node_status | string or null | Status of the node execution: NONE, IN_PROGRESS, AWAITING_INPUT, COMPLETED, FAILED, or CANCELLED. |
node_created_at | string or null | Creation time of the node execution in ISO 8601 format. |
node_updated_at | string or null | Last update time of the node execution in ISO 8601 format. |
failure_code | string or null | Failure code when the node execution fails. |
input | JSON value or null | Input data for the node execution. |
input_error | JSON value or null | Error data for the node input. |
output | JSON value or null | Output data for the node execution. |
output_error | JSON value or null | Error data for the node output. |
logs | JSON value or null | Logs generated during the node execution. |
data_redacted | boolean | Whether payload fields were omitted because you cannot access the node’s data or the endpoint cannot establish access to it. |
execution_data_expired_at | string or null | Time when detailed execution data expired, in ISO 8601 format. |
input and output fields are null for execution data older than 30 days. All five payload fields are null when the endpoint cannot establish access to the node’s data. This can happen when your workflow access does not include an action or agent node used by the execution. The API sets data_redacted to true in that case.
For payload values larger than 16,000 bytes, the API returns a truncation marker. The marker contains an _truncated object with originalBytes, maxBytes, and message fields.
The response does not include the identity of the person or group that triggered a run.
Limits and retention
- Each request can export up to 10,000 workflow runs.
- Input and output data is retained for 30 days.
- Payload data in one response is limited to 8,000,000 bytes.
400 Bad Request with the WORKFLOW_RUN_EXPORT_LIMIT_EXCEEDED code. If the payload data exceeds 8,000,000 bytes, it returns 400 Bad Request with the WORKFLOW_RUN_EXPORT_TOO_LARGE code. Use a smaller date range to resolve either error.
Rate limits
The endpoint allows 500 requests per minute for each workspace and API key. Requests above the limit return429 Too Many Requests.
Error handling
| Status code | Description |
|---|---|
400 | The request is invalid. This includes an invalid workflow ID or date, a to value earlier than from, an export with more than 10,000 runs, or payload data larger than 8,000,000 bytes. |
401 | The API key is missing or invalid. |
403 | The API key does not have the WORKFLOW_API scope, or its owner is not the workflow owner, editor, or workspace administrator. A workflow User role does not grant access, including for workspace administrators. |
405 | The request uses a method other than GET. |
429 | The workspace and API key exceeded the request rate limit. |
500 | An unexpected server error occurred. |
Error
{
"message": "Workflow run exports are limited to 10,000 runs. Select a smaller date range.",
"code": "WORKFLOW_RUN_EXPORT_LIMIT_EXCEEDED",
"details": {
"maxRuns": 10000
}
}
{"message":"Invalid request","errors":[...]} without a code field. An invalid date or a to value earlier than from returns code: "BAD_REQUEST".
Langdock intentionally blocks browser-origin requests to protect your API key and ensure your applications remain secure. For more information, see API Key Best Practices.
Authorizations
API key as Bearer token. Format "Bearer YOUR_API_KEY"
Path Parameters
ID of the workflow to export.
Query Parameters
Start of the export range. Use an ISO 8601 date or timestamp. A date-only value starts at 00:00:00.000 UTC.
End of the export range. Use an ISO 8601 date or timestamp. A date-only value ends at 23:59:59.999 UTC.
Response
Workflow run export
Flattened workflow run and node execution rows.
Show child attributes
Show child attributes
Was this page helpful?