Carried payload is not an OpenRTB object
bid_request or bid_response is present but is not a JSON object, so there is nothing to validate inside it.
What it means
The envelope carries a bid_request or bid_response member that is not an object: a string, an array, or a literal. Both are embedded protobuf messages, so their JSON form is an object.
Why it matters
A string here almost always means the payload was JSON-encoded twice, which is a mistake that survives transport and fails at the far end, where the agent tries to read imp and finds a character array.
How to fix it
Embed the message, do not stringify it. Encode the envelope once, with the auction nested inside it.
Example that trips it
{ "id": "ep-1", "tmax": 120, "lifecycle": "LIFECYCLE_PUBLISHER_BID_REQUEST", "bid_request": "{\"id\":\"a-1\"}" }The auction double-encoded as a string inside the envelope.
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.