curl -X PATCH "https://app.runtm.com/api/cloud/v1/scheduled-agents/sa_9f3c1a" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
runtm-api scheduled-agents update sa_9f3c1a --enabled
runtm-api scheduled-agents update sa_9f3c1a --cron '0 19 * * 1'
runtm-api scheduled-agents update sa_9f3c1a --disabled
{
"id": "sa_9f3c1a",
"name": "weekly-outbound",
"cron": "0 18 * * 1",
"prompt": "Build this week's outbound lists and post them for approval",
"org_template_id": "tmpl_abc123",
"template_name": "GTM Machine",
"agent": "claude-code",
"model": null,
"enabled": true,
"slack_integration_id": null,
"slack_integration_name": null,
"slack_channel_id": null,
"last_run_at": null,
"last_session_id": null,
"next_run_at": "2026-08-03T18:00:00Z",
"created_at": "2026-07-28T19:00:00Z",
"updated_at": "2026-07-28T19:05:00Z"
}
Scheduled Agents
Update Scheduled Agent
Edit a scheduled agent; omitted fields are left unchanged
PATCH
/
api
/
v1
/
scheduled-agents
/
{agent_id}
curl -X PATCH "https://app.runtm.com/api/cloud/v1/scheduled-agents/sa_9f3c1a" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
runtm-api scheduled-agents update sa_9f3c1a --enabled
runtm-api scheduled-agents update sa_9f3c1a --cron '0 19 * * 1'
runtm-api scheduled-agents update sa_9f3c1a --disabled
{
"id": "sa_9f3c1a",
"name": "weekly-outbound",
"cron": "0 18 * * 1",
"prompt": "Build this week's outbound lists and post them for approval",
"org_template_id": "tmpl_abc123",
"template_name": "GTM Machine",
"agent": "claude-code",
"model": null,
"enabled": true,
"slack_integration_id": null,
"slack_integration_name": null,
"slack_channel_id": null,
"last_run_at": null,
"last_session_id": null,
"next_run_at": "2026-08-03T18:00:00Z",
"created_at": "2026-07-28T19:00:00Z",
"updated_at": "2026-07-28T19:05:00Z"
}
Partial update. Changing
cron or enabled reconciles the Cloud Scheduler job in the same request; other fields only touch the row. Prefer disabling over deleting when pausing a schedule: it removes the scheduler job but keeps the prompt, template binding, and Slack target, so re-enabling is one call.
Required scope: sessions:write and an admin or owner role.
Path Parameters
string
required
The scheduled agent ID.
Request Body
All fields optional; omitted fields are unchanged.string
New display name.
string
New 5-field UTC cron.
string
New prompt.
string | null
New template binding, or null to clear.
string
New coding agent harness.
string | null
New model override.
boolean
Turn the schedule on or off.
string | null
New Slack integration. Travels with
slack_channel_id.string | null
New Slack channel. Travels with
slack_integration_id.Response
The updated scheduled agent object.curl -X PATCH "https://app.runtm.com/api/cloud/v1/scheduled-agents/sa_9f3c1a" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
runtm-api scheduled-agents update sa_9f3c1a --enabled
runtm-api scheduled-agents update sa_9f3c1a --cron '0 19 * * 1'
runtm-api scheduled-agents update sa_9f3c1a --disabled
{
"id": "sa_9f3c1a",
"name": "weekly-outbound",
"cron": "0 18 * * 1",
"prompt": "Build this week's outbound lists and post them for approval",
"org_template_id": "tmpl_abc123",
"template_name": "GTM Machine",
"agent": "claude-code",
"model": null,
"enabled": true,
"slack_integration_id": null,
"slack_integration_name": null,
"slack_channel_id": null,
"last_run_at": null,
"last_session_id": null,
"next_run_at": "2026-08-03T18:00:00Z",
"created_at": "2026-07-28T19:00:00Z",
"updated_at": "2026-07-28T19:05:00Z"
}