Braze 404 renders empty: a fallback while the Sume clip renders
Braze turns a 404 into an empty string. Sume returns 409 job_not_completed until a result exists. Map one to a fallback URL so no message goes out blank.

Why does a not-ready clip leave a blank spot in Braze?
Two documented behaviors meet. Sume's GET /v1/jobs/:id/result returns a 409 conflict, job_not_completed, until the job is ready; it never returns an empty result. Braze documents that a 404 from a Connected Content call renders an empty string, and that only a 2xx counts as success.
If your lookup passes the Sume status straight through, a clip that is still rendering becomes a hole in the message.
What maps to what?
| Source state | Bad pass-through | What your lookup should return |
|---|---|---|
| Sume job running or queued (result 409 job_not_completed) | 409 or 404, Braze inserts nothing useful | 200 with a fallback still URL |
| Sume job completed | n/a | 200 with the stored video_url |
| Sume job failed | 404 or 5xx, Braze retries or blanks | 200 with the fallback URL, then alert yourself |
| Unknown user key | 404, empty string | 200 with the fallback URL |
How do I read the state?
Read GET /v1/jobs/:id/status and stop on completed, failed or canceled. Do the fetch of /result only when the job is completed. The lookup itself should read your own store, not call Sume, so it stays inside Braze's 2 second budget; a job-state change updates the store through the webhook.
Redirects are not followed by Braze, so store the final https://media.sume.com URL, not a short link that redirects.
curl https://api.sume.com/v1/jobs/job_123/status \
-H "Authorization: Bearer $SUME_API_KEY"
curl -i https://api.sume.com/v1/jobs/job_123/result \
-H "Authorization: Bearer $SUME_API_KEY"
# 409 job_not_completed until the job is readyWhat fallback works well?
A still frame or a static banner at the same aspect ratio keeps the layout stable. The message can read right with the fallback and switch to the clip on the next send. The first post in this series covers the 2 second limit.
Sources
Related posts
More in Integrations
- Braze retries a 500: keep the Sume job submit idempotent
Braze sends 500 and 502 responses to retry logic, and a :retry option exists. Give every Sume submit a stable Idempotency-Key so a retry is not a second bill.
- Cherry Studio: add Sume as a remote MCP server and bind it
In Cherry Studio, add a server under Settings > MCP, enable it, check its tools, then bind it to an Agent. A server that is not started cannot be bound.
- Claude Code MCP_TOOL_TIMEOUT is about 28 hours; Sume waits 55 s
Claude Code lets a tool call run for about 28 hours by default, but Sume's hosted jobs_wait caps one call at 55 seconds. Why you still loop in short slices.
- Claude Code saves MCP text over 50,000 characters: size Sume reads
Claude Code writes long MCP text results to a file, and Sume caps a tool answer at 256 KiB. Read job waves in batches of 20 ids so each answer stays small.
Written by Sume