Troubleshooting

Diagnose the API path in this order: key class, activation, client_id, decision response, brand-safety or consent gating, then beacon delivery. That order usually exposes the real fault faster than debugging renderer details first.

Checklist

Trace the REST path in six stages

  1. 1. Check authorization. A 401 unauthorized response means “Missing secret key.” A 403 forbidden response means “Wrong key type for the request.”
  2. 2. Check the request body. client_id, session_id, and job_type are required. A 400 validation_error means “The request body failed validation.”
  3. 3. Check the content type and rate limit. A 415 unsupported_media_type means “Non-empty request bodies must use Content-Type: application/json.” A 429 rate_limited means “Key exceeded its rate limit; retry after the Retry-After header.”
  4. 4. Check the placement result. Classify the response as filled, no_fill, not_ready, or invalid_response. A controlled no-fill is successful handling, not a renderer failure.
  5. 5. Check rendering and beacons after a fill. A filled placement includes placement.render; use the hosted descriptor, then inspect the documented beacon path for rendered or clip-completion evidence.
  6. 6. Preserve the endpoint error and route. Record the status, documented error code, and whether the failure occurred before or after a placement response when escalating an integration issue.

Why am I not seeing ads?

Check for no-fill first. Then validate whether activation, allowed origins, blocked categories, or missing consent are gating the sponsor path intentionally.

Why is the browser path failing?

Confirm that you are using a publishable key, the active origin is allowed, and activation succeeded before calling protected runtime routes. If DevTools shows ERR_BLOCKED_BY_CLIENT, temporarily disable the blocking extension for the Test domain or allow the Wavebird renderer origin, then reload. Do not weaken your site CSP.

Why is the backend path failing?

Check the secret key, the client_id, and whether your backend is calling the canonical /v1 surface rather than older compatibility routes.

Why is billing missing?

Validate the beacon path. Rendering alone is not enough for billable completion. The missing evidence is usually in visibility or clip-completion events.

Why is integration verification incomplete?

Dashboard verification counts only requests sent by your deployed publisher app. Local simulator runs, Wavebird-generated Test runs, and Production simulations remain separate. A no-fill proves decision handling, but a filled response is still required for hosted-render and beacon-sequence verification.

Need rollout review?

Start with the Server API. Use contact only when you need rollout review, enterprise coordination, or non-standard integration help.

Contact the team