impid field that identifies which impression slot it is competing for. If that impid does not appear in the request’s imp[].id array, the bid references a slot that was never offered — a protocol violation that can trigger DSP penalties and waste auction capacity.
Usage
What the gate checks
The gate readsimp[].id from ctx.input (the request) and iterates over every seatbid[].bid[] in ctx.output (the response). For each bid it checks:
- Missing impid — the
bid.impidfield is absent or not a string → fails with"bid missing impid" - Unknown impid — the
bid.impidvalue is not in the set of request impression IDs → fails with"bid impid not present in request"
details.requestImps so you can diagnose the mismatch:
Skipping behaviour
The gate skips gracefully — returningpassed: true, skipped: true — in two situations:
- The request has no
impobjects (no impression IDs to validate against) - The response contains no
seatbid[].bid[]entries (no bids to check)
An empty response is not treated as a failure by this gate. Use a separate content gate if you want to enforce that a bidder must always return at least one bid.
Example: failing bid
imp-abc123. The bid references imp-UNKNOWN, so the gate fails immediately on the first mismatched bid.
Options
Override the gate’s name in evaluation results and telemetry.