Higgsfield webhook retries: two hours vs Sume's ten attempts
Higgsfield retries 5xx for up to two hours and wants a reply in ten seconds. Sume makes 10 attempts, 30 seconds apart, then lets you redeliver by hand.

Higgsfield retries network failures and 5xx responses for up to two hours and treats any 4xx as permanent. Your endpoint has ten seconds to answer. Sume retries a failed delivery up to 10 times in total, with a fixed delay of 30 seconds by default and a 10-second timeout per attempt, and you can redeliver by hand after the automatic attempts run out.
Retry rules compared
The retry windows are different shapes. Higgsfield's is long and time-based. Sume's is short and count-based: with the default spacing, ten attempts cover roughly four and a half minutes between the first and the last. If your receiver can be down for longer than that, plan for the redeliver call and for polling.
| Rule | Higgsfield | Sume |
|---|---|---|
| Retried | Network failures and 5xx, for up to two hours | Network errors and non-2xx, up to 10 attempts |
| Not retried | 4xx responses are permanent | Not exempted: any non-2xx is retried |
| Reply deadline | Ten seconds | 10 seconds per attempt |
| Spacing | Not stated on the page | Fixed, 30 seconds by default, not exponential |
| Duplicates | Possible; deduplicate by request_id and terminal status | Possible; use job_id as the idempotency key |
| After giving up | Poll the status URL | Redeliver per job, or poll status_url |
Make the handler idempotent
Both providers say the same thing about duplicates: they can happen, so your handler must be idempotent. Record the event durably first, then return a 2xx. Higgsfield's page says to acknowledge valid duplicates with 2xx and reject envelopes you do not recognise. On Sume, key your table on job_id.
When the receiver was down too long
Sume's POST /v1/jobs/{job_id}/webhook/redeliver (needs jobs:write) re-sends the job's real terminal event with a fresh timestamp and signature. It does not use up one of the automatic ten attempts, and it does not change the destination URL. Higgsfield's webhook page describes no manual replay, so for a long outage you would read request_id status over the API instead.
The two answer one question the same way in the end. A webhook is a speed-up, and the status endpoint is the source of truth. Keep polling available for the events that never arrive.
Checklist
Four habits cover both APIs.
- Return
2xxfast and do the work after. - Deduplicate on the job or request id plus the terminal status.
- On Sume, expect a retry after any non-2xx, including a 4xx you meant as final.
- Keep a slow polling sweep for jobs with no event.
Sources
Related posts
More in Developers
- Ideogram color_palette parameter: brand colours in Sume prompts
Ideogram's API takes a color_palette parameter. The Sume image API has no palette field, so brand colours go in the prompt and a reference swatch image.
- Ideogram negative_prompt: what to send to the Sume image API instead
Ideogram has a negative_prompt parameter, but Sume's image API does not. Rewrite exclusions as positive instructions and check each result.
- Ideogram style_type REALISTIC, DESIGN, FICTION: the Sume equivalent
Ideogram 3.0 has a style_type with five values. Sume has none; get a realistic, design or fiction look through prompt wording and model choice.
- Verify a Sume job.completed webhook in Python (stdlib)
A stdlib Python verifier for Sume job webhooks: HMAC SHA-256 over timestamp.raw_body, five-minute tolerance, rotation-safe, and it refuses an empty secret.
Written by Sume