List schedule runs
curl --request GET \
--url https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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{
"id": "<string>",
"schedule_id": "<string>",
"status": "<string>",
"scheduled_for": "<string>",
"session_id": {},
"error": {},
"triggered_manually": true,
"created_at": "<string>"
}Schedules
List schedule runs
Browse a schedule’s fire history.
GET
/
api
/
v2
/
schedules
/
{schedule_id}
/
runs
List schedule runs
curl --request GET \
--url https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agp.eu.hcompany.ai/api/v2/schedules/{schedule_id}/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{
"id": "<string>",
"schedule_id": "<string>",
"status": "<string>",
"scheduled_for": "<string>",
"session_id": {},
"error": {},
"triggered_manually": true,
"created_at": "<string>"
}Returns the schedule’s recent fires, newest first. Every fire produces a run record, including skipped and failed ones, so the history is gap-free. Runs are retained for 90 days.
Returns a paginated list of run records.
Path parameters
string
required
The schedule’s id (UUID).
Query parameters
integer
default:"1"
Page number (1-based).
integer
default:"10"
Items per page. Maximum:
1000.string
default:"-scheduled_for"
Sort order. Options:
scheduled_for, -scheduled_for.The run record
string
Unique id for this run (UUID).
string
The schedule that fired.
string
Outcome of the fire:
created, skipped_overlap (previous session still active), skipped_quota (organization at quota), or error.string
The fire’s due time (UTC, RFC 3339).
string | null
The created session’s id when
status is created, otherwise null.string | null
Failure detail when
status is error.string
When the run record was written.
Examples
curl "https://agp.eu.hcompany.ai/api/v2/schedules/9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f/runs" \
-H "Authorization: Bearer $HAI_API_KEY"
from hai_agents import Client
client = Client()
page = client.schedules.list_schedule_runs("9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f")
for run in page.items:
print(run.scheduled_for, run.status, run.session_id)
import { HaiAgentsClient } from "hai-agents";
const client = new HaiAgentsClient();
const page = await client.schedules.listScheduleRuns({ scheduleId: "9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f" });
for (const run of page.items) {
console.log(run.scheduledFor, run.status, run.sessionId);
}
Response
{
"items": [
{
"id": "3c2b1a09-8d7e-4f6a-b5c4-d3e2f1a0b9c8",
"schedule_id": "9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f",
"status": "created",
"scheduled_for": "2026-07-03T07:00:00Z",
"session_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"error": null,
"triggered_manually": false,
"created_at": "2026-07-03T07:00:02Z"
},
{
"id": "2b1a0987-7c6d-4e5f-a4b3-c2d1e0f9a8b7",
"schedule_id": "9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f",
"status": "skipped_overlap",
"scheduled_for": "2026-07-02T07:00:00Z",
"session_id": null,
"error": null,
"triggered_manually": false,
"created_at": "2026-07-02T07:00:01Z"
}
],
"page": 1,
"total": 2
}
Errors
| Status | Cause |
|---|---|
404 | No schedule with this id in your organization. |
Last modified on September 11, 2026
Was this page helpful?