Rule reference

Bid adm was JSON-encoded twice

openrtb.bid.adm.double_encodederrorBid response

adm parses to another JSON string rather than an object: the native markup response was JSON-encoded twice.

What it means

The bid's adm decodes to another JSON string instead of markup: the payload (typically a native markup response) was JSON-encoded twice, the response-side twin of the native request encoding bug.

Why it matters

The rendering side decodes once and gets a string of escaped quotes no renderer can display. You spent QPS and bid price to win an impression that then errors at render, which is billed waste plus a creative-quality strike.

How to fix it

Encode adm exactly once. If your bidder framework serializes the response object as a whole, insert the native response as a pre-serialized raw string, not as an object serialized again.

Example that trips it

{ "mtype": 4, "adm": "\"{\\"native\\":{\\"link\\":{}}}\"" }

Decoding adm once yields another JSON string rather than an object. Something serialized an already-serialized payload a second time.

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.