Advertisers verify consent cryptographically at the transaction layer. Adworth charges a flat 2% per verified consent transaction. The consumer marketplace where users earn from data is on the Phase 2 roadmap. No minimums. No gatekeeping.
Sends access request with user ID, your advertiser ID, and data scope
Runs the full check pipeline: token exists, active, right advertiser, right scope, not expired — plus Minor Shield and GPC opt-out checks
Cryptographic verification — the token can't be faked, extended, or transferred
Decision recorded in append-only ledger — permanent audit trail
GRANTED with proof, or BLOCKED with reason code
/evaluate endpoint. The response tells you instantly whether you have valid consent.// Before accessing user data, verify consent const response = await fetch('https://adworth-bouncer.adworthllc.workers.dev/evaluate', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_API_KEY' }, body: JSON.stringify({ userId: 'user-abc-123', advertiserId: 'adworth-demo-advertiser', dataScope: 'running-data-shoe-ads' }) }); const decision = await response.json(); if (decision.decision === 'GRANTED') { // ✅ Valid consent — proceed with data access accessUserData(decision.tokenUsed.tokenId); } else { // 🚫 No consent — do NOT access data console.log('Blocked:', decision.blockReason); }
// Real response from the live Privacy Governance Engine — all seven checks pass { "decision": "GRANTED", "evaluationId": "gov_60c7cb33-3875-4e23-b69d-11323097e0bf", "evaluatedAt": "2026-07-06T22:36:55.934Z", "advertiserId": "adworth-demo-advertiser", "userId": "test-user-001", "dataScope": "running-data-shoe-ads", "blockReason": null, "checks": [ { "check": "MINOR_SHIELD", "status": "PASS", "detail": "User test-user-001 is not flagged as a minor. Proceeding to consent evaluation." }, { "check": "GPC_OPT_OUT", "status": "PASS", "detail": "No GPC opt-out signal detected. Proceeding to token evaluation." }, { "check": "TOKEN_EXISTS", "status": "PASS", "detail": "Found 1 token(s) for user test-user-001 with advertiser adworth-demo-advertiser" }, { "check": "SCOPE_MATCH", "status": "PASS", "detail": "1 token(s) match scope \"running-data-shoe-ads\"" }, { "check": "REVOCATION_STATUS", "status": "PASS", "detail": "1 token(s) are not revoked" }, { "check": "EXPIRATION", "status": "PASS", "detail": "1 token(s) are within valid time window" }, { "check": "ADVERTISER_MATCH", "status": "PASS", "detail": "Advertiser \"adworth-demo-advertiser\" matches token grant" } ], "tokenUsed": { "tokenId": "9d57bd5bbe34dbf33bd3265e42a9ade7", "issuedAt": "2026-07-06T22:31:02.000Z", "expiresAt": "2027-02-01T00:00:00.000Z", "scope": "running-data-shoe-ads", "advertiserId": "adworth-demo-advertiser" } }
// Fail-closed: the pipeline stops at the first failing check — do NOT access data { "decision": "BLOCKED", "evaluationId": "gov_d9a47613-e294-4606-be4e-b781d4e80eb2", "evaluatedAt": "2026-07-06T22:17:22.376Z", "advertiserId": "adworth-demo-advertiser", "userId": "test-user-001", "dataScope": "running-data-shoe-ads", "blockReason": "NO_CONSENT_TOKEN", "checks": [ { "check": "MINOR_SHIELD", "status": "PASS", "detail": "User test-user-001 is not flagged as a minor. Proceeding to consent evaluation." }, { "check": "GPC_OPT_OUT", "status": "PASS", "detail": "No GPC opt-out signal detected. Proceeding to token evaluation." }, { "check": "TOKEN_EXISTS", "status": "FAIL", "detail": "No consent tokens found for user test-user-001 with advertiser adworth-demo-advertiser" } ], "tokenUsed": null }
/evaluate call runs these checks in order and fails closed at the first failure. The response’s checks array shows each check that ran with a human-readable detail; blockReason identifies the failing check. Requests missing userId, advertiserId, or dataScope are rejected before the pipeline runs.Runs before everything else. Users flagged as minors are blocked from all advertising data access regardless of token status — and the check fails closed on any storage error. blockReason: MINOR_SHIELD_ACTIVE
Global Privacy Control signals are honored as valid opt-outs under CPRA § 1798.135(d). No consent token can override a GPC signal. blockReason: GPC_OPT_OUT
At least one consent token must exist for this user-advertiser pair. No token means the user never said yes. blockReason: NO_CONSENT_TOKEN
The requested data scope must be covered by a token’s granted scope. A token for one data type doesn’t open the door to another.
Revoked tokens are treated as no consent. Revocation is recorded permanently on the ledger and takes effect at the next evaluation.
Consent expires on the schedule the user chose. Stale consent is treated the same as no consent. blockReason: TOKEN_EXPIRED
The token must have been granted to the requesting advertiser specifically. Consent is non-transferable between advertisers.
GDPR, CCPA, DSA — one integration produces cryptographic consent records you can bring to any audit, in any jurisdiction.
Users who actively consent — rather than dismissing dark-pattern cookie banners — engage more deeply with ads they expected to see. Cryptographic consent filters out hostile audiences.
Every access decision is logged to the Invisibility Ledger. If regulators ask, you have cryptographic proof of compliance.