sextort.com
Home Dashboard
Sextort API

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.

HeaderTypeDescription
X-API-KeystringYour secret key, e.g. 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"
  }
}
FieldTypeDescription
remainingnumberCredits left in the current window. "unlimited" on unlimited plans.
reset_datestringThe date (UTC) your balance next resets.

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.

200Success - the data field contains the result.
400Bad request - a required parameter is missing or invalid.
401Invalid or revoked API key.
402Insufficient credits - balance is exhausted until reset.
403Your plan does not include API access.
502An upstream data source failed. Retry shortly.
POST /api/osint 1 credit

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

FieldTypeDescription
typerequiredstringOne of email, username, name, password, ip, phone, domain.
queryrequiredstringThe value to look up (e.g. the email address).

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
  }
}

POST /api/stealer 1 credit

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

FieldTypeDescription
typestringOne of login (default), password, url.
queryrequiredstringThe login/email, password, or URL to search for.

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"
      }
    ]
  }
}

POST /api/discord 1 credit

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

FieldTypeDescription
queryrequiredstringA Discord user ID (numeric snowflake).

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": []
  }
}

POST /api/ai 1 credit

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

FieldTypeDescription
promptstringA single user prompt. Provide this or messages.
messagesarrayAn array of { 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"
  }
}

GET /api/health Free

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"
  }
}