Integrate SocialEye 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_keyNote: Never expose your API key in client-side code. Make API calls from your backend.
import requests
API_KEY = "sk_live_..."
BASE_URL = "https://socialeye.net"
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 (Sovereign+)
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/verifyOperative+Verify API key is working and check your access level
/api/resolveAnalyst+Resolve a handle/username to associated profiles, breach data, and stealer logs
/api/database/searchAnalyst+Search breach databases for exposed credentials and personal data
/api/stealer-logs/searchSovereign+Search stealer logs for compromised credentials (full results require Sovereign+)
/api/stealer-logs/file/[id]/[type]Sovereign+Browse detailed contents of a stealer log file
/api/discord/lookupOperative+Lookup Discord user profiles by user ID
/api/historyOperative+Retrieve your search history with pagination
/api/historyOperative+Get cached result for a specific search by ID
/api/saved-incidentsOperative+List all saved credentials/incidents
/api/saved-incidentsOperative+Save a credential/incident to your account
/api/saved-incidents/[id]Operative+Delete a saved incident by ID
/api/auth/meOperative+Get current account information, tier, quota, and verify API key
| Plan | API Access | Searches | Stealer Logs | Rate Limit | IPs |
|---|---|---|---|---|---|
| Free | ✗ | — | — | — | — |
| Analyst | ✗ | 100/day | — | — | — |
| Operative | ✓ | 100/hour | Obfuscated | 1 req/s | 3 |
| Sovereign | ✓ | Unlimited | 60/hour | 3 req/s | 5 |
| God | ✓ | Unlimited | Unlimited | Unlimited | 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 (optional)"
}Rate limit information is included in response headers:
If you receive 403 errors or see Cloudflare challenge pages when making API requests:
GET /api/v1/info (no auth required)GET /api/v1/verifyYour server's outgoing IP may differ from your local IP, especially when using:
Ensure your requests include these headers: