API Reference
A single, credit-metered REST API for open-source intelligence, stealer logs, Discord profiling and AI.
Base URL - https://sextort.com. All requests are made over HTTPS and return JSON.
Quickstart
Generate a key in Dashboard → Settings → API Access, then send it in the X-API-Key header:
curl -X POST https://sextort.com/api/osint \
-H "X-API-Key: sex_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"email","query":"target@example.com"}'const res = await fetch("https://sextort.com/api/osint", {
method: "POST",
headers: {
"X-API-Key": "sk_live_YOUR_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"type": "email",
"query": "target@example.com"
})
});
const { credits, data } = await res.json();
console.log(credits.remaining, data);import requests
res = requests.post(
"https://sextort.com/api/osint",
headers={"X-API-Key": "sk_live_YOUR_KEY"},
json={"type": "email","query": "target@example.com"},
)
payload = res.json()
print(payload["credits"]["remaining"], payload["data"])Authentication
Every request must include a valid API key. Keys are created and revoked from the dashboard and are tied to your account and plan.
sex_…. Required on every request.Alternatively you may pass it as a bearer token: Authorization: Bearer sex_….
Treat keys like passwords. They're shown in full only once at creation. Never expose them in client-side code or public repositories.
Credits
The API shares your website credit balance - there are no separate API credits. Every data request costs exactly 1 credit; /api/health is free. Credits reset daily at 00:00 UTC according to your plan.
Every response includes a credits object as its first field:
{
"credits": {
"remaining": 98,
"reset_date": "2026-08-01"
},
"data": {
"…": "endpoint result"
}
}"unlimited" on unlimited plans.When remaining reaches 0, data endpoints return 402 Payment Required until your credits reset.
Errors & status codes
The API uses conventional HTTP status codes. Error responses still include the credits object where available, alongside a human-readable error string.
data field contains the result.OSINT Lookup
Search breach databases and OSINT sources for an email, username, name, password, IP, phone or domain. Aggregates results from every configured source and returns normalized records.
Authentication
Requires the X-API-Key header.
Parameters
email, username, name, password, ip, phone, domain.Example request
curl -X POST https://sextort.com/api/osint \
-H "X-API-Key: sex_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"email","query":"target@example.com"}'const res = await fetch("https://sextort.com/api/osint", {
method: "POST",
headers: {
"X-API-Key": "sk_live_YOUR_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"type": "email",
"query": "target@example.com"
})
});
const { credits, data } = await res.json();
console.log(credits.remaining, data);import requests
res = requests.post(
"https://sextort.com/api/osint",
headers={"X-API-Key": "sk_live_YOUR_KEY"},
json={"type": "email","query": "target@example.com"},
)
payload = res.json()
print(payload["credits"]["remaining"], payload["data"])Example response
{
"credits": {
"remaining": 98,
"reset_date": "2026-08-01"
},
"data": {
"type": "email",
"query": "target@example.com",
"count": 2,
"records": [
{
"email": "target@example.com",
"username": "target91",
"password": "hunter2",
"db": "Adobe"
}
],
"seon": null
}
}Stealer Logs
Query infostealer log databases by login/email, password, or target URL. Returns stolen credential records with their source.
Authentication
Requires the X-API-Key header.
Parameters
login (default), password, url.Example request
curl -X POST https://sextort.com/api/stealer \
-H "X-API-Key: sex_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"login","query":"target@example.com"}'const res = await fetch("https://sextort.com/api/stealer", {
method: "POST",
headers: {
"X-API-Key": "sk_live_YOUR_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"type": "login",
"query": "target@example.com"
})
});
const { credits, data } = await res.json();
console.log(credits.remaining, data);import requests
res = requests.post(
"https://sextort.com/api/stealer",
headers={"X-API-Key": "sk_live_YOUR_KEY"},
json={"type": "login","query": "target@example.com"},
)
payload = res.json()
print(payload["credits"]["remaining"], payload["data"])Example response
{
"credits": {
"remaining": 97,
"reset_date": "2026-08-01"
},
"data": {
"type": "login",
"query": "target@example.com",
"count": 1,
"records": [
{
"login": "target@example.com",
"password": "hunter2",
"url": "https://roblox.com",
"ip": "102.44.x.x"
}
]
}
}Discord Intelligence
Resolve a Discord user ID into an intelligence profile - account analysis, risk scoring, linked FiveM data, server exploits and any breached records tied to the ID.
Authentication
Requires the X-API-Key header.
Parameters
Example request
curl -X POST https://sextort.com/api/discord \
-H "X-API-Key: sex_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"448291087334100992"}'const res = await fetch("https://sextort.com/api/discord", {
method: "POST",
headers: {
"X-API-Key": "sk_live_YOUR_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"query": "448291087334100992"
})
});
const { credits, data } = await res.json();
console.log(credits.remaining, data);import requests
res = requests.post(
"https://sextort.com/api/discord",
headers={"X-API-Key": "sk_live_YOUR_KEY"},
json={"query": "448291087334100992"},
)
payload = res.json()
print(payload["credits"]["remaining"], payload["data"])Example response
{
"credits": {
"remaining": 96,
"reset_date": "2026-08-01"
},
"data": {
"query": "448291087334100992",
"profile": {
"score": {
"risk": 12,
"level": "low"
},
"fivem": null,
"exploits": null
},
"breaches": []
}
}AI Assistant
Send a prompt to the SR1 intelligence assistant and receive a completed (non-streaming) response. Accepts a single prompt or a full messages array.
Authentication
Requires the X-API-Key header.
Parameters
messages.{ role, content } objects for multi-turn context.Example request
curl -X POST https://sextort.com/api/ai \
-H "X-API-Key: sex_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"Summarize the OWASP Top 10 in one sentence each."}'const res = await fetch("https://sextort.com/api/ai", {
method: "POST",
headers: {
"X-API-Key": "sk_live_YOUR_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"prompt": "Summarize the OWASP Top 10 in one sentence each."
})
});
const { credits, data } = await res.json();
console.log(credits.remaining, data);import requests
res = requests.post(
"https://sextort.com/api/ai",
headers={"X-API-Key": "sk_live_YOUR_KEY"},
json={"prompt": "Summarize the OWASP Top 10 in one sentence each."},
)
payload = res.json()
print(payload["credits"]["remaining"], payload["data"])Example response
{
"credits": {
"remaining": 95,
"reset_date": "2026-08-01"
},
"data": {
"reply": "Here are the OWASP Top 10 risks…",
"model": "sr1"
}
}Service Health
Check the operational status of the platform and its data sources. This endpoint is free - it never consumes a credit.
Authentication
Requires the X-API-Key header.
This endpoint takes no parameters.
Example request
curl -X GET https://sextort.com/api/health \
-H "X-API-Key: sex_YOUR_KEY"const res = await fetch("https://sextort.com/api/health", {
method: "GET",
headers: {
"X-API-Key": "sk_live_YOUR_KEY"
}
});
const { credits, data } = await res.json();
console.log(credits.remaining, data);import requests
res = requests.get(
"https://sextort.com/api/health",
headers={"X-API-Key": "sk_live_YOUR_KEY"},
)
payload = res.json()
print(payload["credits"]["remaining"], payload["data"])Example response
{
"credits": {
"remaining": 95,
"reset_date": "2026-08-01"
},
"data": {
"status": "operational",
"checked_at": "2026-07-13T12:00:00.000Z"
}
}