Build verified, consent-based audience segments without third-party cookies. Let advertisers buy access to cryptographically proven user attributes — no raw data leaves user accounts.
Use this file to discover all available pages before exploring further.
Post-cookie advertising is broken in one specific way: every replacement (contextual, cohort, data clean rooms) still requires someone to hold raw user data and vouch for it. AIR Kit takes a different approach — users hold their own verified attribute credentials, and publishers verify them at ad-serve time via ZK proof. The advertiser gets a signal they can trust. No data broker in the middle. No raw data leaves the user’s account.
Verified audience segments — Issue demographic and interest credentials on profile completion or KYC; advertisers target against cryptographic proof, not self-reported fields
Consent-portable targeting — User consents once; that consent credential is verifiable by any publisher in the ecosystem without a consent management platform re-prompt
Age-verified ad targeting — Gate alcohol, gambling, and adult ad categories behind a ZK age proof — no DOB ever transmitted to the ad server
Cross-publisher identity — A user’s verified attributes follow them across publisher sites without third-party cookies or device fingerprinting
Bot and fraud resistance — Issue a “verified human” credential after KYC or passkey authentication; DSPs and SSPs can filter on-credential instead of on-signal
Brand safety compliance — Verify user age and location at serve time without storing the data, satisfying COPPA, GDPR Article 8, and regional ad regulations
{ "title": "Ad Consent", "description": "Verifiable record of user consent for personalised advertising", "properties": { "publisherId": { "type": "string" }, "consentedTo": { "type": "array", "items": { "type": "string", "enum": ["personalised_ads", "cross_site_tracking", "interest_inference"] } }, "consentVersion": { "type": "string", "description": "CMP policy version the user consented to" }, "consentedAt": { "type": "string", "format": "date-time" }, "expiresAt": { "type": "string", "format": "date-time", "description": "Consent expiry — re-issue when user re-confirms" } }, "required": ["publisherId", "consentedTo", "consentVersion", "consentedAt"]}
Never include name, email address, IP address, device ID, or precise location in credentialSubject. Use only derived, aggregated attributes — ageRange, countryCode, interestSegments. The ZK proof lets the ad server confirm isOver18 === true without ever receiving the subscriber’s date of birth.
Partner publishers integrate AIR Kit as a verifier. One SDK call replaces the cookie sync / data clean room round-trip.
// partner-publisher.jsimport { AirService } from '@mocanetwork/airkit';// The PARTNER publisher uses their own Partner IDconst airService = new AirService({ partnerId: 'PARTNER_PUBLISHER_PARTNER_ID' });await airService.init({ buildEnv: BUILD_ENV.PRODUCTION });async function verifyAudienceForPartner() { const result = await airService.verifyCredential({ programId: process.env.CROSS_PUB_AUDIENCE_VERIFY_PROGRAM_ID, // Program checks: isOver18 === true AND countryCode in allowed list // The partner publisher never receives the user's raw profile data // They get: COMPLIANT / NON_COMPLIANT — that's it }); return result.status === 'COMPLIANT';}
No raw user data — no DOB, no email, no IP, no browsing history — is transmitted during ad verification. The ZK proof flow means the verifier (DSP, SSP, partner publisher) receives only boolean results.
The repo uses a venue check-in and merch store; the same event-triggered pattern applies to ad engagement (publisher issues, ad server verifies). Adapt via schema and branding — see the README’s “Adapting to Your Vertical” section.
Fan Attendance — Issuer
Venue check-in app: issues attendance credential when the fan scans in at the event.
Fan Attendance — Verifier
Merch store app: verifies attendance and unlocks rewards (e.g. discount, exclusive offer).