API · /pwned-api

Password Breach Check API

healthy 4,273 Subscribers

Check whether a password has appeared in known data breaches — as an API over Have I Been Pwned's Pwned Passwords corpus (800+ million unique compromised passwords). It uses k-anonymity: only the first 5 characters of a password's SHA-1 hash are ever sent upstream, so the password itself never leaves in full. Pass a password (hashed in memory, never stored or logged — send it via POST so it never appears in a URL/log) or a SHA-1 hash to learn whether it has been breached and how many times; or fetch a raw k-anonymity range for a 5-character hash prefix and do the matching entirely on your own side for zero password exposure. Screening sign-ups and password resets against breached-password lists is recommended by NIST 800-63b, and this makes it a one-call check. A breach / credential-security resource — distinct from password generators, cryptographic hashing and bcrypt. Open data from Have I Been Pwned (Troy Hunt), CC BY 4.0.

api.oanor.com/pwned-api
Get an API key Try in playground → Contact provider

Machine-readable spec so AI agents can integrate this API.

/api/pwned-api/openapi.json
/api/pwned-api/llms.txt

Discovery: GET /api/index.json lists every API.

Password Breach Check API — live data on the oanor API marketplace

API health

healthy
Uptime
100.00%
Server probes · 24h
Avg latency
137 ms
Server probes · 24h
Subscribers
4,273
active
Total calls
60
last 7 days
status Full status page → · 12 probes/24h

Pricing

Pick a tier — billed monthly, cancel anytime.

Free

Free

  • 2,550 calls / month
  • 2 requests / second
  • Hard cap (429 above quota, no overage)
  • 2,550 calls/month
  • 2 req/sec
  • Check + raw range
  • No credit card
Sign in to subscribe

Starter

€7.15 /month

  • 51,000 calls / month
  • 8 requests / second
  • Hard cap (429 above quota, no overage)
  • 51k calls/month
  • 8 req/sec
  • k-anonymity, never stored
  • Email support
Sign in to subscribe

Pro

€22.70 /month

  • 248,000 calls / month
  • 20 requests / second
  • Hard cap (429 above quota, no overage)
  • 248k calls/month
  • 20 req/sec
  • Sign-up & reset flows
  • Priority support
Sign in to subscribe

Mega

€59.20 /month

  • 880,000 calls / month
  • 50 requests / second
  • Hard cap (429 above quota, no overage)
  • 880k calls/month
  • 50 req/sec
  • Account-security platform
  • Dedicated SLA
Sign in to subscribe

Built by

Related APIs

Other APIs with overlapping tags.

Shentu API — oanor API marketplace

Shentu API

Live on-chain data for Shentu (chain id shentu-2.2) — the security-focused Cosmos-SDK Layer-1 of the CertiK ecosystem, whose native token is CTK — served directly from public LCD/REST nodes with multi-node failover. The status endpoint returns the latest block height and time, chain id, the staking bond denom and the current minting inflation rate. The validators endpoint lists the active bonded validator set ranked by stake, each with its moniker, operator address, self-plus-delegated CTK, commission rate and jailed flag. The supply endpoint returns the total CTK supply, the amount bonded in staking and the resulting bonded ratio. The governance endpoint returns the most recent on-chain proposals with their id, title, status and voting window. Token amounts are converted from base micro-CTK (6 decimals) into whole CTK, and every figure is read live from the chain — nothing bundled or modelled — behind a short server-side cache with keep-warm so the feed stays fast and fresh. Ideal for staking dashboards, validator and delegator tooling, explorers, governance trackers and portfolio or analytics apps across the Cosmos and security-infrastructure ecosystem. Live keyless upstream. 5 endpoints.

api.oanor.com/shentu-api

Solana Program API — oanor API marketplace

Solana Program API

Inspect deployed Solana programs live from public Solana RPC — no key — and answer the question that matters most for safety: can this program still be changed, and by whom? For any program address it resolves the loader it runs under, whether it is executable, its on-chain ProgramData account, the upgrade authority (or that it has been made immutable / frozen), and the slot it was last deployed at. A batch endpoint audits up to twelve programs at once — perfect for checking the upgrade authority of every program a protocol depends on before you trust it — and a loaders endpoint documents Solana's program loaders. Distinct from balance, token and transaction APIs: this is the program and upgrade-authority layer that auditors, wallets and security tooling rely on to judge whether a Solana program is safe. Live from the chain; short cache only.

