Examples
cURL, Python, and JavaScript examples for SearchIn search and poll.
Replace ov_your_api_key with a secret from Dashboard → API keys.
Create a search
curl -X POST "https://apiv1.osintverse.com/v1/search" \
-H "Content-Type: application/json" \
-H "x-api-key: ov_your_api_key" \
-d '{"provider":"leakradar-lite","input_type":"email","query":"[email protected]"}'Request body
{
"provider": "leakradar-lite",
"input_type": "email",
"query": "[email protected]"
}Completed response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"provider": "leakradar-lite",
"input_type": "email",
"query": "[email protected]",
"cost_usd": "1.00",
"balance_after": "9.00",
"result": {
"sources": [
{
"name": "leakradar",
"type": "email",
"total": 3,
"total_unlocked": 2,
"page": 1,
"page_size": 100,
"items_returned": 3,
"auto_unlock_points_consumed": 1
}
],
"matches": [
{
"type": "leak",
"id": "3f1a9c2b7e",
"url": "https://example.com/login",
"username": "[email protected]",
"username_masked": "u***@example.com",
"password": "P@ssw0rd123",
"password_strength": 6,
"unlocked": true,
"is_email": true,
"added_at": "2025-01-15T10:30:00Z",
"status": "new"
}
]
},
"error": null,
"poll_url": null
}Poll an async search
curl "https://apiv1.osintverse.com/v1/search/550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: ov_your_api_key"FaceCheck completed matches look like:
{
"score": 97,
"url": "https://sports.yahoo.com/article/example",
"thumbnail": "data:image/webp;base64,..."
}See the search workflow for status handling.
Bulk search
curl -X POST "https://apiv1.osintverse.com/v1/search/bulk" \
-H "Content-Type: application/json" \
-H "x-api-key: ov_your_api_key" \
-d '{"input_type":"email","queries":["[email protected]","[email protected]"],"providers":["leakradar-lite","dehashed"]}'import httpx
response = httpx.post(
"https://apiv1.osintverse.com/v1/search/bulk",
headers={"x-api-key": "ov_your_api_key"},
json={
"input_type": "email",
"queries": ["[email protected]", "[email protected]"],
"providers": ["leakradar-lite", "dehashed"],
},
)
response.raise_for_status()
batch = response.json()
print(batch["summary"], len(batch["searches"]))Limits: 50 queries, 100 jobs (queries × providers). Poll any running job with GET /v1/search/:id.