demo · v130

B&A auction API probe

Call navigator.getInterestGroupAdAuctionData(), inspect the encrypted request payload the browser returns, and POST it to a local seller endpoint. The page does not fabricate a winning ad; a real Bidding & Auction service must return the server response bytes before navigator.runAdAuction() can render.

requires Privacy Sandbox + B&A services Live B&A needs chrome://flags/#enable-protected-audience-services-bidding-and-auction-server-api plus a configured Bidding & Auction server in a TEE. The local backend only records the encrypted request and returns a clear refusal instead of inventing an auction result.

1 — configure

2 — pipeline

1

collect IGs

browser gathers interest groups + bidding signals

2

encrypt

OHTTP-encrypted blob for the seller-side TEE

3

off-device auction

B&A service decrypts, scores, returns winner

4

render

browser opens fenced frame to winning ad

3 — log

the code

// 1. Browser collects interest-group ad-auction data.
const data = await navigator.getInterestGroupAdAuctionData({
  seller: "https://ssp.example",
});

// 2. POST the OHTTP-encrypted bytes to the seller (forwards to B&A server).
const res = await fetch("https://ssp.example/auction", {
  method: "POST", body: data.request,
});
const serverResponse = await res.arrayBuffer();

// 3. Browser finalises the auction and renders the winner.
const fencedFrameConfig = await navigator.runAdAuction({
  seller: "https://ssp.example",
  serverResponse,
  requestId: data.requestId,
});
document.querySelector("fencedframe").config = fencedFrameConfig;

see also