AdCP 3.1.13 · Negotiation layer
AdCP Signals
AdCP Signals is a schema group of the Ad Context Protocol holding 2 of the 64 operations in release 3.1.13, covering audience and contextual signal discovery and activation.
get_signals discovers audience and contextual signals. activate_signal pushes an audience segment to a DSP or a sales agent. activate_signal declares x-mutates-state and get_signals does not.
get_signals is one of seven operations in release 3.1.13 that publish a dedicated async response arm, so a discovery call can return submitted or working and be completed later against task_id.
What the 2 signals operations do
| Operation | Request fields | Response fields | What it does |
|---|---|---|---|
activate_signal | 11 | 13 | activate_signal is the AdCP task for pushing audience segments to DSPs and sales agents. |
get_signals | 18 | 23 | get_signals is the AdCP task for discovering audience and contextual signals. |
activate_signal
activate_signal is the AdCP task for pushing audience segments to DSPs and sales agents.
Every field and edge case for activate_signal
| 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). | |
action | string | Whether to activate or deactivate the signal. One of: activate, deactivate. | |
signal_agent_segment_id | string | required | Opaque activation handle returned in the signal_agent_segment_id field of each get_signals response entry. |
destinations | destination[] | required | Target destination(s) for activation. |
pricing_option_id | string | The pricing option selected from the signal's pricing_options in the get_signals response. | |
governance_context | string | Opaque governance context returned by check_governance for this signal activation. | |
account | account-ref | Account for this activation. | |
idempotency_key | string | required | Client-generated unique key for this request. |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
| 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 | Per-request opaque caller-supplied correlation object echoed unchanged in the response. | |
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). |
{
"deployments": [
{
"type": "platform",
"platform": "string",
"account": "string",
"activation_key": {
"type": "segment_id",
"segment_id": "string"
},
"estimated_activation_duration_minutes": "number",
"deployed_at": "string"
}
],
"errors": [
{
"code": "string",
"message": "string",
"field": "string",
"suggestion": "string",
"details": {}
}
]
} get_signals
get_signals is the AdCP task for discovering audience and contextual signals.
Every field and edge case for get_signals
| 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). | |
discovery_mode | string | Declares caller intent for this request. One of: brief, wholesale. | |
account | account-ref | Account for this request. | |
signal_spec | string | Natural language description of the desired signals. | |
signal_refs | signal-ref[] | Specific signals to look up by reference. | |
signal_ids | signal-id[] | DEPRECATED. | |
destinations | destination[] | Filter signals to those activatable on specific agents/platforms. | |
countries | string[] | Countries where signals will be used (ISO 3166-1 alpha-2 codes). | |
filters | signal-filters | Filters to refine signal discovery results | |
fields | string[] | Specific signal fields to include in the response, aligned with get_products.fields. One of: signal_ref, signal_id, signal_agent_segment_id, name, description, value_type, categories, range, signal_type, data_provider, coverage_percentage, deployments, pricing_options, taxonomy, data_sources, methodology, segmentation_criteria, criteria_url, refresh_cadence, lookback_window, onboarder, modeling, audience_expansion, device_expansion. | |
max_results | integer | DEPRECATED: Use pagination.max_results instead. | |
pagination | pagination-request | Pagination parameters. | |
push_notification_config | push-notification-config | Optional webhook configuration for async terminal completion/failure notifications on semantic signal discovery. | |
if_wholesale_feed_version | string | Opaque wholesale_feed_version token returned by a prior wholesale-mode get_signals response from this agent. | |
if_pricing_version | string | Opaque pricing_version token from a prior get_signals response. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
get_signals response — 23 fields, 1 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). | |
signals | object[] | Array of matching signals | |
errors | error[] | Task-specific errors and warnings (e.g., signal discovery or pricing issues) | |
incomplete | object[] | Declares what the agent could not finish within the caller's time_budget or due to internal limits. | |
wholesale_feed_version | string | Opaque token representing the version of the wholesale signals feed state used to compose this response. | |
pricing_version | string | Opaque token representing the version of the pricing layer. | |
cache_scope | string | Declares whether the wholesale_feed_version and pricing_version on this response describe a universal layer or an account-specific overlay. One of: public, account. | |
unchanged | boolean | Present and `true` ONLY on wholesale-mode responses when the request carried if_wholesale_feed_version (and/or if_pricing_version) matching the agent's current version for the caller's cache_scope, in which case signals… | |
pagination | pagination-response | Standard cursor-based pagination metadata for list responses | |
sandbox | boolean | When true, this response contains simulated data from sandbox mode. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"signals": [
{
"signal_ref": {
"scope": "data_provider",
"data_provider_domain": "string",
"signal_id": "string"
},
"signal_agent_segment_id": "string",
"name": "string",
"description": "string",
"signal_type": "string",
"data_provider": "string",
"coverage_percentage": "number (optional, deprecated)",
"coverage_forecast": {
"method": "estimate",
"forecast_range_unit": "availability",
"scope": {
"kind": "inventory",
"label": "network price-priority inventory"
},
"bucket_semantics": "exclusive",
"bucket_completeness": "partial",
"points": [
{
"label": "not present",
"dimensions": [
{
"kind": "signal",
"signal_ref": {
"scope": "data_provider",
"data_provider_domain": "weather-data.example",
"signal_id": "weather"
},
"signal_value": null,
"presence": "absent"
}
],
"metrics": {
"impressions": { "mid": 280000 },
"coverage_rate": { "mid": 0.28 }
}
},
{
"label": "hot",
"dimensions": [
{
"kind": "signal",
"signal_ref": {
"scope": "data_provider",
"data_provider_domain": "weather-data.example",
"signal_id": "weather"
},
"signal_value": "hot",
"presence": "present"
}
],
"metrics": {
"impressions": { "mid": 180000 },
"coverage_rate": { "mid": 0.18 }
}
}
]
},
"deployments": [
{
"type": "agent",
"agent_url": "string",
"account": "string",
"is_live": "boolean",
"activation_key": {
"type": "segment_id",
"segment_id": "string"
},
"estimated_activation_duration_minutes": "number"
}
],
"pricing_options": [
{
"pricing_option_id": "string",
"model": "cpm | percent_of_media | flat_fee | per_unit | custom",
"...": "..."
}
]
}
]
} The other 9 AdCP areas
- Media Buy — 11 operations
- Creative — 8 operations
- Protocol — 3 operations
- Accounts — 5 operations
- Brand Protocol — 6 operations
- Governance — 22 operations
- Sponsored Intelligence — 4 operations
- Trusted Match — 2 operations
- Compliance — 1 operation