Responses steering after a video job started: what Sume does
response.steer does not cancel started tools. A Sume video job past its start runs to completion; jobs_cancel returns 409 job_generation_already_started.

If the user steers the agent after a Sume video job has started generating, the job keeps running to completion. Steering changes the model's next output, and cancelling only works before generation work starts, so the agent has to call jobs_cancel itself and handle a 409.
The OpenAI steering guide, read 2026-09-30, says steering does not rewrite output already sent to your application, undo earlier actions, or cancel tools that have already started. It is available with the GPT-6 family over a WebSocket connection to the Responses API, using response.steer with previous_response_id and new input.
What does Sume's cancel do?
Per Jobs and results, cancellation succeeds only before generation work starts. After that the API returns 409 job_generation_already_started with details.cancelable: false, and the job runs to completion. Cancelling a job that is already canceled is idempotent and returns the same canceled job, so a repeated call is safe.
| Job state when cancel is called | Result |
|---|---|
| Before generation starts | Job becomes canceled |
| After generation started | 409 job_generation_already_started, cancelable: false |
Already canceled | Same canceled job returned |
How should the agent react to a steer?
Keep the job_id from each create. On a steer that drops the video, call jobs_cancel (a write tool that needs an idempotency_key); if it returns the 409, tell the user the job is already generating and offer to use or discard the result. The REST form is POST /v1/jobs/{id}/cancel.
Does dropping the connection stop billing?
No. A client-side timeout does not cancel the job; it keeps running and still bills, and you have only stopped watching. Store the id and pick it back up from status_url, or cancel explicitly. The wider cancel behavior is in cancel AI video jobs and runs.
Sources
Related posts
More in Developers
- Change caption style without transcribing again: source_caption_id
Pass source_caption_id instead of video_url to re-burn a clip under a new style. Sume reuses the stored word timings, so speech-to-text runs only once.
- Retool Workflow webhook needs X-Workflow-Api-Key: use a relay
Retool Workflows authenticate webhooks with an X-Workflow-Api-Key header or query parameter. Sume documents no custom delivery headers: relay after verifying.
- Retry a 503 overload on a paid generation without a double charge
A 503 overload is safe to retry on Sume if you reuse the same idempotency key. Credit is reserved at submit and released if the job fails.
- Runway Enhance Frame Rate: 300 s cap and credits vs Sume fps
Runway's Enhance Frame Rate takes inputs up to 300 seconds at 1 credit per 2 seconds. Sume's Timeline sets output.fps to 24, 25, 30 or 60. Compared.
Written by Sume