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.

On OpenRouter, an error that happens while the model is producing output arrives after the HTTP status is already 200, in the response body or as an SSE data event. On Sume a 2xx means the job exists and paid work is in flight; success or failure of the work is read from the job, not the HTTP status.
Sources: OpenRouter's errors page and Sume's Jobs and results, read 2026-10-01.
What does OpenRouter say?
The page lists cases where the request fails with an error status, such as an invalid request or an account out of credits. Otherwise the HTTP status will be 200, and any error that occurs while the LLM is producing output is emitted in the response body or as an SSE data event. Streaming clients therefore check each event for an error, not just the status line.
Where does a failure show on Sume?
Every submit mode returns the job id in its first response, and a 2xx "does not mean the job finished". Read terminal and result_ready off the envelope. The documented poll loop ends by reading failures from the record: for failed or canceled, raise from GET /v1/jobs/{job.id} and its job.error; the result route returns 409 job_not_completed otherwise.
There is no SSE or WebSocket transport on the Developer API today. GET /v1/jobs/:id/events is a pull snapshot, not a stream. If a sync wait times out, poll; see recovering before resubmitting.
How do the two models compare?
| Question | OpenRouter | Sume |
|---|---|---|
| Status 200/2xx means | Response started; errors may follow | Job exists, work in flight |
| Late failure appears in | Body or SSE data event | job.error on the job record |
| Streaming transport | SSE | None; poll status_url |
What should my client check?
Never mark a Sume submit as successful on the HTTP code alone. Poll until terminal is true, branch on sume_status, and only then fetch the result.
Sources
Related posts
More in Developers
- 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 Security Center key sprawl: a Sume key checklist
OpenRouter's Security Center flags idle keys and missing limits. For Sume, rotate by replace, verify, revoke, and use per-call max_spend_usd and key budgets.
- 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.
- OpenRouter video webhooks vs Sume callback_url, signing, retries
OpenRouter's video guide points to a webhooks cookbook. On Sume, pass an HTTPS callback_url, verify x-sume-webhook-signature, retry with Idempotency-Key.
Written by Sume