api.oanor.com/solanaprogram-api

Crypto Phishing Check API — oanor API marketplace

Crypto Phishing Check API

Tell whether a domain is a known crypto phishing or scam site before a wallet or user connects to it — using MetaMask's canonical eth-phishing-detect blocklist, the same list that protects millions of MetaMask users, read keyless and live. It runs the real detection logic: an exact and subdomain match against the blocklist and allowlist, plus a Levenshtein fuzzy match against high-value lookalike targets to catch typosquats like "myetherwaliet.com" or "app-wallet-uniswap.org". Check a domain or URL for a verdict (blocked, allowed, fuzzy or unknown) with the reason, search the 190,000-entry blocklist, or read its stats. The dApp-connection safety layer every wallet, browser extension, Telegram bot and security tool needs to warn users before they sign. Live, lightly cached.

api.oanor.com/phishingcheck-api

Storage Slot API — oanor API marketplace

Storage Slot API

Read any smart contract's raw EVM storage live via the chain's public JSON-RPC, decode each 32-byte word as an address, uint or bool, and resolve proxy implementation pointers across every common proxy standard — EIP-1967, EIP-1822/UUPS and the legacy OpenZeppelin/zeppelinos slot, plus beacon proxies. This is how you find out what a proxy actually points to, who its admin is, or what a contract is storing — even for unverified contracts where source and ABI are unavailable. Give it a chain and an address: read one slot, scan the first N slots to peek at the state layout, or auto-resolve the proxy implementation. The on-chain state-inspection layer for auditors, upgrade monitors and security tooling, across Ethereum, Base, Arbitrum, Optimism, BNB, Polygon and more. Live, short cache only.

api.oanor.com/storageslot-api

Frequently asked questions

Quick answers about pricing, quotas, and integration.

How do I get an API key for Password Breach Check API?
Sign up for free at oanor.com, generate an API key from the developer dashboard, and call Password Breach Check API with the x-oanor-key header. No credit card needed for the free tier.
What's the rate limit for Password Breach Check API?
Free tier allows 1 request per second. Paid plans scale up to 50 requests per second on the Mega tier. Hard limits return HTTP 429 above the quota — no surprise overage charges.
How much does Password Breach Check API cost?
Password Breach Check API has a free tier with 100 calls / month. Paid plans start at €7.15 / month with higher quotas and faster rate limits.
Can I cancel my subscription anytime?
Yes. Plans are billed monthly and you can cancel anytime from your billing dashboard. No long-term contracts and no cancellation fee.
Is Password Breach Check API GDPR-compliant?
All requests to Password Breach Check API go through our EU-based gateway. Your upstream API key never leaves our server and no personal data is shared with the upstream provider beyond the request you send.

Pick an endpoint from the list on the left to see its details and try it.

Code snippets

Sign up to get an API key, then call any path under your slug.

curl https://api.oanor.com/pwned-api/SOME_PATH \
  -H "x-oanor-key: oanor_test_..."
const res = await fetch("https://api.oanor.com/pwned-api/SOME_PATH", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
const data = await res.json();
$ch = curl_init("https://api.oanor.com/pwned-api/SOME_PATH");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
$response = curl_exec($ch);
import requests
r = requests.get(
    "https://api.oanor.com/pwned-api/SOME_PATH",
    headers={"x-oanor-key": "oanor_test_..."},
)
print(r.json())

Ratings

Sign in to rate.

No reviews yet.

Discussion

Ask questions, share usage tips, get answers from the provider and other developers. Public — anyone can read.

Sign in to start a thread or reply.

Sign in

New thread

/ 4000

📌 Pinned 🔒 Locked

·

· ·

/ 4000

🔒 This thread is locked — no new replies.

  • No threads yet — start the discussion.

Support

Private 1:1 support with the provider — billing questions, integration issues, account problems. Only you and the provider team can see these threads.

Sign in to open a support ticket.

Sign in

Open new ticket

Describe what you need help with. The provider team gets an email and replies on the ticket page.

  • No tickets yet for this API.

Subscription active — calls can start immediately.

Send your first request —

Subscription active — copy a snippet and fire off your first call.