Skip to content

Async tasks have no polling guidance; agents without webhook infrastructure have no recovery path #1227

@bokelley

Description

@bokelley

Problem

Several tasks can go async — create_media_buy returning pending_activation, sync_creatives going to creative review, get_products with a brief going async. The protocol supports push notifications via PushNotificationConfig for status changes, but this requires the buyer to operate a publicly accessible HTTPS endpoint.

A lightweight agent process (running in a Lambda, a CI job, or an edge worker) typically does not have a persistent public webhook endpoint. There is currently no documented polling fallback:

  • No guidance on poll intervals
  • No status_check_url in the async response to give agents a concrete target
  • No max_wait_seconds to tell agents when to give up

An agent that creates a media buy, gets pending_activation, has no webhook, and polls get_media_buys in a loop has no protocol guidance on whether it should poll every 30 seconds or every 30 minutes.

Proposed fix

Add a polling declaration to GetAdCPCapabilitiesResponse:

async?: {
  supports_webhooks: boolean;
  polling: {
    supported: boolean;
    recommended_interval_seconds: number;
    max_wait_seconds: number;
  };
}

Add status_check_interval_hint_seconds?: number to async response types (CreateMediaBuySuccess when status === 'pending_activation', SyncCreativesResponse when going async). This gives agents without webhooks a concrete polling hint scoped to the specific operation.

Related

Creative review latency is the most operationally critical async gap. Consider adding creative_review_latency_hours?: { min: number; max: number } to capabilities alongside the polling guidance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions