Sume content_policy_rejected: image, music and video messages
Sume scans a provider's rejection text for six phrases and answers with one of three fixed content-policy messages and next_action fix_input.

A Sume job that fails with public_reason: content_policy_rejected carries one of three fixed messages, for image, music or video, and next_action: fix_input. Sume chooses it by scanning the provider's own rejection text for six phrases, so the label follows the provider's wording.
That also means a provider refusal worded some other way is not matched, and the job keeps the ordinary reason generation_rejected or generation_rejected_request. The mapping is in packages/api-jobs/src/public-job.ts.
The three messages
The message depends on what kind of job produced the rejection. These are the sentences as the code returns them.
The video sentence is the only one without "Revise the prompt". It reads as a statement about the generated clip, so a clean prompt can still trip it when the output is what the provider objects to. Treat it as a prompt or reference problem, not as an outage.
| Job type | Message |
|---|---|
| Image | Provider rejected this image for content policy. Revise the prompt and retry. |
| Music | Provider rejected this music request for content policy. Revise the prompt and retry. |
| Video and everything else | Provider rejected the generated video for content policy. |
The six phrases
Matching is a case-insensitive substring test. Sume looks at the provider's reject type and reject message, its callback error, the whole details object and the stored message, and goes up to four levels deep into nested objects.
content_policycontent-policycontent policysensitive contentpolicy_violationpolicy violation
When the label applies
The message is used on any of the three failure codes, provider_submission_failed, provider_execution_failed and generation_failed. The public reason has two extra conditions.
- At submit time the provider must also have answered with a 4xx status. A content phrase on a 5xx stays a submit failure.
- At run time the failure must not be retryable.
- A negative-prompt rejection is checked before content policy, and an image-input stage failure is checked after it.
What to change
fix_input means the request has to change, and a resubmit of the same prompt and images repeats the refusal.
The error envelope fields are described on Errors and rate limits, and job reads are covered in Jobs and results.
- Rewrite the prompt without the flagged subject, then test with a short, cheap clip or a single image first.
- Swap reference images one at a time, because a reference can trigger the refusal even when the prompt is plain.
- Read
details.provider_error_messagefor the provider's own wording, within the 300-character cap. - Do not loop. A policy refusal is not transient, and the guides for single providers are in GPT Image moderation and fal content policy violations.
Sources
Related posts
More in Developers
- Sume job failed: generation_output_unavailable, retry or not
generation_output_unavailable means Sume could not copy a finished output into its storage. Retryable true gives retry_later; false gives contact_support.
- Sume job failed: image_content_rejected, what to change
image_content_rejected marks a non-retryable failure at an image-input stage such as first_frame. Sume sets next_action to fix_input: swap the picture.
- Sume command line tool on Linux arm64: Graviton, Docker on a Mac
The Sume command line tool ships Linux arm64 and x64 binaries plus macOS arm64 and x64. Windows is x64 only. Pick the right asset for Graviton or Docker.
- The agent field in Sume MCP results: next_step and poll_after
Sume's hosted MCP adds an agent object to tool results with next_step, poll_after_seconds, adjustments and recovery. What each field means and when it is null.
Written by Sume