Scheduled run 400 because the instructions are empty: where to fix it
A Sume schedule with empty instructions can not run. The API run request returns 400 invalid_request, and the text can only be edited in the dashboard.

If POST /v1/actions/{id}/runs returns 400 invalid_request and your body is fine, check the schedule itself: its instructions may be empty. Sume says that empty instructions cannot run, and the same 400 covers it (Create a schedule). Open the schedule in the dashboard, write the instructions, and call again.
Why the API can not fix it
The public Action object has no instructions field, on purpose. The API does not return the text and has no create or edit endpoint, so the dashboard is the only place to read or change it (Scheduled agents). Your input can not stand in for the text. It is data for the run, and the behavior of the Agent comes from the saved instructions.
Other causes of the same code
409 action_inactive is a different problem: the schedule is set to Inactive, and the dashboard switch turns it back on.
| Cause | Fix |
|---|---|
input is not an object, has more than 64 properties, or is over 2,097,152 bytes | Send an object that fits. |
generation_spend_cap_usd is not a finite number above 0, or null | Send a valid cap. |
webhook_url is not a public HTTPS URL | Send an HTTPS URL. |
| The saved instructions are empty | Edit the schedule in the dashboard. |
Add a pre-flight
GET /v1/actions/{id} shows status, trigger_type and api_trigger_enabled. It can not show the instructions, so a pre-flight can only confirm that the schedule is active and accepts API runs. Keep a short note of each schedule's purpose in your own system.
Sources
Related posts
More in Agents
- Why Sume's scheduled-run API does not return instructions text
The public scheduled-run shape omits the instructions text. Read and edit it in the dashboard; schedules have no MCP tool or write endpoint.
- Sume scheduled run returned skipped: detect previous_run_active
A Sume scheduled run that overlaps another returns 200 with status skipped, not an error. Check skip_reason in code, and choose reject if a drop must be loud.
- Scheduled Sume run missing from /v1/jobs: it is not a job
A schedule run is not a generation job, so it never appears in /v1/jobs and jobs_wait cannot wait on it. Read it from /v1/action-runs/{run_id} instead.
- Skipped Sume scheduled run: no webhook, read the create response
A skipped or canceled Sume run sends no webhook. For api-trigger, on_active_run=skip is the default, so check the create response, not just your webhook inbox.
Written by Sume