Sume "Generation could not start": rejected request or outage

Generation could not start is the fallback when a provider rejects a submit. A 4xx gives generation_rejected_request; anything else gives submit_failed.

4 min readSume
All posts

"Generation could not start." is the fallback message on a Sume job whose submit to the provider failed and left no usable provider sentence. If the provider answered with a 4xx, public_reason is generation_rejected_request and next_action is fix_input; for anything else it is generation_submit_failed, with retry_later or contact_support.

The stage on these errors is generation_submit, which tells you the provider never accepted the work. Compare that with "Generation failed.", the fallback for a job that was already running.

How a submit failure is classified

The stored code is provider_submission_failed. If no retryable flag is stored, it defaults to retryable unless the provider status is 4xx.

The message is the provider's rejection sentence after masking and the 300-character cap when one survives, and "Generation could not start." when it does not. Masking is explained in the redacted URL post.

Submit-failure mapping in packages/api-jobs/src/public-job.ts (source read 2026-10-10)
Situationcategorypublic_reasonretryablenext_action
Provider 4xx with content-policy wordinggeneration_rejectedcontent_policy_rejectedfalsefix_input
Provider 4xx, any other reasongeneration_rejectedgeneration_rejected_requestfalsefix_input
Provider 5xxgeneration_unavailablegeneration_submit_failedtrueretry_later
No HTTP statusgeneration_unavailablegeneration_submit_failedtrueretry_later
5xx with stored retryable falsegeneration_unavailablegeneration_submit_failedfalsecontact_support

Other submit-stage codes

Three more stored codes appear at the same stage and have their own answers.

  • invalid_provider_input reads "Invalid generation input.", with category validation, public_reason: invalid_input and next_action: fix_input. The same mapping covers a stored invalid_request.
  • provider_not_configured reads "Generation runtime is not configured for this environment.", with public_reason: generation_runtime_unavailable and next_action: contact_support. It is not retryable.
  • provider_capacity_exceeded is retryable, with public_reason: generation_capacity_exhausted and next_action: retry_later; the 503 side is in the 503 codes post.

What to do with each answer

The three public fields are enough to choose.

Both submit-time refusals and running-job failures also show in GET /v1/jobs/{id}/events, so the timeline settles which side of the provider boundary the failure was on. The longer retry guidance is in which job errors to retry, and the error envelope itself is described on Errors and rate limits.

  • fix_input: read details.provider_error_message, change the request, and submit a new job. Resending the same body repeats the refusal.
  • retry_later: wait for retry_after_seconds when it is present, otherwise back off, then submit again. Reuse the Idempotency-Key only for an exact retry of the same body.
  • contact_support: stop retrying and send the job id and the request id from the response headers.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume