Webhooks vs polling for an ad-buying agent
Subscribe to signed lifecycle events for funded, paused, review, and conversion. Poll performance and freshness. Do not poll every object every few seconds.
Published 2026-09-10 · Search job: webhooks vs polling media buying API
Use webhooks for state changes. Use polling for reports. Mixing those jobs is how an agent burns quota and still misses a pause.
Webhooks tell you that the wallet was credited, that a creative entered requires_review, that a campaign paused, that a landing page drifted, or that a conversion arrived. Those are durable rows with X-AdpZero-Signature and bounded retries. Subscribe to webhooks from an agent is the setup page.
Performance is still a pull. Impressions, spend, clicks, conversions, and freshness are query results. generated_at is local response time. The reporting sync timestamp is what decides whether a zero is real. Read performance without fooling yourself is that checklist.
What not to poll
Do not poll GET /creative every two seconds while you wait for exchange review. Subscribe to creative.approved and creative.requires_review. Do not poll funding intents in a tight loop if you can wait for account.funded. Do not treat a webhook as exchange click truth.
CLI and MCP can still list objects when you are debugging. That is a session, not a cron. The product already learned what a one-minute loop costs when it has nothing to do. Keep the agent loop event-driven for lifecycle and pull-based for numbers.