Skip to main content

Affinity AI Extensions to OpenRTB 2.6

Introduction

Affinity AI extends the standard OpenRTB 2.6 protocol with powerful capabilities designed for modern advertising contexts, particularly AI-powered platforms and conversational interfaces. These extensions are optional and backward-compatible, allowing publishers to adopt them progressively.

Extension Philosophy

Standards-Based Foundation

Affinity AI extensions follow OpenRTB best practices:

  • All extensions use the standard ext object
  • No modifications to core OpenRTB fields
  • Full backward compatibility with standard OpenRTB clients
  • Graceful degradation when extensions aren't supported

Progressive Enhancement

Publishers can adopt extensions incrementally:

Level 1: Basic OpenRTB 2.6

Level 2: + AdCP (Creative Assembly)

Level 3: + Context Enhancement

Level 4: AI-Native (Full Extensions)

Each level adds value without breaking previous functionality.

Core Extension Categories

1. Product Search Extension

Purpose: Enable product search filtering for better ad relevance

Key Features:

  • Price Range Filtering: Filter products by minimum and maximum price
  • Currency Support: ISO 4217 currency codes for validation
  • Flexible Filtering: Both min and max price are optional
  • Graceful Handling: Invalid values are ignored, not rejected

Use Cases:

  • Filter products by price range for user queries
  • Improve product ad relevance based on budget
  • Support price-based search refinement
  • Better match user intent with product offerings

Applies To: Affillizz Search Product Ad adapter

Learn More:

2. Context Enhancement

Purpose: Provide rich contextual signals for better targeting

Key Features:

  • Intent Analysis: Understand what users are trying to accomplish
  • Sentiment Detection: Gauge emotional tone of conversations
  • Conversation Metadata: Track conversation flow and context
  • Topic Extraction: Identify relevant themes and subjects

Use Cases:

  • Contextual targeting without PII
  • Improved ad relevance
  • Better user experience
  • Higher engagement rates

Learn More: Context Enhancement Overview

3. AdCP (Ad Context Protocol)

Purpose: Enable dynamic creative assembly and advanced ad formats

Key Features:

  • Format Specifications: Define how ads should be assembled
  • Creative Manifests: Structured asset delivery
  • Brand Manifests: Maintain brand consistency
  • Format Support: Display, native, contextual weaving

Use Cases:

  • Dynamic creative optimization
  • AI-native ad formats
  • Contextual weaving in LLM responses
  • Multi-format campaigns

Learn More: AdCP Overview

Extension Structure

Affinity AI Extensions

Most Affinity AI extensions are placed in the ext.aura object:

{
"id": "request-123",
"imp": [{
"id": "imp-1",
"ext": {
"aura": {
"adcpFormats": [...] // AdCP extension
}
}
}],
"ext": {
"aura": {
"intent": {...}, // Context Enhancement
"sentiment": {...}, // Context Enhancement
"conversation": {...} // Context Enhancement
}
}
}

Product Search Extension

The product search extension is placed directly in imp[].ext for adapter-specific filtering:

{
"id": "request-123",
"imp": [{
"id": "imp-1",
"native": { "request": "{\"native\":{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":80}}]}}" },
"ext": {
"affinity_ai_product_search": {
"min_price": 800.0,
"max_price": 900.0,
"price_currency": "EUR"
},
"aura": {
"adcpFormats": [...]
}
}
}],
"site": {
"id": "ai-search-sem-text",
"keywords": "iphone 13"
}
}

Extension Details:

  • Location: imp[].ext.affinity_ai_product_search
  • Purpose: Filter products by price range for better relevance
  • Fields:
    • min_price (float, optional): Minimum product price
    • max_price (float, optional): Maximum product price
    • price_currency (string, optional): ISO 4217 currency code (validation only)
  • Applies To: Affillizz Search Product Ad adapter
  • Backward Compatible: Completely optional, existing requests work unchanged

Usage Scenarios:

  1. Price Range Filter: Set both min_price and max_price (e.g., "between 800and800 and 900")
  2. Minimum Price Only: Set only min_price (e.g., "$50 and above")
  3. Maximum Price Only: Set only max_price (e.g., "under $100")
  4. No Filter: Omit extension for default behavior (all prices)

Best Practices:

  • Extension is optional and backward compatible
  • Invalid values are ignored gracefully (not rejected)
  • Currency is for validation only (not sent to API)
  • Both min and max are optional
  • Works with existing Affinity AI extensions (AdCP, context enhancement)
  • Can be combined with other impression-level extensions
  • Applies per-impression (different filters per ad slot)

Benefits by Stakeholder

For Publishers

Revenue:

  • Higher CPMs through better targeting
  • Premium inventory for AI contexts
  • Increased fill rates

User Experience:

  • More relevant ads
  • Non-disruptive formats
  • Better engagement

Technical:

  • Standard protocol integration
  • Flexible adoption path
  • Easy maintenance

For Advertisers

Performance:

  • Better targeting accuracy
  • Higher conversion rates
  • Improved ROI

Creative:

  • Dynamic assembly
  • Format flexibility
  • Brand consistency

Insights:

  • Rich context signals
  • Better attribution
  • Performance optimization

For Users

Relevance:

  • Ads match their intent
  • Contextually appropriate
  • Timely and useful

Experience:

  • Non-intrusive formats
  • Natural integration
  • Privacy-respecting

Extension Compatibility

Backward Compatibility

Standard OpenRTB clients work without modifications:

  • Extensions are in ext objects (ignored by standard clients)
  • Core OpenRTB fields remain unchanged
  • No breaking changes to protocol

Forward Compatibility

New extensions can be added without breaking existing integrations:

  • Versioned format identifiers
  • Optional field support
  • Graceful degradation

Implementation Approach

Phase 1: Basic OpenRTB

{
"id": "request-123",
"imp": [
{
"id": "imp-1",
"native": {
"request": "{\"native\":{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":80}}]}}"
}
}
]
}

Phase 2: Add AdCP

{
"id": "request-123",
"imp": [
{
"id": "imp-1",
"ext": {
"aura": {
"adcpFormats": [
{
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_v1"
}
]
}
}
}
]
}

Phase 3: Add Context Enhancement

{
"id": "request-123",
"imp": [{
"id": "imp-1",
"ext": {
"aura": {
"adcpFormats": [...]
}
}
}],
"ext": {
"aura": {
"intent": {
"value": "purchase",
"confidence": 0.85
},
"sentiment": {
"value": "positive",
"score": 0.72
}
}
}
}

Extension Versioning

Each extension component is versioned independently:

  • Format IDs: Include version (e.g., display_v1, contextual_weaving_v2)
  • Schema Versions: Documented in each extension
  • Deprecation Policy: 6-month notice for breaking changes

Privacy & Compliance

All Affinity AI extensions are designed with privacy in mind:

No PII Required

  • Contextual signals only
  • No user identification
  • Anonymous targeting

Compliance

  • GDPR compliant
  • CCPA compliant
  • TCF 2.0 support
  • Privacy string handling

Transparency

  • Clear extension documentation
  • Opt-out mechanisms
  • User consent management

Performance Considerations

Latency

  • Extensions add minimal overhead (less than 10ms)
  • Async processing where possible
  • Efficient serialization

Bandwidth

  • Compact JSON structure
  • Optional fields reduce payload
  • Compression support

Scalability

  • Designed for high-volume traffic
  • Stateless processing
  • Horizontal scaling

Extension Documentation

Product Search Extension

Context Enhancement

AdCP (Ad Context Protocol)

Integration Resources

Getting Started

Use Cases

Reference

Support & Feedback

Questions?

Feature Requests

  • Submit via GitHub issues
  • Join community discussions
  • Participate in working groups

Next Steps

1. Understand the Foundation: Review OpenRTB 2.6 Overview 2. Choose Your Path: