openrtb.native.request.legacy_wrapper
What it means
The decoded native.request is an object with a single top-level "native" key wrapping the real request. That convention predates Native Ads 1.1, which made the Native Markup Request itself the root object.
Why it matters
Consumers built for Native 1.1+ look for ver, assets, and friends at the root, find only "native", and read an empty request. Some parsers tolerate the wrapper for compatibility; relying on that tolerance is a bet you lose one partner at a time.
How to fix it
Emit the Native Markup Request as the root object of the encoded string and declare the spec version in ver ("1.2"). Drop the wrapper unless a specific partner documents that they still require the legacy shape.
Example that trips it
{ "native": { "request": "{\"native\":{\"ver\":\"1.2\",\"assets\":[]}}" } }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.