Overview
Measurement consumers use these APIs to:- Define measurement specifications (reach, frequency, impressions)
- Create measurements across multiple data providers
- Retrieve encrypted measurement results
- Manage event groups and reporting sets
While the system provides a Reporting API (v2alpha) for high-level report generation, the underlying measurement primitives are managed through the CMMS (Cross-Media Measurement System) public API.
Key Concepts
Measurements
A Measurement represents a privacy-preserving computation across one or more data providers to calculate aggregate metrics. Measurement Types:- REACH - Count of unique users reached
- REACH_AND_FREQUENCY - Reach with frequency distribution histogram
- IMPRESSION_COUNT - Total impression count with differential privacy
- WATCH_DURATION - Total watch duration for video content
- POPULATION_COUNT - Count of unique members in a population
Event Groups
An EventGroup is a collection of user events defined by a data provider:- Campaign impression events
- Video viewing events
- App interaction events
- Custom event types via protocol buffers
Measurement Specifications
A MeasurementSpec defines:- Metric type (reach, frequency, etc.)
- Event filters and groupings
- Privacy parameters (epsilon, delta)
- VID sampling intervals
- Differential privacy noise configuration
Creating Measurements
Measurement Request Flow
Example: Create Reach Measurement
Measurement Lifecycle
States
Current state of the measurementValues:
PENDING_REQUISITION_PARAMS- Waiting for duchy parametersPENDING_REQUISITION_FULFILLMENT- Waiting for data providers to fulfill requisitionsPENDING_PARTICIPANT_CONFIRMATION- Waiting for duchy confirmationPENDING_COMPUTATION- Computation in progressSUCCEEDED- Completed successfully (terminal)FAILED- Computation failed (terminal)CANCELLED- Cancelled by consumer (terminal)
Polling for Results
Event Group APIs
Listing Event Groups
Query available event groups from data providers:Event Group Filters
Filter to specific data provider resource names
Event groups must include at least one of these media typesValues:
VIDEO, BANNER_AD, NATIVE_AD, AUDIOFilter by data availability window start time
Text search on event group metadata fields (campaign name, brand name, etc.)
Privacy Parameters
Differential Privacy
All measurements use differential privacy to protect individual user privacy:Privacy budget parameter (lower = more privacy, higher = more accuracy)Typical range: 0.001 to 1.0
Failure probability parameterTypical range: 1e-15 to 1e-9
VID Sampling
Control which virtual IDs (VIDs) are included in measurements:Start of sampling interval in [0, 1)Example: 0.0 starts from beginning
Width of sampling interval (must be ≤ 1.0)Example: 0.1 samples 10% of VID space
When
--allow-sampling-interval-wrapping is enabled, sampling intervals can wrap around. For example, start=0.8 and width=0.5 represents intervals [0.0, 0.3] and [0.8, 1.0].Metric-Specific Parameters
Reach and Frequency
Maximum frequency value in histogram (default varies by protocol)Frequencies above this value are aggregated into a single bin.
Impression Count
Maximum impressions per user (default: 60 for audiences > 1M)Higher values increase noise variance but reduce truncation bias.
Watch Duration
Maximum watch duration per user (default: 4000 seconds for audiences > 1M)Caps contribution of individual users to protect privacy.
Result Decryption
Measurement results are encrypted with the measurement consumer’s public key:- Retrieve encrypted result -
Measurement.encrypted_resultfield - Verify signature - Using duchy’s certificate
- Decrypt result - Using measurement consumer’s private key
- Parse Result message - Protocol buffer deserialization
Best Practices
Use idempotency tokens
Use idempotency tokens
Always provide a
request_id (UUID) when creating measurements to prevent duplicate submissions if requests are retried.Monitor measurement state
Monitor measurement state
Implement exponential backoff when polling for measurement completion. Most measurements complete within minutes but can take longer during high load.
Choose appropriate privacy parameters
Choose appropriate privacy parameters
Consult with privacy experts to select epsilon and delta values that balance privacy protection with measurement accuracy for your use case.
Filter event groups efficiently
Filter event groups efficiently
Use structured filters to query only relevant event groups before creating measurements, reducing unnecessary requisitions.
Reuse measurements when possible
Reuse measurements when possible
If measuring the same event groups with the same parameters, consider caching results rather than creating duplicate measurements.
Related APIs
Reporting API
High-level reporting with automated metric calculations
Data Provider API
How data providers fulfill measurement requisitions