Skip to content

set_refresh_schedule

Set a dashboard's cadence, every-N interval and day/time anchor. Parameters, the per-cadence caps, every validation error and scope.

Sets a dashboard's full refresh schedule: the cadence, the every-N interval, and for a day or time cadence the day, hour and timezone. It re-anchors the next run immediately and returns the new cadence and next run time.

The dashboard must already be refreshable, meaning it has a connected data source, for any non-manual cadence.

Behaviour hints for clients: not read-only, not open-world.

Parameters

ParameterTypeRequiredNotes
slugstringyesCanonical slug of the dashboard to schedule.
frequencystringyesmanual, hourly, daily, weekly or monthly. manual disables automatic refresh.
every_nintegernoRepeat the cadence every N units. Default 1. Per-cadence caps below.
hourintegernoLocal hour, 0 to 23. A timezone is required once an hour is set.
dowintegernoDay of week for a weekly cadence, 0 to 6, with 0 = Sunday.
domintegernoDay of month for a monthly cadence, 1 to 28.
timezonestringnoIANA timezone name the day and hour anchor is interpreted in.
workspacestringnoWorkspace slug.

dom stops at 28 rather than 31 so a monthly schedule lands in every month.

Cadences and their caps

CadenceAllowed every_nAnchors it takes
manual1 onlynone
hourly1, 2, 3, 4, 6, 8 or 12optional hour (with timezone)
daily1 to 30optional hour (with timezone)
weekly1 to 4dow plus hour plus timezone
monthly1 to 12dom plus hour plus timezone

Hourly every_n is restricted to divisors of 24 so the runs stay evenly spaced across a day. Without an anchor a cadence runs unanchored: the top of the next hour, or a fixed offset.

Returns

Schedule updated for "revenue-overview":
- Cadence: daily at 07:00 America/Los_Angeles
- Interval: every 2 days
- Next refresh: 2026-07-31T14:00:00Z
You (or the dashboard owner) can change this any time on the Schedules page.

BEGIN_JSON
{"slug":"revenue-overview","dashboard_id":"...","name":"Revenue Overview","frequency":"daily","refresh_every_n":2,"next_run_at":"2026-07-31T14:00:00Z","schedule":{"timezone":"America/Los_Angeles","hour":7,"dow":null,"dom":null}}
END_JSON

The - Interval: line appears only when every_n is greater than 1. For a manual cadence next_run_at is null and renders as not scheduled.

Errors

Validation, before anything is written

ConditionText
Unknown cadencefrequency must be one of manual, hourly, daily, weekly, monthly
Non-integer anchorshour must be an integer, dow must be an integer, dom must be an integer
Non-integer intervalevery_n must be an integer
Bad timezonetimezone must be a non-empty IANA timezone name (e.g. America/New_York)

Then one refusal per cadence-and-anchor mismatch, each verbatim:

a manual schedule does not take a day, time, or timezone
a manual schedule does not take a refresh interval
an hourly schedule does not take dow or dom
an hourly interval (every_n) must be one of 1, 2, 3, 4, 6, 8, or 12
an hourly schedule needs an hour when a timezone is given
a daily schedule does not take dow or dom
a daily interval (every_n) must be between 1 and 30
a daily schedule needs an hour when a timezone is given
a weekly schedule does not take dom
a weekly interval (every_n) must be between 1 and 4
a weekly schedule needs both a dow (0-6) and an hour
a monthly schedule does not take dow
a monthly interval (every_n) must be between 1 and 12
a monthly schedule needs both a dom (1-28) and an hour

Runtime

ConditionText
The lookup or write failedschedule update failed: <err>
No such personal dashboardNo dashboard named "<slug>" in your account.
No such workspace dashboardNo dashboard named "<slug>" in that workspace.
Not signed innot authenticated (sign in again and retry)
Not permittedyou do not have permission to change this dashboard's schedule
Unknown dashboard idno dashboard with that id in your account
A workspace was named but not routedworkspace target not resolved: this request names a workspace but was not routed to one (the caller must resolve the workspace and wire workspace-scoped deps)

A dashboard with no connected data source is refused when you ask for a non-manual cadence, and the database's own sentence is surfaced verbatim rather than reworded.

This is the tool that words the workspace refusal correctly

No dashboard named "<slug>" in that workspace. is unique to this tool. The four slug-keyed readers say in your account on a workspace target even though their lookups are equally workspace-aware.

Scope

Workspace-capable. Any member of the workspace may schedule its dashboards, which is the same set of people who can republish the body.

Check it worked

Read it back with get_refresh_status and confirm the Schedule: line and Next refresh match what you asked for. Then wait for that time to pass and confirm a run appears in the history. A Next refresh in the past means the schedule never re-anchored.

Last updated 2026-08-04