Skip to main content
Experimental. Sponsored Intelligence (si_get_offering, si_initiate_session, si_send_message, si_terminate_session) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks’ notice. Sellers implementing any of these tasks MUST declare sponsored_intelligence.core in experimental_features. See experimental status for the full contract.
Start a conversational session with a brand agent. The host platform invokes this task when a user expresses interest in engaging with a brand.

Request

FieldTypeRequiredDescription
intentstringYesNatural language description of user intent — the conversation handoff from the host
identityobjectYesUser identity with consent status
media_buy_idstringNoAdCP media buy ID if triggered by advertising
placementstringNoWhere the session was triggered (e.g., “chatgpt_search”)
offering_idstringNoBrand-specific offering reference to apply
supported_capabilitiesobjectNoWhat the host platform supports
offering_tokenstringNoToken from si_get_offering for correlation
sponsored_context_receiptobjectNoHost receipt for sponsored context accepted before session initiation
contextobjectNoOpaque correlation data echoed unchanged in the response (see application context)

Offering Token

If a host performed a si_get_offering lookup before initiating, include the token for session continuity:
{
  "offering_token": "offering_abc123xyz"
}
The token lets the brand agent know exactly what products were shown to the user (and in what order). This enables natural conversation flow:
  • User sees: “Nike Pegasus ($89), Air Max ($129), Vomero ($139)”
  • User says: “Tell me more about the middle one”
  • Brand agent resolves “middle one” → Air Max via the token’s stored context
If the host accepted or explicitly rejected sponsored context from a pre-session lookup, include sponsored_context_receipt to make the host’s boundary decision visible to the brand/seller:
{
  "offering_token": "offering_abc123xyz",
  "sponsored_context_receipt": {
    "sponsored_context": {
      "paying_principal": {
        "brand": { "domain": "acme-running.example" },
        "display_name": "Acme Running"
      },
      "context_use": "comparison_set",
      "disclosure_obligation": {
        "required": true,
        "label_text": "Sponsored results from Acme Running"
      }
    },
    "host_receipt": {
      "status": "accepted",
      "accepted_context_use": "comparison_set",
      "received_at": "2025-01-19T10:00:02Z",
      "host_surface": "assistant_comparison",
      "disclosure_commitment": {
        "status": "accepted",
        "label_text": "Sponsored results from Acme Running"
      }
    }
  }
}
The receipt records whether the host accepted or rejected the sponsored context. For accepted receipts, it records what the host committed to honor. It does not assert that AdCP can inspect hidden model reasoning.
Receipt fieldDescription
sponsored_contextSender declaration being acknowledged: paying principal, declared use mode, and disclosure obligation
host_receipt.statusaccepted when the host honored the declaration; rejected when it did not use the context
host_receipt.accepted_context_useRequired for accepted receipts; must match the declaration’s context_use
host_receipt.disclosure_commitmentRequired for accepted receipts; records the host’s disclosure commitment
host_receipt.rejection_reasonOptional explanation when the host rejects the sponsored context
An accepted receipt cannot down-scope the use mode or decline a required disclosure. A host that cannot honor either condition rejects the sponsored context instead. Rejected receipts must omit accepted_context_use and disclosure_commitment.

Identity Object

When consent_granted is true:
FieldTypeRequiredDescription
consent_grantedbooleanYesMust be true
consent_timestampstringYesISO 8601 timestamp of consent
consent_scopearrayYesFields the user agreed to share
privacy_policy_acknowledgedobjectNoBrand policy user accepted
userobjectYesUser’s PII
When consent_granted is false:
FieldTypeRequiredDescription
consent_grantedbooleanYesMust be false
anonymous_session_idstringYesUnique ID for this anonymous session

Supported Capabilities Object

Declares what the host platform can render:
{
  "modalities": {
    "conversational": true,
    "voice": { "providers": ["elevenlabs", "openai"] },
    "video": false,
    "avatar": false
  },
  "components": {
    "standard": ["text", "link", "image", "product_card", "carousel", "action_button"],
    "extensions": {
      "chatgpt_apps_sdk": "1.0"
    }
  },
  "commerce": {
    "acp_checkout": true
  }
}

