cURL
curl --request GET "${HARNESS_URL}/harness/cronjobs" \
--header "Authorization: Bearer ${HARNESS_TOKEN}"import json
import os
from urllib.request import Request, urlopen
base_url = os.environ["HARNESS_URL"]
headers = {"Authorization": "Bearer " + os.environ["HARNESS_TOKEN"]}
request = Request(base_url + f"/harness/cronjobs", headers=headers, method="GET")
with urlopen(request) as response:
print(json.load(response))const baseUrl = process.env.HARNESS_URL;
const headers = { Authorization: `Bearer ${process.env.HARNESS_TOKEN}` };
const response = await fetch(`${baseUrl}/harness/cronjobs`, {
method: "GET",
headers,
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());{
"items": [
{
"name": "daily-report",
"prompt": "Summarize recent activity",
"schedule": {
"cron": "0 9 * * *",
"at": null,
"timezone": "Asia/Shanghai"
},
"enabled": true,
"timeout_seconds": 1800,
"misfire_policy": "latest",
"misfire_grace_seconds": 120,
"harness": null,
"cronjob_id": "0e58ff7f7dcbf348c252fc70e7fdb587",
"revision": 1,
"created_at": "2026-09-16T00:00:00Z",
"updated_at": "2026-09-16T00:00:00Z",
"next_run_at": "2026-09-16T01:00:00Z",
"active": null,
"last_run": null
}
],
"next_cursor": ""
}
Scheduled jobs
List scheduled tasks
Read task definitions and current state with cursor pagination
GET
/
harness
/
cronjobs
cURL
curl --request GET "${HARNESS_URL}/harness/cronjobs" \
--header "Authorization: Bearer ${HARNESS_TOKEN}"import json
import os
from urllib.request import Request, urlopen
base_url = os.environ["HARNESS_URL"]
headers = {"Authorization": "Bearer " + os.environ["HARNESS_TOKEN"]}
request = Request(base_url + f"/harness/cronjobs", headers=headers, method="GET")
with urlopen(request) as response:
print(json.load(response))const baseUrl = process.env.HARNESS_URL;
const headers = { Authorization: `Bearer ${process.env.HARNESS_TOKEN}` };
const response = await fetch(`${baseUrl}/harness/cronjobs`, {
method: "GET",
headers,
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());{
"items": [
{
"name": "daily-report",
"prompt": "Summarize recent activity",
"schedule": {
"cron": "0 9 * * *",
"at": null,
"timezone": "Asia/Shanghai"
},
"enabled": true,
"timeout_seconds": 1800,
"misfire_policy": "latest",
"misfire_grace_seconds": 120,
"harness": null,
"cronjob_id": "0e58ff7f7dcbf348c252fc70e7fdb587",
"revision": 1,
"created_at": "2026-09-16T00:00:00Z",
"updated_at": "2026-09-16T00:00:00Z",
"next_run_at": "2026-09-16T01:00:00Z",
"active": null,
"last_run": null
}
],
"next_cursor": ""
}
Requires a Harness Runtime deployed with AgentKit CLI 0.54.0 and scheduled tasks enabled
Pass
next_cursor unchanged to the next request. An empty string marks the final page; task order should not be interpreted as creation-time orderAuthorizations
Runtime access credential for a service-authenticated Harness, such as a Runtime API key; shared OAuth deployments do not support background scheduled tasks
Query Parameters
next_cursor from the previous page; omit or use an empty string for the first request
Maximum string length:
4096Maximum records per page, from 1 to 1000
Required range:
1 <= x <= 1000Last modified on September 19, 2026