WaveSpeed API v3 predictions/result vs Sume /v1/jobs/status/result

Porting from WaveSpeed's api/v3 submit and predictions/{id}/result to Sume: base URLs, Bearer auth, idempotency keys, status and result routes side by side.

5 min readSume
All posts

WaveSpeed's API is https://api.wavespeed.ai/api/v3, with a model-specific POST to submit and GET /predictions/{TASK_ID}/result to read; Sume's is https://api.sume.com/v1, with a model endpoint to submit and GET /v1/jobs/:id/status and /result to read. Both use a Bearer key, so a port is mostly route names, one new header and one different result shape.

WaveSpeed's side is from its REST API docs and Sume's from Jobs and results and the API reference, read 2026-10-02.

How do the two request flows line up?

WaveSpeed: submit, receive a task id and status URL, poll for results. Sume: submit with mode: "async", receive the job id (request_id), status_url, result_url, events_url and cancel_url, poll the status, then fetch the result once result_ready is true.

WaveSpeed to Sume route map, read 2026-10-02
StepWaveSpeedSume
Base URLhttps://api.wavespeed.ai/api/v3https://api.sume.com/v1
AuthAuthorization: Bearer keyAuthorization: Bearer key
SubmitPOST to a model-specific pathPOST to a model path, mode: async
Status and resultGET /predictions/{id}/resultGET /v1/jobs/:id/status, then /result
CancelStatus cancelled existsPOST /v1/jobs/:id/cancel, before generation starts

What do you need to add?

The new piece is Idempotency-Key. Sume's docs say not to retry unsafe submit requests without one, and the key is what makes a retry after a network error safe. Pick one key per logical job, such as a hash of the shot id and prompt, and reuse it on retry.

A request that works looks like the one in Sume's docs:

curl -X POST https://api.sume.com/v1/image-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: shot-0042-v1" \
  -d '{"prompt":"Product hero shot of a matte black bottle on marble","mode":"async"}'
# 202 -> request_id, status_url, result_url, next_poll_after_seconds

What is different about results and errors?

Completed jobs return artifacts under https://media.sume.com, and Sume says raw provider URLs are not part of the public contract. Errors come in a JSON envelope with a code, message and request_id; include the request id when you contact support, and never include API keys or signed URLs.

WaveSpeed lists 400, 401, 429 and 500 on its page. Sume's table adds 402 insufficient_credits, 409 for invalid job operations, and 429 queue_full, which a WaveSpeed client will not already handle.

What does Sume not do?

Sume does not expose WaveSpeed's catalog of 1,000+ models; it serves its own catalog, so check the model list before mapping an id. Model-for-model parity is not claimed on these pages. The managed media API comparison covers pricing and catalog differences.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume