AdCP 3.1.13 · Negotiation layer

AdCP Sponsored Intelligence

AdCP Sponsored Intelligence is a schema group of the Ad Context Protocol holding 4 of the 64 operations in release 3.1.13, covering the offering lookup and session lifecycle for conversational brand experiences inside AI assistants.

All 4 Sponsored Intelligence operations are marked experimental. si_get_offering is an anonymous pre-session lookup; si_initiate_session, si_send_message and si_terminate_session run the session itself.

si_terminate_session declares x-mutates-state: true and its request schema does not require idempotency_key, so the protocol defines no retry protection for it. comply_test_controller is the other operation where those two come apart.

What the 4 sponsored intelligence operations do

Sponsored Intelligence — 4 operations
Operation Request fields Response fields What it does
si_get_offering 8 25 si_get_offering is the AdCP task for anonymous pre-session offering lookups.
si_initiate_session 13 21 si_initiate_session is the AdCP task that starts a Sponsored Intelligence session.
si_send_message 9 21 si_send_message is the AdCP task for exchanging messages in an active SI session.
si_terminate_session 7 20 si_terminate_session is the AdCP task for ending an SI session.

si_get_offering

si_get_offering is the AdCP task for anonymous pre-session offering lookups.

si_get_offering request — 8 fields, 1 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
offering_idstringrequiredOffering identifier from the catalog to get details for
intentstringOptional natural language description of user intent for personalized results (e.g., 'mens size 14 near Cincinnati').
contextcontextOpaque correlation data that is echoed unchanged in responses.
include_productsbooleanWhether to include matching products in the response
product_limitintegerMaximum number of matching products to return
extextExtension object for platform-specific, vendor-namespaced parameters.
si_get_offering response — 25 fields, 2 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
availablebooleanrequiredWhether the offering is currently available
offering_tokenstringToken to pass to si_initiate_session for session continuity.
ttl_secondsintegerHow long this offering information is valid (seconds).
checked_atstringWhen this offering information was retrieved
offeringobjectOffering details
matching_productsobject[]Products matching the request context.
sponsored_contextsi-sponsored-contextDeclaration for the sponsored context carried by this offering response.
total_matchingintegerTotal number of products matching the context (may be more than returned in matching_products)
unavailable_reasonstringIf not available, why (e.g., 'expired', 'sold_out', 'region_restricted')
alternative_offering_idsstring[]Alternative offerings to consider if this one is unavailable
errorserror[]Errors during offering lookup
extextExtension object for platform-specific, vendor-namespaced parameters.
si_get_offering — Example (json) — source
{
  "$schema": "/schemas/sponsored-intelligence/si-get-offering-request.json",
  "offering_id": "nike-summer-sale"
}

si_initiate_session

si_initiate_session is the AdCP task that starts a Sponsored Intelligence session.

si_initiate_session request — 13 fields, 3 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
intentstringrequiredNatural language description of user intent — the conversation handoff from the host describing what the user needs from the brand agent
contextcontextOpaque correlation data that is echoed unchanged in responses.
identitysi-identityrequiredUser identity shared with brand agent (with explicit consent)
media_buy_idstringAdCP media buy ID if session was triggered by advertising
placementstringWhere this session was triggered (e.g., 'chatgpt_search', 'claude_chat')
offering_idstringBrand-specific offering identifier to apply
supported_capabilitiessi-capabilitiesWhat capabilities the host supports
offering_tokenstringToken from si_get_offering response for session continuity.
sponsored_context_receiptsi-sponsored-context-receiptHost receipt for sponsored context accepted from a prior si_get_offering response or other pre-session context package.
idempotency_keystringrequiredClient-generated unique key for this request.
extextExtension object for platform-specific, vendor-namespaced parameters.
si_initiate_session response — 21 fields, 3 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
session_idstringrequiredUnique session identifier for subsequent messages
responseobjectBrand agent's initial response
negotiated_capabilitiessi-capabilitiesIntersection of brand and host capabilities for this session
sponsored_contextsi-sponsored-contextDeclaration for sponsored context carried by the initial brand-agent response.
session_statussi-session-statusrequiredCurrent session lifecycle state. One of: active, pending_handoff, complete, terminated.
session_ttl_secondsintegerSession inactivity timeout in seconds.
errorserror[]Errors during session initiation
extextExtension object for platform-specific, vendor-namespaced parameters.
si_initiate_session — Example (json) — source
{
  "offering_token": "offering_abc123xyz"
}

si_send_message

si_send_message is the AdCP task for exchanging messages in an active SI session.

si_send_message request — 9 fields, 2 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
idempotency_keystringrequiredClient-generated unique key for at-most-once execution.
session_idstringrequiredActive session identifier
messagestringUser's message to the brand agent
action_responseobjectResponse to a previous action_button (e.g., user clicked checkout)
sponsored_context_receiptsi-sponsored-context-receiptHost receipt for sponsored context accepted from a prior SI response in this session.
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
si_send_message response — 21 fields, 3 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
session_idstringrequiredSession identifier
responseobjectBrand agent's response
mcp_resource_uristringMCP resource URI for hosts with MCP Apps support (e.g., ui://si/session-abc123)
sponsored_contextsi-sponsored-contextDeclaration for sponsored context carried by this brand-agent response.
session_statussi-session-statusrequiredCurrent session status. One of: active, pending_handoff, complete, terminated.
handoffobjectHandoff request when session_status is pending_handoff
errorserror[]
extextExtension object for platform-specific, vendor-namespaced parameters.
si_send_message — Example (json) — source
{
  "session_id": "sess_abc123",
  "message": "Do you have any earlier flights?"
}

si_terminate_session

si_terminate_session is the AdCP task for ending an SI session.

si_terminate_session request — 7 fields, 2 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
session_idstringrequiredSession identifier to terminate
reasonstringrequiredReason for termination One of: handoff_transaction, handoff_complete, user_exit, session_timeout, host_terminated.
termination_contextobjectContext for the termination
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
si_terminate_session response — 20 fields, 3 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
session_idstringrequiredTerminated session identifier
terminatedbooleanrequiredWhether session was successfully terminated
session_statussi-session-statusResulting session state. One of: active, pending_handoff, complete, terminated.
acp_handoffobjectACP checkout handoff data.
follow_upobjectSuggested follow-up actions
errorserror[]
extextExtension object for platform-specific, vendor-namespaced parameters.
si_terminate_session — Example (json) — source
{
  "intent": { /* purchase intent from handoff */ },
  "context_for_checkout": { /* ACP context */ }
}

The other 9 AdCP areas

Related