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.Request
| Field | Type | Required | Description |
|---|---|---|---|
session_id | string | Yes | Session ID from si_initiate_session |
message | string | No | User’s text message |
action_response | object | No | Response to a UI action (button click, form submit) |
sponsored_context_receipt | object | No | Host receipt for sponsored context accepted or explicitly rejected from a prior SI response |
message or action_response must be provided.
Action Response Object
When the user interacts with a UI element:| Field | Type | Required | Description |
|---|---|---|---|
action | string | Yes | The action identifier from the UI element |
element_id | string | No | ID of the specific UI element |
payload | object | No | Additional data from the interaction |
Response
| Field | Type | Description |
|---|---|---|
session_id | string | Confirms the active session |
response | object | Brand agent’s response |
session_status | string | Current session state |
sponsored_context | object | Sponsored-context declaration for sponsored context in this response |
handoff | object | Present when session_status is “pending_handoff” |
Sponsored Context Receipts
If a priorsi_initiate_session or si_send_message response included sponsored_context, the host decides whether it can honor the declared context_use and disclosure_obligation before presenting, comparing, or otherwise using that context. On a subsequent si_send_message request, the host MAY include sponsored_context_receipt alongside a normal message or action_response to make that decision visible to the brand/seller.
For accepted receipts, accepted_context_use must match the declaration’s context_use, and disclosure_commitment.status must be accepted when disclosure was required. For rejected receipts, omit accepted_context_use and disclosure_commitment; use rejection_reason when the host wants to explain why the context was not accepted or used.
When a si_send_message response includes new sponsored_context, the same acceptance or rejection decision applies before the host uses that response context on the receiving surface. The host can include the receipt on the next turn, or retain it in its own audit record when there is no next SI call.
Session Status Values
| Status | Description |
|---|---|
active | Session continues normally |
pending_handoff | Brand agent signals readiness to hand off |
complete | Conversation is done |
Handoff Object
Whensession_status is pending_handoff:
| Field | Type | Description |
|---|---|---|
type | string | ”transaction” or “complete” |
intent | object | For transactions: what the user wants to buy |
context_for_checkout | object | Summary for ACP handoff |
Examples
Simple Message Exchange
Request:Action Response (Button Click)
Request:Transaction Handoff
When the user is ready to purchase: Request:Handling Handoffs
When you receivesession_status: "pending_handoff":
- For
type: "transaction"- Initiate ACP checkout with the provided intent and context - For
type: "complete"- The conversation is done; return to normal chat
si_terminate_session after handling the handoff to properly close the session.
Key Points
- Message or action_response - Each request needs at least one. Users can type messages or interact with UI elements.
-
Session status drives flow - Check
session_statuson every response to know if the conversation continues or needs handoff. -
Handoff preserves context - The
context_for_checkoutobject gives ACP everything needed for a seamless purchase experience. - UI elements are optional - Brand agent decides when to include cards, carousels, etc. based on the conversation.