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
| 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.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
offering_id | string | required | Offering identifier from the catalog to get details for |
intent | string | Optional natural language description of user intent for personalized results (e.g., 'mens size 14 near Cincinnati'). | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
include_products | boolean | Whether to include matching products in the response | |
product_limit | integer | Maximum number of matching products to return | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
si_get_offering response — 25 fields, 2 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
available | boolean | required | Whether the offering is currently available |
offering_token | string | Token to pass to si_initiate_session for session continuity. | |
ttl_seconds | integer | How long this offering information is valid (seconds). | |
checked_at | string | When this offering information was retrieved | |
offering | object | Offering details | |
matching_products | object[] | Products matching the request context. | |
sponsored_context | si-sponsored-context | Declaration for the sponsored context carried by this offering response. | |
total_matching | integer | Total number of products matching the context (may be more than returned in matching_products) | |
unavailable_reason | string | If not available, why (e.g., 'expired', 'sold_out', 'region_restricted') | |
alternative_offering_ids | string[] | Alternative offerings to consider if this one is unavailable | |
errors | error[] | Errors during offering lookup | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"$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.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
intent | string | required | Natural language description of user intent — the conversation handoff from the host describing what the user needs from the brand agent |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
identity | si-identity | required | User identity shared with brand agent (with explicit consent) |
media_buy_id | string | AdCP media buy ID if session was triggered by advertising | |
placement | string | Where this session was triggered (e.g., 'chatgpt_search', 'claude_chat') | |
offering_id | string | Brand-specific offering identifier to apply | |
supported_capabilities | si-capabilities | What capabilities the host supports | |
offering_token | string | Token from si_get_offering response for session continuity. | |
sponsored_context_receipt | si-sponsored-context-receipt | Host receipt for sponsored context accepted from a prior si_get_offering response or other pre-session context package. | |
idempotency_key | string | required | Client-generated unique key for this request. |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
si_initiate_session response — 21 fields, 3 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual 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_id | string | required | Unique session identifier for subsequent messages |
response | object | Brand agent's initial response | |
negotiated_capabilities | si-capabilities | Intersection of brand and host capabilities for this session | |
sponsored_context | si-sponsored-context | Declaration for sponsored context carried by the initial brand-agent response. | |
session_status | si-session-status | required | Current session lifecycle state. One of: active, pending_handoff, complete, terminated. |
session_ttl_seconds | integer | Session inactivity timeout in seconds. | |
errors | error[] | Errors during session initiation | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"offering_token": "offering_abc123xyz"
} si_send_message
si_send_message is the AdCP task for exchanging messages in an active SI session.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
idempotency_key | string | required | Client-generated unique key for at-most-once execution. |
session_id | string | required | Active session identifier |
message | string | User's message to the brand agent | |
action_response | object | Response to a previous action_button (e.g., user clicked checkout) | |
sponsored_context_receipt | si-sponsored-context-receipt | Host receipt for sponsored context accepted from a prior SI response in this session. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
si_send_message response — 21 fields, 3 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual 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_id | string | required | Session identifier |
response | object | Brand agent's response | |
mcp_resource_uri | string | MCP resource URI for hosts with MCP Apps support (e.g., ui://si/session-abc123) | |
sponsored_context | si-sponsored-context | Declaration for sponsored context carried by this brand-agent response. | |
session_status | si-session-status | required | Current session status. One of: active, pending_handoff, complete, terminated. |
handoff | object | Handoff request when session_status is pending_handoff | |
errors | error[] | ||
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"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.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
session_id | string | required | Session identifier to terminate |
reason | string | required | Reason for termination One of: handoff_transaction, handoff_complete, user_exit, session_timeout, host_terminated. |
termination_context | object | Context for the termination | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
si_terminate_session response — 20 fields, 3 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual 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_id | string | required | Terminated session identifier |
terminated | boolean | required | Whether session was successfully terminated |
session_status | si-session-status | Resulting session state. One of: active, pending_handoff, complete, terminated. | |
acp_handoff | object | ACP checkout handoff data. | |
follow_up | object | Suggested follow-up actions | |
errors | error[] | ||
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"intent": { /* purchase intent from handoff */ },
"context_for_checkout": { /* ACP context */ }
} The other 9 AdCP areas
- Media Buy — 11 operations
- Creative — 8 operations
- Signals — 2 operations
- Protocol — 3 operations
- Accounts — 5 operations
- Brand Protocol — 6 operations
- Governance — 22 operations
- Trusted Match — 2 operations
- Compliance — 1 operation