curl --request POST "${HARNESS_URL}/harness/cronjobs" \
--header "Authorization: Bearer ${HARNESS_TOKEN}" \
--header "Content-Type: application/json" \
--data '{"name": "daily-report", "prompt": "Summarize recent activity", "schedule": {"cron": "0 9 * * *", "timezone": "Asia/Shanghai"}, "idempotency_key": "daily-report-v1"}'import json
import os
from urllib.request import Request, urlopen
base_url = os.environ["HARNESS_URL"]
headers = {"Authorization": "Bearer " + os.environ["HARNESS_TOKEN"]}
headers["Content-Type"] = "application/json"
data = json.dumps({'name': 'daily-report', 'prompt': 'Summarize recent activity', 'schedule': {'cron': '0 9 * * *', 'timezone': 'Asia/Shanghai'}, 'idempotency_key': 'daily-report-v1'}).encode()
request = Request(base_url + f"/harness/cronjobs", headers=headers, method="POST", data=data)
with urlopen(request) as response:
print(json.load(response))const baseUrl = process.env.HARNESS_URL;
const headers = { Authorization: `Bearer ${process.env.HARNESS_TOKEN}` };
headers["Content-Type"] = "application/json";
const response = await fetch(`${baseUrl}/harness/cronjobs`, {
method: "POST",
headers,
body: JSON.stringify({"name": "daily-report", "prompt": "Summarize recent activity", "schedule": {"cron": "0 9 * * *", "timezone": "Asia/Shanghai"}, "idempotency_key": "daily-report-v1"}),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());{
"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
}创建定时任务
创建周期或一次性任务并返回任务定义与状态
curl --request POST "${HARNESS_URL}/harness/cronjobs" \
--header "Authorization: Bearer ${HARNESS_TOKEN}" \
--header "Content-Type: application/json" \
--data '{"name": "daily-report", "prompt": "Summarize recent activity", "schedule": {"cron": "0 9 * * *", "timezone": "Asia/Shanghai"}, "idempotency_key": "daily-report-v1"}'import json
import os
from urllib.request import Request, urlopen
base_url = os.environ["HARNESS_URL"]
headers = {"Authorization": "Bearer " + os.environ["HARNESS_TOKEN"]}
headers["Content-Type"] = "application/json"
data = json.dumps({'name': 'daily-report', 'prompt': 'Summarize recent activity', 'schedule': {'cron': '0 9 * * *', 'timezone': 'Asia/Shanghai'}, 'idempotency_key': 'daily-report-v1'}).encode()
request = Request(base_url + f"/harness/cronjobs", headers=headers, method="POST", data=data)
with urlopen(request) as response:
print(json.load(response))const baseUrl = process.env.HARNESS_URL;
const headers = { Authorization: `Bearer ${process.env.HARNESS_TOKEN}` };
headers["Content-Type"] = "application/json";
const response = await fetch(`${baseUrl}/harness/cronjobs`, {
method: "POST",
headers,
body: JSON.stringify({"name": "daily-report", "prompt": "Summarize recent activity", "schedule": {"cron": "0 9 * * *", "timezone": "Asia/Shanghai"}, "idempotency_key": "daily-report-v1"}),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());{
"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
}enabled 设为 falseschedule.cron 与 schedule.at 必须且只能设置一个非 null 值。创建启用的一次性任务时,at 必须在未来且包含时区偏移
建议提供稳定的 idempotency_key。相同键和相同请求返回同一任务,状态仍为 201;相同键对应不同请求返回 422。省略幂等键时,每次请求都会新建任务
harness 使用本页的任务覆盖结构,未提供字段继承部署配置。每次执行使用独立会话,最终输出保存在 TOS授权
服务鉴权 Harness 的 Runtime 访问凭证,例如 Runtime API Key;共享 OAuth 部署不支持后台定时任务
请求体
创建任务的请求;未声明字段会被拒绝
任务名称,1–128 个字符
1 - 128每次执行发送给智能体的消息,1–65536 个字符
1 - 65536触发计划
- Schedule
- Schedule
Show child attributes
Show child attributes
任务级配置覆盖;使用 AgentKit CLI 部署版的字段,例如 mcp_servers
Show child attributes
Show child attributes
是否启用后续调度
单次执行超时,单位为秒;超时记为 failed,不自动重试该次执行
1 <= x <= 10800latest 补跑最近一次错过的触发;skip 仅在该次触发未超出宽限时间时执行。两者均不逐次补跑所有历史触发
latest, skip skip 策略允许的最大延迟,单位为秒
0 <= x <= 86400可选幂等键。相同键和相同请求返回同一任务;同键不同请求返回 422。省略时每次创建新任务
1 - 128响应
成功;相同幂等请求再次提交也返回 201
任务名称,1–128 个字符
1 - 128每次执行发送给智能体的消息,1–65536 个字符
1 - 65536触发计划
- Schedule
- Schedule
Show child attributes
Show child attributes
该任务每次执行时应用的配置,仅应用显式提供的字段,未提供字段继承已部署智能体
Show child attributes
Show child attributes
是否启用后续调度
单次执行超时,单位为秒;超时记为 failed,不自动重试该次执行
1 <= x <= 10800latest 补跑最近一次错过的触发;skip 仅在该次触发未超出宽限时间时执行。两者均不逐次补跑所有历史触发
latest, skip skip 策略允许的最大延迟,单位为秒
0 <= x <= 86400所属任务 ID
^[a-f0-9]{32}$任务修订号
任务创建时间,UTC
任务最近更新时间,UTC
下次计划触发时间,UTC;没有后续触发时为 null
当前排队、运行中或正在保存最终结果的执行
Show child attributes
Show child attributes
最近已保存到历史的执行摘要
Show child attributes
Show child attributes