Higgsfield statuses: nsfw and canceled mapped to Sume job states

Higgsfield returns queued, in_progress, completed, failed, nsfw or canceled. How each maps to Sume's video and job statuses, including cancelled vs canceled.

5 min readSume
All posts

Higgsfield has six request statuses: queued, in_progress, completed, failed, nsfw and canceled. Sume has two vocabularies for the same video job. The /v1/videos route says pending, in_progress, completed, failed and cancelled. The jobs API says queued, processing, completed, failed and canceled. There is no separate nsfw status on Sume's pages: a rejection is a failed job with a public error.

The mapping

Use this table when you translate a Higgsfield client. The non-terminal pair is queued and in_progress on Higgsfield. The terminal four are completed, failed, nsfw and canceled.

Status values, read 2026-10-02
HiggsfieldSume `/v1/videos`Sume `/v1/jobs`Terminal
queuedpendingqueuedNo
in_progressin_progressprocessingNo
completedcompletedcompletedYes
failedfailedfailedYes
nsfwfailed with an errorfailed with a public errorYes
canceledcancelledcanceledYes

Two spellings of one state

Note the spelling. The video route uses cancelled with two Ls, as the OpenRouter-compatible wire does, and the jobs API uses canceled. Webhook events use job.canceled. The same job is visible at both GET /v1/videos/{id} and GET /v1/jobs/{id}/status, so pick one vocabulary in your code and normalize at the edge.

Where nsfw goes

Higgsfield's nsfw is a terminal status for content that was rejected, with no output and no charge. Sume's closest signal is the job error: a failed job carries public metadata such as category, stage, retryability and a next action, and the category generation_rejected means to inspect events and fix unsupported input. Branch on the error category, not on a status string.

Normalizing in your client

Normalize to one internal enum: queued, running, done, failed, canceled.

Treat completed as success only when a result is present.

Never retry a rejected job unchanged; change the input.

Store the raw provider status next to your normalized one for support.

  • Normalize to one internal enum: queued, running, done, failed, canceled.
  • Treat completed as success only when the result is ready.
  • Never retry a rejected job unchanged; change the input.
  • Store the raw status next to your normalized one for support.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume