Inngest 1.45 returns 400 for unknown v2 fields: treat a Sume 400 alike
Inngest v1.45.0 rejects unmapped REST v2 request fields with HTTP 400. A Sume 400 invalid_request is the same fix-the-request signal; do not retry it.

Inngest v1.45.0 (2026-09-17) now returns HTTP 400 for REST v2 requests with fields it does not map, instead of ignoring them, and a Sume 400 invalid_request carries the same instruction: fix the request before retrying. In an Inngest function that calls Sume, a 400 should end the step, not use up its retries.
The Inngest detail is from an aggregator of its release notes, so treat it as secondary: Releasebot's Inngest page, read 2026-10-03. The Sume rules are from Errors and rate limits and Generation admission. Sume's docs do not say whether it rejects unknown fields, and I did not test it.
What changed in Inngest 1.45?
Per that page, v1.45.0 also adds CEL filtering to REST v2 run-list endpoints, stores CLI OAuth credentials in the operating system's credential store, and makes CEL filter errors name unsupported fields. For v2 clients the migration note is to remove unsupported query parameters, since invalid fields now fail with 400. v1.45.1 the same day adds an option to drop permanently unroutable queue items.
What should a function do with a Sume 400?
Fail the step without retries, log error.code and error.request_id, and fix the request. Retrying cannot change a request body that is wrong. Retry only capacity and rate cases, and when you do, reuse the same Idempotency-Key so the retry returns the original job instead of billing twice.
| Status and code | Retry in the function? |
|---|---|
400 invalid_request | No, fix the request |
401 unauthorized | No, fix the key |
402 insufficient_credits | No, add funds or lower the cost |
409 idempotency_conflict | No, the key was reused for a different payload |
429 queue_full | Later, same key, after a job finishes or is canceled |
429 rate_limited | After retry-after, same key |
503 provider_capacity_exceeded | Later, same key |
Sources
Related posts
More in Developers
- Insomnia: import the Sume OpenAPI from a URL and set up auth
Insomnia Import then URL accepts an OpenAPI 3.0 or 3.1 spec. Paste api.sume.com/reference/json, then keep the Bearer key in an environment, not the spec.
- Inso CLI in CI: lint and export a Sume OpenAPI copy in Insomnia
Inso CLI can lint an OpenAPI spec and export one from an Insomnia collection, failing a build on errors. Use it to guard your committed copy of the Sume spec.
- Inworld's OpenAI-style /v1/audio/speech vs a Sume TTS job in Python
Inworld added POST /v1/audio/speech on Sept 11, 2026, so OpenAI SDKs work unchanged. The Sume equivalent is a job you poll: a Python sample that runs.
- Is AI avatar video real time? How long a Sume job takes
A Sume avatar video is a job, not a live stream: it queues, renders, and you poll or take a webhook. What the sync wait caps at, and a Python polling loop.
Written by Sume