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.

4 min readSume
All posts

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.

Content-policy messages in the job-error remap (source read 2026-10-10)
Job typeMessage
ImageProvider rejected this image for content policy. Revise the prompt and retry.
MusicProvider rejected this music request for content policy. Revise the prompt and retry.
Video and everything elseProvider 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_policy
  • content-policy
  • content policy
  • sensitive content
  • policy_violation
  • policy 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_message for 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

All Developers posts

Written by Sume