create_schedule
Put an agent or a workflow on a recurring cadence.
Describe the cadence with frequency rather than writing cron. Pass exactly one of frequency or cron_expression.
A workflow you schedule must use a manual trigger, and the schedule runs its draft — not a release. A workflow whose trigger is an event or an integration is refused at run time.
Parameters#
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | yes | Human-readable name for the schedule | |
target_type | string | yes | assistant, workflow or batch_job | |
target_id | string | yes | Id of the agent, workflow or batch job to run | |
message | string | no | "" | For an agent target, the instruction it wakes up with. A real prompt, not a label. Lead it with a /<Skill Name>:skill chip (exact name, case-insensitive) to force-load one of that agent’s skills on every run; an unknown name is refused |
frequency | string | no | hourly, daily, weekdays (Mon–Fri), weekly or monthly | |
hour | integer | no | 9 | Hour of day, 0–23. Ignored for hourly |
minute | integer | no | 0 | Minute of the hour, 0–59 |
weekday | integer | null | no | 0=Sunday … 6=Saturday, for frequency: weekly | |
day_of_month | integer | null | no | 1–28, for frequency: monthly | |
timezone | string | null | no | IANA name (e.g. America/Los_Angeles). Defaults to your organization’s timezone, never UTC by accident | |
cron_expression | string | null | no | A 5-field cron expression, instead of frequency | |
description | string | no | "" | Optional longer description |
interval | integer | no | 1 | Repeat every N units of frequency: 2 with weekly is every other week, 3 with daily is every 3 days. For hourly it becomes */N in the cron (every 6 hours = 0/6/12/18) |
Returns#
json
{
"schedule_id": "sched_abc123",
"name": "Morning pacing check",
"cron_expression": "0 7 * * 1-5",
"timezone": "America/Los_Angeles",
"interval": 1,
"interval_start": null,
"human_readable": "Every weekday at 7:00 AM (America/Los_Angeles)",
"next_runs": ["2026-08-19T07:00:00-07:00", "2026-08-20T07:00:00-07:00", "2026-08-21T07:00:00-07:00"],
"status": "active",
"target_type": "assistant",
"target_name": "Pacing analyst",
"url": "/adlyse/schedules"
}| Field | Description |
|---|---|
human_readable | The cadence in words. Show this to whoever asked — a wrong hour or timezone is invisible in cron |
interval | Every N units of the cadence; interval_start is the local date the count starts from (set when interval > 1) |
next_runs | The next three fire times, in the schedule’s own timezone |
status | active on creation; see pause_schedule |
next_runs is a preview. Across a daylight-saving transition it can report the
run an hour out on the transition day only; the schedule itself fires at the
local time you asked for.
Errors#
error_type | When |
|---|---|
auth_error | Missing / invalid API key |
feature_not_available | Your plan does not include schedules |
not_found | The target id doesn’t exist or is outside your org |
invalid_input | Both or neither of frequency / cron_expression; a malformed cron expression; an unknown timezone; an out-of-range hour or weekday; an interval > 1 on a cadence that is not daily/weekly/monthly |
Example#
Request — a colleague that reviews spend every weekday at 7am:
json
{
"name": "Morning pacing check",
"target_type": "assistant",
"target_id": "assistant_abc",
"message": "Review yesterday's spend across all connected accounts and post a card for anything that needs a decision.",
"frequency": "weekdays",
"hour": 7
}Response:
json
{
"schedule_id": "sched_abc123",
"cron_expression": "0 7 * * 1-5",
"human_readable": "Every weekday at 7:00 AM (America/Los_Angeles)",
"status": "active"
}