REST API

Run OSINT UI's tools from your own code with the REST API. Requires PRO+.

The REST API (/api/v1) lets you run any tool from your own code or automations. Every call runs server-side with your configured API keys — they never leave the server. Requires the PRO+ plan.

Authentication

  1. Go to Settings → API/Connect inside the app and create a token (PAT).
  2. Send it on every request as an Authorization: Bearer YOUR_TOKEN header.
curl https://osint-ui.com/api/v1/domain \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'

It also works via GET with query parameters:

curl "https://osint-ui.com/api/v1/email?email=someone@example.com" \
  -H "Authorization: Bearer YOUR_TOKEN"

Rate limit

600 requests / 5 minutes per PRO+ user (a plain-PRO token created before September 11, 2026 still works but at the old 120/5min limit — new tokens can't be created without PRO+).

Available endpoints

Endpoint Parameters What it does
POST /api/v1/email email Analyze an email
POST /api/v1/phone phone Analyze a phone number
POST /api/v1/domain domain Analyze a domain or IP
POST /api/v1/ip ip Analyze an IP address
POST /api/v1/reputation target Reputation of an IP/domain/URL
POST /api/v1/username username Search a username across platforms
POST /api/v1/hash hash Identify/analyze a hash
POST /api/v1/crypto address Trace a crypto wallet
POST /api/v1/telegram username Telegram OSINT
POST /api/v1/dorks target, targetType Generate Google dorks
POST /api/v1/url url Scan a URL
POST /api/v1/github query, queryType GitHub OSINT
POST /api/v1/pastes query Search paste sites
POST /api/v1/onion query Search .onion services
POST /api/v1/ports target, scanType Port scan a host
POST /api/v1/leak selector Search data breaches (Intelligence X)

GET https://osint-ui.com/api/v1 returns this same catalog as JSON, no token needed.

Response shape

Every successful response looks like {"tool": "...", "result": { ... }}. Errors return an HTTP status and a {"error": "...", ...} body:

Status error Meaning
400 missing_params A required parameter is missing
401 invalid_token Token missing, malformed or revoked
403 proplus_required The account isn't on PRO+
404 unknown_tool That endpoint doesn't exist
429 rate_limited You hit the request limit
500 tool_error The tool itself failed to run

JavaScript example

const res = await fetch('https://osint-ui.com/api/v1/domain', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ domain: 'example.com' }),
});
const { result } = await res.json();

Python example

import requests

r = requests.post(
    "https://osint-ui.com/api/v1/domain",
    headers={"Authorization": "Bearer YOUR_TOKEN"},
    json={"domain": "example.com"},
)
print(r.json()["result"])

When to use the API instead of MCP

The REST API is the right path for integrating into your own backend, a script or an automation pipeline. If instead you want an AI assistant (Claude Desktop, Claude Code...) to use the tools conversationally, that's what the MCP server is for — it uses the same token.