Integrate Revealer.US intelligence into your applications via REST API.
Generate from Dashboard → Settings
Send authenticated REST requests
Receive structured JSON responses
Include your API key in the Authorization header:
Authorization: Bearer sk_live_your_api_keySecurity: Never expose your API key in client-side code. Make API calls from your backend.
import requests
API_KEY = "sk_live_..."
BASE_URL = "https://revealer.us"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Verify your API key first
def verify_api_key():
response = requests.get(f"{BASE_URL}/api/v1/verify", headers=headers)
return response.json()
# Resolve a username/handle
def resolve_handle(handle):
response = requests.post(
f"{BASE_URL}/api/resolve",
headers=headers,
json={"handle": handle}
)
return response.json()
# Search breach databases
def search_breaches(search_type, term):
response = requests.post(
f"{BASE_URL}/api/database/search",
headers=headers,
json={"type": search_type, "term": term}
)
return response.json()
# Search stealer logs (Elite+)
def search_stealer_logs(search_type, term, limit=35):
response = requests.post(
f"{BASE_URL}/api/stealer-logs/search",
headers=headers,
json={"type": search_type, "term": term, "limit": limit}
)
return response.json()
# Get search history
def get_history(page=1, limit=25):
response = requests.get(
f"{BASE_URL}/api/history?page={page}&limit={limit}",
headers=headers
)
return response.json()
# Example usage
result = search_breaches("email", "[email protected]")
if result.get("success"):
print(f"Found {result['data']['found']} records")/api/v1/infoPublicGet API information, available endpoints, and your detected IP address (no auth required)
/api/v1/verifyPremium+Verify API key is working and check your access level
/api/resolvePremium+Resolve a handle/username to associated profiles, breach data, and device exposures
/api/database/searchPremium+Search breach databases for exposed credentials and personal data
/api/stealer-logs/searchElite+Search device exposures for compromised credentials (full results require Elite+)
/api/stealer-logs/file/[id]/[type]Elite+Browse detailed contents of a stealer log file
/api/discord/lookupPremium+Lookup Discord user profiles by user ID
/api/historyPremium+Retrieve your search history with pagination
/api/historyPremium+Get cached result for a specific search by ID
/api/saved-incidentsPremium+List all saved credentials/incidents
/api/saved-incidentsPremium+Save a credential/incident to your account
/api/saved-incidents/[id]Premium+Delete a saved incident by ID
/api/auth/mePremium+Get current account information, tier, quota, and verify API key
| Plan | API | Breach Lookups | Social Lookups | Device Exposures | Rate | IPs |
|---|---|---|---|---|---|---|
| Free | — | 1/day | 1/day | — | — | — |
| Starter | — | Unlimited | 25/day | — | — | — |
| Basic | — | Unlimited | 150/day | — | — | — |
| Pro | ✓ | Unlimited | 500/day | Previews | 1/s | 3 |
| Elite | ✓ | Unlimited | Unlimited | 100/day | 3/s | 5 |
| Unlimited | ✓ | ∞ | ∞ | ∞ | ∞ | ∞ |
IP Whitelisting: Configure allowed IPs in Dashboard → Settings → API Access before using the API.
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | Invalid request body or missing required parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | IP not whitelisted or insufficient tier access |
| 404 | Not Found | Resource not found |
| 409 | Conflict | Resource already exists (e.g., duplicate saved incident) |
| 429 | Too Many Requests | Rate limit or quota exceeded |
| 500 | Internal Server Error | Server error - contact support if persistent |
Error Response Format:
{
"success": false,
"error": "Error message",
"message": "Human-readable description"
}Rate limit information is included in response headers:
If you receive 403 errors or see Cloudflare challenge pages:
GET /api/v1/infoGET /api/v1/verifyYour server's outgoing IP may differ from local, especially with: