On the wire
Ships with HTTP status 400, carrying "code": "RU-4009" in the response body alongside the human-readable error message. Existing fields are never replaced by the code: it is additive.
Common causes
- A whole request body, response, or ORM object passed to setContext instead of a few named values.
- Tags set in a loop, one per record, instead of one tag naming the batch.
- Local-variable capture switched on in a function holding a very large frame.
How to fix it
- Set a handful of named tags and context entries, not a dump of an object.
- Move bulk data out of context: an error tracker stores what identifies the failure, not the payload that caused it.
- Ordinary overage needs no action; the issue detail states how many entries a size cap dropped.
Related codes
- RU-4004: Malformed error batch
Still stuck?
Ask support and mention RU-4009: the code pins down the exact refusal path, so you skip the diagnostic back-and-forth.