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
extobject - 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:
- Product Search Extension Details - Complete extension documentation
- AI Search + LLM Weaving Use Case - Usage in AI search
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 pricemax_price(float, optional): Maximum product priceprice_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:
- Price Range Filter: Set both
min_priceandmax_price(e.g., "between 900") - Minimum Price Only: Set only
min_price(e.g., "$50 and above") - Maximum Price Only: Set only
max_price(e.g., "under $100") - 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
extobjects (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
- Product Search Extension - Price range filtering for product ads
Context Enhancement
AdCP (Ad Context Protocol)
Integration Resources
Getting Started
Use Cases
Reference
Support & Feedback
Questions?
- Check Use Cases
- Contact support
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:
- Use Cases Overview 3. Explore Extensions:
- Context Enhancement
- AdCP Protocol 4. Review Use Cases: Use Cases Overview