FLUX 3 Image API 422 unknown field vs Sume 400
FLUX 3 Image returns 422 for an unknown field, a blank prompt or a small reference. Sume returns 400 unsupported_parameter. Map the status codes in your client.

On BFL's FLUX 3 Image endpoint a request with an unknown field returns 422, and so do a blank prompt, an invalid parameter value and a reference image smaller than 256 x 256 pixels. Sume splits it differently: a parameter the selected model does not list is rejected with 400 unsupported_parameter. If one client calls both, branch on the error code, not on 422.
BFL facts are from its FLUX 3 Image reference; Sume facts from the Image API and errors and credits, read 2026-10-01.
What does FLUX 3 Image return for a bad request?
The request schema sets additionalProperties: false, so any field it does not define is a validation error. The spec also says an entities field returns 422: boxes go into the end of prompt as a JSON list, not a separate parameter. A reference above 16 megapixels is a different case and returns 400.
| Input problem | Status |
|---|---|
Unknown field (including entities) | 422 |
| Blank prompt | 422 |
| Invalid parameter value | 422 |
| Reference below 256 x 256 | 422 |
| Reference above 16 megapixels | 400 |
What does Sume return?
Parameters on Sume carry typed descriptors in the catalog, and the docs say a request that sets a parameter the selected model does not list is rejected with 400 unsupported_parameter rather than silently dropped. A few fields are in the schema but advertised by no model in v1 (output_compression, seed and explicit pixel size), and they get the same error. The general table in the errors page lists 400 as invalid_request or bad_request for other malformed bodies.
How should my client handle both?
Treat 4xx as "do not retry unchanged" and read the body for the cause. For Sume, read the error code and, for unsupported_parameter, remove the field or choose a model whose supported_parameters lists it. For BFL, read the detail array (each item has loc, msg and type) to find the offending field.
Also keep field names per provider: a FLUX 3 request that works on BFL carries fields such as images and grounding that a Sume image request does not list, and Sume's catalog entries for FLUX are FLUX.2 Pro and Flex, not FLUX 3 Image. See what Sume serves for FLUX 3.
Is a silent drop ever possible on Sume?
Not for listed-or-not checks: the docs describe rejection instead of a silent drop. Where the docs note a value is accepted but inert, as for multi-provider routing fields, that is called out in the Sume specifics table, so read it before relying on a field.
Sources
Related posts
More in Developers
- FLUX API 429 vs Sume 429: rate_limited and queue_full
BFL returns one 429 for exceeded account rate limits. Sume splits 429 into rate_limited (back off) and queue_full (wait for a job to finish or cancel one).
- FLUX moderation reasons: handling the block vs a Sume job error
How to code the handler: BFL returns a Moderation Reasons array in details. A failed Sume job returns an error category and next action, not a reasons array.
- FLUX API polling_url and regional hosts vs Sume job polling
BFL says to poll the polling_url it returns on api.bfl.ai and its EU and US hosts. Sume has no region choice: you poll the status URL in the job envelope.
- FLUX Request Moderated vs Content Moderated, and Sume's reason
BFL separates input moderation from output moderation and adds a Moderation Reasons array. Sume groups refusals under content_policy_rejected.
Written by Sume