Why did the exchange or bidder reject my bid request as invalid?

Answer

The usual suspects, in order: JSON that does not parse (trailing commas, unescaped quotes, truncation), a missing top-level id or imp array, an empty imp array, integers sent as strings (at, tmax, w, h, the flag fields), both site and app present, and fields that moved in 2.6 still sitting at their 2.5 paths. Strictly typed parsers reject the whole request on the first type error, and the failure is usually silent from your side. A validator pinpoints the exact path instead of leaving you to diff a 4 KB payload by eye.

Go deeper

More questions on debugging, no-bids, and validation

All 93 questions are listed in the OpenRTB FAQ.