Overview
SafeSend's API lets you integrate wallet risk scoring into any product. Submit a wallet address, receive a structured risk assessment — including on-chain balance, transaction history, scam database matches, and a 1–10 risk score.
Supported networks: ETH, BTC, SOL, POLYGON, BASE, ARBITRUM, OPTIMISM.
Base URL
https://safesend-2e7y.polsia.app
Quick example
curl -X POST https://safesend-2e7y.polsia.app/api/check \ -H "Content-Type: application/json" \ -H "X-API-Key: sk_your_api_key" \ -d '{"address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf1"}'
API Keys
All API requests require a key passed in the X-API-Key header. Keys are issued per plan tier and scoped to your account.
🔑 Get your key: Subscribe to a Pro or Business plan below. Your API key is emailed instantly after checkout. Free tier keys are available by signing up — no credit card required.
Sending your key
X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Key format
| Prefix | Environment | Usage |
|---|---|---|
| sk_live_ | Production | Real checks, counted against your quota |
| sk_test_ | Sandbox | Returns mock scores — does not count against quota |
Plans
Checks are counted per calendar day (UTC). Exceeding your daily limit returns 429 Too Many Requests.
- All 7 chains
- Risk score + factors
- Scam database lookup
- Community support
- All 7 chains
- Risk score + factors
- Scam database lookup
- Priority email support
- SLA: 99.9% uptime
- All 7 chains
- Risk score + factors
- Scam database lookup
- Webhook notifications
- Dedicated support
- Custom SLA
POST /api/check
Submit a wallet address for risk assessment. Returns a 1–10 risk score, risk level, on-chain data, and a breakdown of contributing risk factors.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| address | string | required | The wallet address to analyze. Auto-detected for ETH/BTC/SOL formats. |
| network | string | optional | Override network for EVM addresses. One of: POLYGON, BASE, ARBITRUM, OPTIMISM. Omit for ETH, BTC, SOL — auto-detected. |
Response fields
Example response
{
"address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf1",
"network": "Bitcoin",
"networkCode": "BTC",
"isValid": true,
"isScam": false,
"riskScore": 2,
"riskLevel": "low",
"factors": {
"validAddress": true,
"hasTransactionHistory": true,
"inScamDatabase": false,
"isNewWallet": false
},
"balance": "72.62 BTC",
"transactionCount": 3402,
"isContract": false,
"checkedAt": "2026-05-07T12:30:00.000Z"
}
GET /api/recent-checks
Returns the 20 most recent anonymized wallet checks. Useful for building community-activity feeds or trust indicators in your UI.
No parameters. Returns an array of recent check summaries (addresses are partially masked for privacy).
Integration examples
Copy-paste ready examples for the most common environments.
cURL
# Check an Ethereum address curl -X POST https://safesend-2e7y.polsia.app/api/check \ -H "Content-Type: application/json" \ -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxx" \ -d '{"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}' # Check a Polygon address (same 0x format, specify network override) curl -X POST https://safesend-2e7y.polsia.app/api/check \ -H "Content-Type: application/json" \ -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxx" \ -d '{"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "network": "POLYGON"}'
Node.js / JavaScript
// Using native fetch (Node 18+ or browser) async function checkWallet(address, network) { const res = await fetch('https://safesend-2e7y.polsia.app/api/check', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.SAFESEND_API_KEY }, body: JSON.stringify({ address, network }) }); if (!res.ok) { throw new Error(`SafeSend API error: ${res.status}`); } return res.json(); } // Example: block high-risk withdrawals in an exchange async function validateWithdrawal(toAddress) { const risk = await checkWallet(toAddress); if (risk.riskScore >= 7 || risk.isScam) { throw new Error('Withdrawal blocked: high-risk destination address'); } return { approved: true, riskScore: risk.riskScore }; }
Python
import requests import os SAFESEND_API_KEY = os.environ["SAFESEND_API_KEY"] BASE_URL = "https://safesend-2e7y.polsia.app" def check_wallet(address: str, network: str = None) -> dict: payload = {"address": address} if network: payload["network"] = network response = requests.post( f"{BASE_URL}/api/check", json=payload, headers={ "X-API-Key": SAFESEND_API_KEY, "Content-Type": "application/json" }, timeout=10 ) response.raise_for_status() return response.json() # DeFi protocol: flag high-risk senders before they interact with your contract def is_safe_sender(wallet_address: str) -> bool: result = check_wallet(wallet_address) return result["riskScore"] <= 6 and not result["isScam"]
Use cases
How teams embed SafeSend into their products.
Embed in your wallet app
Show a risk indicator before users confirm any send. Block or warn when the destination scores above your threshold. Works on ETH, Polygon, Base, Arbitrum, Optimism, SOL, BTC.
Exchange withdrawal flow
Check every withdrawal destination before funds leave. Auto-reject confirmed scam addresses. Surface risk details for manual review on borderline scores.
DeFi protocol guard
Pre-screen wallets interacting with your contracts. Flag high-risk senders before they participate in governance, yield vaults, or liquidity pools.
Compliance & due diligence
Add wallet screening to your KYC/AML pipeline. Score wallet addresses from new user signups. Integrate with your existing risk scoring infrastructure.
Risk score thresholds — recommended defaults
| Score | Level | Recommended action |
|---|---|---|
| 1–3 | Low | Allow — established wallet with normal activity |
| 4–6 | Medium | Warn user — new wallet or limited history |
| 7–9 | High | Require confirmation or block — multiple risk signals |
| 10 | Critical | Block — confirmed scam address in database |
Errors
SafeSend uses standard HTTP status codes. Error responses include a JSON body with an error field.
| Status | Code | Meaning |
|---|---|---|
| 200 | — | Check completed successfully |
| 400 | bad_request | Missing or invalid address. Check the error and hint fields. |
| 401 | unauthorized | Missing or invalid API key |
| 429 | rate_limited | Daily quota exceeded. Resets at midnight UTC. |
| 500 | server_error | Transient error. Retry with exponential backoff. |
Error response shape
{
"error": "Unrecognized address format",
"hint": "Supported: Ethereum / Polygon / Base / Arbitrum / Optimism (0x...), Bitcoin (1.../3.../bc1...), Solana"
}
Get your API key
Free tier issues instantly. 100 checks/day. No credit card.
Request a free API key
Takes 5 seconds. Key issued immediately.
By signing up you agree to our terms. Free tier: 100 requests/day.
- All 7 chains
- Webhook notifications
- Dedicated support
- Custom SLA
📬 Enterprise? Email api@safesend-2e7y.polsia.app for volume pricing, SLAs, and custom integration support.