@adcp/sdk API Reference - v14.0.0-beta.6
    Preparing search index...

    Interface RequestProposalsRequest

    Ask a seller to create one or more indicative media-plan proposals from a brief. Provide exactly one brand source: either top-level brand or a natural-key account containing brand and operator. Each returned proposal_id identifies one immutable draft snapshot; revise or finalize it through refine_proposals, or decline it through decline_proposals.

    interface RequestProposalsRequest {
        adcp_version?: string;
        adcp_major_version?: number;
        context_id?: string;
        context?: ContextObject;
        governance_context?: string;
        push_notification_config?: PushNotificationConfig;
        idempotency_key: string;
        account?: CanonicalAccountReference;
        brand?: BrandKey;
        brief: string;
        criteria?: ProductDiscoveryCriteria;
        opportunity?: {
            opportunity_id: string;
            phase?: "exploratory" | "planning" | "active_sourcing";
            intent?: "planning" | "test" | "speculative" | "live_rfp";
            planning_horizon?: DateRange;
            response_deadline?: string;
            status?: "closed" | "open";
            close_reason?:
                | "other"
                | "budget_changed"
                | "selected_alternative"
                | "accepted_with_seller"
                | "purchased_elsewhere"
                | "not_pursued"
                | "timing_changed";
            close_detail?: string;
        } & { status?: "open" };
    }
    Index

    Properties

    adcp_version?: string

    Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1", "3.1-beta"). On a request: the buyer's release pin — the seller validates against its supported_versions and returns VERSION_UNSUPPORTED on cross-major mismatch, or downshifts to the highest supported release within the same major. On a response: the release the seller actually served — clients SHOULD validate the response against that release's schema, not against their pin. Patches are not negotiated; surface them as build_version on capabilities for operational visibility. When omitted, falls back to adcp_major_version (deprecated) or server default. Buyers SHOULD emit both adcp_version and adcp_major_version through 3.x to remain compatible with sellers that only read the legacy field. NORMALIZATION: SDKs that read full-semver values from bundle metadata (e.g. ComplianceIndex.published_version = "3.1.0-beta.1") MUST normalize to release-precision ("3.1-beta.1") before emitting on the wire — meta-field values are NOT valid wire values.

    adcp_major_version?: number

    DEPRECATED in favor of adcp_version (release-precision string). Servers MUST continue to honor this field through 3.x. Removed in 4.0. Original semantics: the AdCP major version the buyer's payloads conform to. Sellers validate against their supported major_versions and return VERSION_UNSUPPORTED if unsupported. When omitted, the seller assumes its highest supported version.

    context_id?: string

    1

    context?: ContextObject
    governance_context?: string

    1

    4096

    push_notification_config?: PushNotificationConfig
    idempotency_key: string

    Client-generated key required for retry-safe proposal creation.

    16

    255

    ^[A-Za-z0-9_.:-]{16,255}$

    account?: CanonicalAccountReference

    Alternative brand source for proposal terms. Provide either this natural-key account containing brand and operator or top-level brand, not both.

    brand?: BrandKey
    brief: string

    Campaign goal, strategy, and requirements that are not represented in structured criteria.

    1

    criteria?: ProductDiscoveryCriteria
    opportunity?: {
        opportunity_id: string;
        phase?: "exploratory" | "planning" | "active_sourcing";
        intent?: "planning" | "test" | "speculative" | "live_rfp";
        planning_horizon?: DateRange;
        response_deadline?: string;
        status?: "closed" | "open";
        close_reason?:
            | "other"
            | "budget_changed"
            | "selected_alternative"
            | "accepted_with_seller"
            | "purchased_elsewhere"
            | "not_pursued"
            | "timing_changed";
        close_detail?: string;
    } & { status?: "open" }

    Optional planning-cycle context that the seller associates with every proposal created by this request.

    Type Declaration

    • opportunity_id: string

      Opaque buyer-assigned identifier for this planning cycle, scoped to the seller and account.

    • Optionalphase?: "exploratory" | "planning" | "active_sourcing"

      Current stage of buyer planning.

    • Optionalintent?: "planning" | "test" | "speculative" | "live_rfp"

      How seriously the buyer is evaluating supply in this cycle.

    • Optionalplanning_horizon?: DateRange
    • Optionalresponse_deadline?: string

      Deadline by which the buyer needs a seller response.

    • Optionalstatus?: "closed" | "open"

      Whether the planning cycle remains open. On calls after initial creation, omission means no status update and MUST NOT reopen or close the opportunity implicitly, except that successful create_media_buy proposal execution explicitly infers accepted closure.

    • Optionalclose_reason?:
          | "other"
          | "budget_changed"
          | "selected_alternative"
          | "accepted_with_seller"
          | "purchased_elsewhere"
          | "not_pursued"
          | "timing_changed"

      Why the opportunity closed. Required when status is closed.

    • Optionalclose_detail?: string

      Optional non-sensitive context about closure. MUST NOT identify a competitor or disclose confidential clearing terms.

    • Optionalstatus?: "open"