Retrieves a single Schedule Run by ID.
GET /api/v1/forward/schedule_runs/{run_id}
Returns a single Schedule Run record. You can pass identity_id as an additional ownership constraint.
Request headers
|
Header |
Required |
Description |
|
Authorization |
Yes |
|
Path parameters
|
Parameter |
Type |
Required |
Description |
|
run_id |
string |
Yes |
Schedule Run ID. |
Query parameters
|
Parameter |
Type |
Required |
Default |
Description |
|
identity_id |
string |
No |
- |
Additional ownership constraint. |
Example request
curl -s -X GET 'https://api.qoder.com.cn/api/v1/forward/schedule_runs/srun_019f00112233445566778899aabbccdd' \
-H "Authorization: Bearer $QODER_PAT"
Example response
HTTP 200 OK
{
"id": "srun_019f00112233445566778899aabbccdd",
"schedule_id": "sched_019f00112233445566778899aabbccdd",
"identity_id": "idn_019eabc123",
"template_id": "tmpl_support",
"session_id": "sess_019ec55a68b37e1e8d660691af161ab4",
"status": "completed",
"trigger_context": {
"type": "schedule",
"scheduled_at": "2026-06-22T01:00:00Z"
},
"result_payload": "Today's technology highlights: ...",
"push_sink": "im_channel",
"push_status": "succeeded",
"push_finished_at": "2026-06-22T01:00:21Z",
"attempt": 1,
"triggered_at": "2026-06-22T01:00:00Z",
"started_at": "2026-06-22T01:00:03Z",
"completed_at": "2026-06-22T01:00:20Z",
"duration_ms": 17000,
"created_at": "2026-06-22T01:00:00Z"
}
Response fields
|
Field |
Type |
Description |
id | string | Schedule Run ID. |
schedule_id | string | Parent Schedule ID. |
identity_id | string | Forward Identity ID. |
template_id | string | Forward Template ID. |
session_id | string | null | Session created or used by this run. |
status | string |
|
trigger_context | object | Trigger source. |
error | object | null | Structured error for failed or skipped runs. |
result_payload | string | null | Text result from the main execution flow. |
error_message | string | null | Human-readable error message; structured details are in |
push_sink | string | null | Sink type used for IM delivery; |
push_status | string | IM delivery status: |
push_finished_at | string | null | IM delivery completion time. |
attempt | integer | Attempt sequence number; currently |
triggered_at | string | Trigger time. |
started_at | string | null | Execution start time. |
completed_at | string | null | Completion time. |
duration_ms | integer | null | Execution duration in milliseconds. |
created_at | string | Record creation time. |
Trigger Context object
type | Description |
| Triggered automatically by the Schedule |
| Triggered manually via |
Run Error object
The error object represents a structured failure or skip reason. It may be returned when status=failed or status=skipped; it is null when status=completed.
error.type | Description |
| The same Schedule has reached |
| Failed to create or bind a Forward Session. |
| Template execution failed. |
Errors
HTTP | Type | Code | Trigger condition |
404 |
|
| Run does not exist, is cross-tenant, or does not meet the |
401 |
|
| PAT is invalid or expired. |
Notes
-
error.type=concurrency_limit_reachedindicates the trigger was recorded but skipped due to concurrency limits. -
You can poll this endpoint until
statusreaches a terminal state.