On the wire
Ships with HTTP status 400, carrying "code": "RU-3004" in the response body alongside the human-readable error message. Existing fields are never replaced by the code: it is additive.
Common causes
- An assertion operator supplied without its value, or vice versa.
- A status range like 500–200.
- A JSON path with no condition, an "exists" condition given a value it does not take, or an "equals"/"contains" condition with no value.
- A JSON path using a wildcard, a filter expression, or recursive descent, none of which are supported.
- Setting response assertions on a TCP, SMTP, or heartbeat check.
How to fix it
- Pair every assertion operator with a value.
- Keep status ranges min ≤ max.
- Write JSON paths as plain keys and indexes, for example data.items[0].status.
- Only set response assertions on http checks.
Related codes
- RU-3001: Invalid check request
Still stuck?
Ask support and mention RU-3004: the code pins down the exact refusal path, so you skip the diagnostic back-and-forth.