On the wire
Ships with HTTP status 400, carrying "code": "RU-4004" in the response body alongside the human-readable error message. Existing fields are never replaced by the code: it is additive.
Common causes
- A hand-rolled client not matching the ingest payload shape.
- A field with the wrong type (for example a numeric string where a number is required).
- An empty events array, or a batch over the per-batch event cap.
How to fix it
- Read the `error` field: it names the exact failing field.
- Use an official SDK, or match its payload shape exactly.
- Resend the corrected batch; the refused one wrote nothing.
Still stuck?
Ask support and mention RU-4004: the code pins down the exact refusal path, so you skip the diagnostic back-and-forth.