REST API reference

Public REST endpoint that returns the same intelligence as the dashboard, wrapped in a branded JSON envelope.

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/:kind

Supported 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/mobile

Success 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.

Keep reading