OpenRouter batch has no results download; Sume has a URL per job
OpenRouter batch results come inline on GET /batches/:id with no download endpoint. Sume returns a result_url per job and a batch result read over MCP.

OpenRouter's Batch API has no separate download step: when a batch completes, results is returned inline on GET /api/v1/batches/:id. Sume works per job instead. Each submit returns a result_url, and once the job is completed you read GET /v1/jobs/:id/result.
Sources: OpenRouter's Batch API quickstart and Sume's Jobs and results, read 2026-10-01.
Where does OpenRouter put the output?
The quickstart says that while a batch is in progress, or has failed, expired or been cancelled, results is null. On completion the array comes back in the same response, each entry mapped to its input by custom_id, with exactly one of response or error. The page states plainly: there is no separate results-download endpoint. List calls return metadata only, with results set to null.
Where does Sume put the output?
The submit response envelope carries status_url, result_url, events_url and cancel_url. GET /v1/jobs/:id/result is only for completed jobs and answers 409 job_not_completed otherwise. The result payload includes public artifact URLs, which are Sume-hosted media, not raw provider URLs.
| Question | OpenRouter Batch API | Sume jobs |
|---|---|---|
| Unit of work | One batch with many requests | One job per request |
| Where results are | Inline in GET /batches/:id | GET /v1/jobs/:id/result |
| Download endpoint | None | result_url from the submit envelope |
| Not ready yet | results is null | 409 job_not_completed |
How do I read many Sume jobs at once?
Over MCP, jobs_result with several ids returns a job_result_batch: results[] in request order, one entry per id, each with ok plus either value or a typed error. Partial success is normal. For waiting, the docs prefer one batch wait after parallel fan-outs instead of N single waits. See MCP jobs wait for long video jobs.
What should I do over plain HTTP?
Keep the job ids you submitted, poll each status_url until terminal is true, then read each result_url once result_ready is true. If you lost the ids, GET /v1/jobs lists workspace jobs filterable by status and type.
Sources
Related posts
More in Developers
- OpenRouter batch statuses vs Sume job statuses mapped
OpenRouter batches go validating, in_progress, finalizing, completed. Sume jobs go queued, processing, then completed, failed or canceled (one L). Table.
- OpenRouter errors after HTTP 200 vs Sume: 2xx means the job exists
OpenRouter can send an error as an SSE event after a 200. Sume has no SSE transport: a 2xx means the job exists, and failures show up on the job record.
- OpenRouter /images/models supported_parameters vs Sume
How to read supported_parameters enum and range descriptors before sending an image request, and what Sume does with a parameter a model does not list.
- OpenRouter eu. and us. base URLs vs Sume's single API host
OpenRouter added us. and eu. in-region base URLs on 2026-09-09. Sume documents one host, api.sume.com, and no region-pinned base URL or ZDR toggle.
Written by Sume