fal content_policy_violation 422 vs Sume generation_rejected
fal returns content_policy_violation as a non-retryable 422. Sume's closest job error category is generation_rejected: inspect events and fix the input.

fal returns content_policy_violation with status 422 and marks it not retryable. In Sume's job errors the nearest category is generation_rejected, whose documented next action is "Inspect events and fix unsupported input." Treat both as a signal to change the input, not to retry unchanged.
fal facts are from its Model Errors page; Sume facts from Errors and credits, read 2026-10-01. The mapping is a reading aid, not an official equivalence.
What does fal say content_policy_violation means?
The input, such as a prompt or uploaded image, was flagged by automated safety systems. The flag may come from fal's filter or a partner's, and sensitivity can vary between partner APIs. The same page lists no_media_generated (also 422, not retryable) for a run that completed without producing media. The error body is a detail array whose objects carry loc, msg, type and url; fal says to branch on type, not msg.
Which Sume category matches?
Failed Sume jobs expose public error metadata: category, stage, retryability, retry-after seconds, public reason and next action. Three categories are easy to confuse with a policy block.
| Category | Documented next action | Closest fal idea |
|---|---|---|
generation_rejected | Inspect events and fix unsupported input | content_policy_violation |
generation_unavailable | Retry later | Provider-side 5xx types |
validation | Fix input | Pydantic-style 422 types |
Does the HTTP status match?
Not necessarily. The Sume docs key the next action on the job's error category and its retryability fields, so branch on those rather than on a 422. Because the docs do not say that every moderation block maps to generation_rejected, read public reason and the job events before deciding.
What should my retry logic do?
Retry generation_unavailable later; do not retry generation_rejected or validation unchanged. For a worked moderation case, see GPT Image moderation blocked and Sume content policy rejected.
Sources
Related posts
More in Developers
- falrun.com firewall allowlist vs Sume API and media hosts
fal says to allow fal.run, queue.fal.run and the falrun.com backups. For Sume, allow api.sume.com and media.sume.com; webhooks come to your own HTTPS host.
- fal generation_timeout 504 error: what to do on Sume
fal returns generation_timeout as a 504 typed error. Sume has a generation_timeout category; the documented action is to poll status or retry later.
- fal queue status IN_QUEUE IN_PROGRESS COMPLETED on Sume
Sume's status endpoint returns a queue-shaped status field with IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED and CANCELED, mapped one-to-one onto sume_status.
- x-fal-billable-units header: WebSocket billing vs Sume receipts
fal bills WebSocket sessions via x-fal-billable-units headers. Sume has no such header: cost is a per-job ledger row you read back by job or run.
Written by Sume