ARTF payload root is not a JSON object
The payload parses but its root is not an object. An RTBRequest and an RTBResponse are each a single message.
What it means
The document parses as JSON, but the root is an array, a string, or a bare literal. Both ARTF messages are single protobuf messages, so their JSON form is always one object.
Why it matters
The usual cause is sending the mutation array on its own rather than the RTBResponse that carries it. The mutations are a repeated field inside the message, not the message.
How to fix it
Send the whole message: an object with id, mutations, and metadata for a response, or the RTBRequest envelope for a request.
Example that trips it
[{ "intent": "ACTIVATE_DEALS", "op": "OPERATION_ADD", "path": "/imp/imp-1" }]The mutation list sent where the RTBResponse belongs.
Check your payload
Paste a bid request or response into the tester to see whether this code fires against it, or gate on the id in CI with the CLI: the id is stable, wording is not.
Back to the full diagnostic code reference.