Higgsfield Idempotency-Key: 422 on a changed body, vs Sume 409
Both APIs replay the original job for a repeated Idempotency-Key. A changed body gets 422 on Higgsfield and 409 idempotency_conflict on Sume. Rules compared.

Both Higgsfield and Sume let you send an Idempotency-Key on a generation submit, and both return the original job when you repeat the key with the same request. The difference is the conflict: reusing a Higgsfield key with different parameters returns 422 Unprocessable Entity, while Sume returns 409 idempotency_conflict.
Higgsfield's rules
Higgsfield's page says the key is 1 to 255 visible ASCII characters without whitespace, with UUIDs recommended. A key identifies one generation intent in your account and survives API key rotation. A retry with the same key returns the original request_id without creating or charging for another generation, and the replay may show queued even if the original has finished, so check the status URL. The docs warn not to answer a 422 by generating a new key automatically.
| Item | Higgsfield | Sume |
|---|---|---|
| Header | Idempotency-Key | Idempotency-Key |
| Same key, same request | Original request_id, no new charge | Replay returns the original job |
| Same key, changed request | 422 with a message about different parameters | 409 idempotency_conflict |
| Scope | Generation submission endpoints only | Submit requests; also used for safe retries on queue errors |
| Stated TTL | None stated | None stated on the pages read |
Sume's rules
The /v1/videos page says a replay returns the original job, and the admission page lists 409 idempotency_conflict as the case where the same key was reused for a different operation or payload, with the advice to reuse keys only for exact retries. For model: "sume/auto", resolution is a pure function of the normalized request and the catalog version, so an idempotent replay prices and routes identically.
Choosing a key
Derive the key from your own business object, such as an order line and a shot number, and not from a random value made at retry time. That way a crash and restart sends the same key, and the provider returns the same job. Use the same rule on both APIs.
Never mint a fresh key to get past a conflict. A conflict means the request changed, and a fresh key then pays for a second clip.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-shot-03" \
-d '{"model":"seedance-2","prompt":"A product clip on a desk"}'What it does not cover
Idempotency covers the submit. Status reads, cancels and webhook deliveries are not protected by it on Higgsfield, and your webhook handler still has to deduplicate by id.
Sources
Related posts
More in Developers
- Higgsfield output URLs last at least 7 days: copy files out
Higgsfield keeps generated output for at least seven days and may remove it later. Where Sume serves a finished video, and why to copy it to your own storage.
- Higgsfield polling: 2 to 10 seconds with jitter, vs Sume
Higgsfield says start polling at 2 seconds, grow to 10, add jitter. Sume's video docs poll every 30 seconds and honor next_poll_after_seconds. How to pick.
- 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.
- Higgsfield upload URL: 1 hour, MP4 and WAV. Sume takes public URLs
Higgsfield inputs go through a presigned upload that expires in one hour. Sume has no upload step: pass public HTTPS URLs in frame_images or input_references.
Written by Sume