Every lookup module is exposed as a single REST endpoint. All responses are JSON, all inputs are validated with the same rules as the dashboard, and credits are debited from the caller's account.
Base URL
https://osints.xyz/api/public/v2/lookup/:kindSupported values for :kind — mobile, vehicle, vehicle_owner, aadhaar, challan, telegram, email, pan, upi.
Authentication
Send your Supabase access token as a bearer token. See the Authentication doc for how to obtain one.
Authorization: Bearer <supabase_access_token>GET request
curl -H "Authorization: Bearer $TOKEN" \
"https://osints.xyz/api/public/v2/lookup/mobile?query=9876543210"POST request
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"9876543210"}' \
https://osints.xyz/api/public/v2/lookup/mobileSuccess response (mobile)
{
"✅": "Number details retrieved successfully",
"⏰": "2026-07-24T09:12:44.512Z",
"📱": {
"mobile_number": "9876543210",
"status": "Found",
"personal_info": { "name": "…", "email": "…" },
"location_info": { "state": "Punjab" },
"sim_info": { "operator": "Airtel", "circle": "Punjab" }
}
}Not-found response
{
"❌": "No records found",
"⏰": "2026-07-24T09:12:44.512Z",
"📱": { "mobile_number": "9876543210", "status": "Not Found" }
}Error response
{
"⚠️": "Request failed",
"⏰": "2026-07-24T09:12:44.512Z",
"error": "Enter a valid 10-digit Indian mobile number"
}Empty string, null, and empty object values are pruned from every response so payloads stay compact.