Fire a cron schedule on demand: api_trigger_enabled, cron kept
A Sume cron schedule can also accept API runs. Turn on api_trigger_enabled and your service can start it now without touching the cadence.

To start a Sume cron schedule on demand, turn on its API trigger and call POST /v1/actions/{action_id}/runs. A cron schedule can also enable api_trigger_enabled, so it accepts API runs on top of its cadence and keeps firing on time. You do not have to convert it to an API-only schedule, which is just as well: the trigger type is fixed at create time, so a cron schedule can never drop to API-only.
What must be true before the call works?
Every run request needs three things: the schedule's status is active, its api_trigger_enabled is true, and your key carries actions:read and actions:write. Keys created before the API-call trigger shipped do not carry those scopes, and scopes cannot be added to an existing key, so mint a new one.
| Check | If it fails |
|---|---|
Schedule status is active | 409 action_inactive |
api_trigger_enabled is true | 409 action_api_trigger_disabled |
Key has actions:read and actions:write | 403 insufficient_scope with details.required_scope |
| Key is not a service-account key | 403 insufficient_scope with a details.reason |
| Team-workspace schedule | Not reachable over the public API yet |
What happens if the cron run is in flight?
Only one run of a schedule is active at a time. on_active_run decides what a second request does, and on Scheduled the default is skip: the call returns 200 with a receipt whose status is skipped and skip_reason is previous_run_active. A run row is recorded. Send reject instead and you get 409 action_run_in_progress with no run recorded.
That makes the HTTP status a poor signal. A 200 is either an idempotency replay or a skipped run, and a 202 is a run that started. Branch on the receipt's status, not on the code.
How do I tell the runs apart afterwards?
The receipt's trigger.source is cron, manual or api, and the run history labels runs started through the API API and scheduled ones Cron. A per-run generation_spend_cap_usd can only lower the schedule's cap, never raise it; unset, the effective cap is $1.00 per run.
Send an Idempotency-Key on every on-demand call, 1 to 255 characters. The same key with the same payload returns 200 with the original receipt and idempotency_hit: true; a different payload under the same key is 409 idempotency_conflict.
curl -sS -X POST "https://api.sume.com/v1/actions/$ACTION_ID/runs" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: weekly-teaser-2026-w41-manual" \
-d '{"input": {"campaign": "summer-2026"}, "on_active_run": "reject"}'When is an API-only schedule the better choice?
Choose API-only at create time when an external system, not a clock, should decide when work happens: it persists trigger_type: "api" and drops the cadence entirely. Choose cron with the API trigger enabled when the clock is the main driver and you only need an occasional manual run, for example a weekly teaser that marketing sometimes wants right now. The choice is permanent either way, so decide before you create the schedule: an API-only one can never gain a cadence.
Sources
Related posts
More in Agents
- Hermes Agent cron job that starts a Sume Format run
A Hermes cron job begins with no memory of last week. Write the prompt, idempotency key, spend cap and SILENT or CRON_FAILURE reply so a Sume run starts once.
- Hermes cron no-agent script: poll a Sume bulk queue quietly
A Hermes cron script that prints nothing while a Sume bulk queue runs and one line when every item is terminal. Includes the Python, 404 and 429 cases.
- Kiro Crew log MCP server vs Sume job events: which record to trust
Kiro Crew 0.7.0 added an MCP server for durable session tracking. For generated media, Sume's job records are the better source of truth. Where each fits.
- Kiro Web Workflows run in the background: pairing with Sume runs
Kiro Web Workflows plan multi-step agent work in the background. Sume Agent Completions are also async. How to hand one step to the other without blocking.
Written by Sume