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.
Send a message within an active SI session. The host invokes this task to relay user messages and action responses to the brand agent.

Request

At least one of message or action_response must be provided.

Action Response Object

When the user interacts with a UI element:

Response

If a prior si_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

Handoff Object

When session_status is pending_handoff:

Examples

Simple Message Exchange

Request:
Response:

Action Response (Button Click)

Request:
Response:

Transaction Handoff

When the user is ready to purchase: Request:
Response:

Handling Handoffs

When you receive session_status: "pending_handoff":
  1. For type: "transaction" - Initiate ACP checkout with the provided intent and context
  2. For type: "complete" - The conversation is done; return to normal chat
The host should call si_terminate_session after handling the handoff to properly close the session.

Key Points

  1. Message or action_response - Each request needs at least one. Users can type messages or interact with UI elements.
  2. Session status drives flow - Check session_status on every response to know if the conversation continues or needs handoff.
  3. Handoff preserves context - The context_for_checkout object gives ACP everything needed for a seamless purchase experience.
  4. UI elements are optional - Brand agent decides when to include cards, carousels, etc. based on the conversation.