Verify Anything. Store Nothing.
Age verification, credentials, and content authenticity.
One API. Zero PII liability. Revoke instantly.
<script src="https://js.aho.com/v1/components-web"></script>
<aho-provider publishable-key="aho_pub_xxx" base-url="https://js.aho.com">
<credential-button claims="all">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M15 9H18.75M15 12H18.75M15 15H18.75M4.5 19.5H19.5C20.7426 19.5 21.75 18.4926 21.75 17.25V6.75C21.75 5.50736 20.7426 4.5 19.5 4.5H4.5C3.25736 4.5 2.25 5.50736 2.25 6.75V17.25C2.25 18.4926 3.25736 19.5 4.5 19.5ZM10.5 9.375C10.5 10.4105 9.66053 11.25 8.625 11.25C7.58947 11.25 6.75 10.4105 6.75 9.375C6.75 8.33947 7.58947 7.5 8.625 7.5C9.66053 7.5 10.5 8.33947 10.5 9.375ZM11.7939 15.7114C10.8489 16.2147 9.77021 16.5 8.62484 16.5C7.47948 16.5 6.40074 16.2147 5.45581 15.7114C5.92986 14.4207 7.16983 13.5 8.62484 13.5C10.0799 13.5 11.3198 14.4207 11.7939 15.7114Z" /></svg>
Try It Now
</credential-button>
<credential-display class="hidden block mx-auto mt-6"></credential-display>
</aho-provider>
<script>
document.querySelector('credential-button')
.addEventListener('aho:credential:verified', e => {
const display = document.querySelector('credential-display')
display.classList.remove('hidden')
display.setAttribute('src', e.detail.result.renderUrl)
})
</script>
Verify your identity with Apple or Google Wallet — no signup needed
Requires a mobile driver's license in Apple/Google Wallet
Built on W3C and ISO — the standards behind Apple Wallet and Google Wallet.
User taps wallet → shares claim → you verify. 3 seconds. Zero PII stored.
One API. Three problems solved.
Age Verification
Verify users are 21+ without storing their birthday. Users tap Apple Wallet, share "over 21" — you store nothing.
Works with mDLs in 15 US states.
Learn moreAI Agent Identity
Your agents call external services. Authenticate them, scope their access, revoke bad actors instantly.
MCP-ready. Works with any framework.
How agent credentials workContent Authenticity
Prove your content is real in a world of AI fakes. Sign at creation, verify anywhere.
EU AI Act deadline: Aug 2026.
How content signing worksThe old way vs. the new way
The Old Way
The New Way
User uploads ID photo
User shares one claim
You store DOB, address
You store nothing
Data breach = lawsuit
No PII = no breach risk
$3-15 per verification
Fraction of the cost
Vendor lock-in
Open standards (W3C)
Can't revoke after issued
Revoke instantly, anywhere
How it works
Request
Your app requests age proof
User
User taps Apple Wallet, shares "21+"
Verify
Aho verifies cryptographically. You store nothing.
# Verify a user's age
client = AhoSdk.verifier(api_key: ENV["AHO_API_KEY"])
# Create a verification request for age check
request = client.requests.create(
body: {
name: "Age Check",
purpose: "Verify customer is over 21"
}
)
# Check if the user verified successfully
response = client.responses.get(
request_uuid: "req_abc123",
uuid: "resp_xyz789"
)
gem install aho-sdk · pip install aho-sdk · npm install @aho-sdk/core
Using the JS embed? It handles redirects automatically.
Need to issue credentials too? We do that. See credentials docs →
Revoke instantly, everywhere
When things go wrong, kill access in one API call.
# Employee terminated. Revoke immediately.
client = AhoSdk.issuer(api_key: ENV["AHO_API_KEY"])
client.credentials.revoke(
uuid: "cred_abc123",
body: {
reason: "employee_terminated"
}
)
Standards, not lock-in
We read the specs. You call one API.
Your credentials work everywhere. No vendor lock-in.
See all supported standardsVerify your first user in minutes.
Start building with verifiable credentials today.
No credit card required.
We use cookies to enhance your experience. By continuing to visit this site you agree to our use of cookies. Learn more.
Cookie Preferences
Essential
Required for core functionality. These cannot be disabled.
Functional
Enhance your experience but are not strictly necessary.
Analytics
Help us understand how you use our service.