Response

FieldTypeDescription
session_idstringUnique identifier for this session
responseobjectBrand agent’s initial response
negotiated_capabilitiesobjectIntersection of brand and host capabilities
sponsored_contextobjectSponsored-context declaration for sponsored context in the initial response

Response Object

FieldTypeDescription
messagestringText response from brand agent
ui_elementsarrayVisual components to render

Example

Request

{
  "$schema": "/schemas/3.1.0-rc.15/sponsored-intelligence/si-initiate-session-request.json",
  "idempotency_key": "f6a7b8c9-d0e1-4234-f567-234567890123",
  "intent": "User wants to fly to Boston next Tuesday morning on flight 632 at 6 AM.",
  "media_buy_id": "delta_q1_premium_upgrade",
  "placement": "chatgpt_search",
  "offering_id": "delta_chatgpt_3313",
  "identity": {
    "consent_granted": true,
    "consent_timestamp": "2026-01-18T10:30:00Z",
    "consent_scope": ["name", "email"],
    "privacy_policy_acknowledged": {
      "brand_policy_url": "https://delta.com/privacy",
      "brand_policy_version": "2026-01"
    },
    "user": {
      "email": "jane@example.com",
      "name": "Jane Smith",
      "locale": "en-US"
    }
  },
  "supported_capabilities": {
    "modalities": {
      "conversational": true,
      "voice": true
    },
    "components": {
      "standard": ["text", "link", "image", "product_card", "carousel", "action_button"]
    },
    "commerce": {
      "acp_checkout": true
    }
  }
}

Response

{
  "$schema": "/schemas/3.1.0-rc.15/sponsored-intelligence/si-initiate-session-response.json",
  "status": "completed",
  "session_id": "sess_abc123",
  "session_status": "active",
  "response": {
    "message": "Hi Jane! I found DL632 departing at 6:15 AM next Tuesday. Great news—as a SkyMiles Gold member, you qualify for our free Premium Economy upgrade on this flight.",
    "ui_elements": [
      {
        "type": "product_card",
        "data": {
          "title": "DL632 to Boston - Tue Jan 27",
          "subtitle": "6:15 AM → 9:42 AM (3h 27m)",
          "price": "$199",
          "badge": "Free Premium Economy Upgrade",
          "image_url": "https://delta.com/images/premium-economy.jpg",
          "cta": { "label": "Book with Upgrade", "action": "checkout" }
        }
      }
    ]
  },
  "negotiated_capabilities": {
    "modalities": {
      "conversational": true,
      "voice": true
    },
    "components": {
      "standard": ["text", "link", "image", "product_card", "carousel", "action_button"]
    },
    "commerce": {
      "acp_checkout": true
    }
  }
}

Key Points

  1. intent is the conversation handoff - The host tells the brand agent what the user needs in natural language. The brand agent responds naturally, continuing the conversation. context is a separate, optional field: an opaque object (e.g., {"trace_id": "abc-123"}) that the brand agent echoes back unchanged — used by the buyer for correlation, never parsed by the brand agent.
  2. Brand looks up loyalty data - If Jane’s email is recognized, Delta retrieves her SkyMiles status automatically. Hosts don’t store loyalty numbers.
  3. offering_id is brand-specific - The brand interprets this reference to apply promotions, discounts, or loyalty rewards. Hosts pass it through without needing to understand offering semantics.
  4. Capability negotiation - The response includes negotiated_capabilities showing what features this session can use (intersection of brand and host capabilities).
  5. Sponsored context receipt - When a session follows a sponsored preflight lookup, sponsored_context_receipt records the host’s accepted use mode and disclosure commitment. This is a boundary acceptance record, not a claim about hidden model reasoning.
  6. Clear PII with explicit consent - When consent_granted is true, actual email/name are passed (not hashed). This is a direct, consented handoff.