https://api.hyperionsearch.xyz/api
загрузка...
Каждый запрос должен содержать API-ключ. Поддерживаются три способа:
X-API-Key: your_api_key
{
"token": "your_api_key"
}
Authorization: Bearer your_api_key
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
search |
string | да | Поисковый запрос. Алиас: query |
type |
string | нет | Тип поиска. Авто-определение если не указан. |
token |
string | нет | API-ключ (если не передан через заголовок) |
{
"ok": true,
"type": "tg",
"query": "@durov",
"count": 42,
"results": [
{
"tg_id": "1234567",
"username": "durov",
"first_name": "Pavel",
"source": "QuickFlow"
}
]
}
Доступные значения параметра type. Если не указан — определяется автоматически.
phone79001234567emailuser@mail.rufioИванов Иванtg@usernamevkvk.com/id123nicknamecoolhackerip8.8.8.8inn7707083893snils123-456-789 00passport4515 123456autoА123ВС77addressМосква, Ленина 1Если type не указан, API определяет его из запроса:
| Паттерн запроса | Определяется как |
|---|---|
@username | tg |
user@domain.com | |
+79001234567 | phone |
192.168.1.1 | ip |
4515 123456 | passport |
123-456-789 00 | snils |
| 10-12 цифр | inn |
А123ВС77 | auto |
| 2+ кириллических слова | fio |
| Всё остальное | nickname |
curl -X POST "https://api.hyperionsearch.xyz/api" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_KEY" \
-d '{"search": "79001234567"}'
curl -X POST "https://api.hyperionsearch.xyz/api" \
-H "Content-Type: application/json" \
-d '{"token": "YOUR_KEY", "search": "@durov"}'
import requests
resp = requests.post(
"https://api.hyperionsearch.xyz/api",
json={
"token": "YOUR_KEY",
"search": "@durov"
}
)
data = resp.json()
print(f"Найдено {data['count']} результатов")
for r in data["results"]:
print(r)
const resp = await fetch("https://api.hyperionsearch.xyz/api", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_KEY"
},
body: JSON.stringify({ search: "@durov" })
});
const data = await resp.json();
console.log(`Найдено ${data.count} результатов`);
data.results.forEach(r => console.log(r));
Собственный AI-аналитик Hyperion. Превращает сырые результаты поиска в готовое досье, ищет аномалии, строит связи и проводит автоматическое расследование.
hyperion-fastбыстрая, для навигацииhyperion-highсредняя, точные ответыhyperion-maxтоповая, досье/анализAI-эндпоинты живут на отдельном домене и требуют отдельный X-AI-Api-Key (купить можно в Mini App за $4 навсегда).
X-AI-Api-Key: your_ai_api_key
Базовый URL для AI: https://api.hyperionsearch.xyz/miniapp
| Метод | Путь | Что делает | Стоимость |
|---|---|---|---|
| POST | /miniapp/ai/dossier | Структурированное досье + достоверность + конфликты | 10 токенов |
| POST | /miniapp/ai/dossier/stream | То же, но потоком (SSE) — мгновенный отклик | 10 токенов |
| POST | /miniapp/ai/anomalies | Находит несоответствия и подозрительные паттерны | 5 токенов |
| POST | /miniapp/ai/connections | Связи между двумя людьми/наборами | 8 токенов |
| POST | /miniapp/ai/investigate | Цепочка автопоисков с навигацией | 5 за шаг |
| POST | /miniapp/ai/full_profile | Investigate + автодосье в одном запросе | 15 фикс |
| POST | /miniapp/search/ai-merge | Сжимает дубли в один профиль | бесплатно |
Все эндпоинты принимают либо готовые results из обычного поиска, либо query + type для автопоиска.
| Параметр | Тип | Описание |
|---|---|---|
query | string | Поисковый запрос (если нет results) |
type | string | Тип: phone, fio, email, vk, tg, ip, … |
results | array | Готовые результаты из POST /api |
max_steps | number | Только для investigate / full_profile (1–8) |
curl -X POST "https://api.hyperionsearch.xyz/miniapp/ai/dossier" \
-H "Content-Type: application/json" \
-H "X-AI-Api-Key: YOUR_AI_KEY" \
-d '{"query": "+79991234567", "type": "phone"}'
curl -X POST "https://api.hyperionsearch.xyz/miniapp/ai/full_profile" \
-H "Content-Type: application/json" \
-H "X-AI-Api-Key: YOUR_AI_KEY" \
-d '{"query": "@durov", "type": "tg", "max_steps": 5}'
curl -X POST "https://api.hyperionsearch.xyz/miniapp/ai/connections" \
-H "Content-Type: application/json" \
-H "X-AI-Api-Key: YOUR_AI_KEY" \
-d '{
"query1": "+79991234567", "type1": "phone",
"query2": "ivan@mail.ru", "type2": "email"
}'
import requests
BASE = "https://api.hyperionsearch.xyz/miniapp"
AI_KEY = "YOUR_AI_KEY"
def dossier(query: str, type_: str = "phone") -> str:
r = requests.post(
f"{BASE}/ai/dossier",
headers={"X-AI-Api-Key": AI_KEY},
json={"query": query, "type": type_},
timeout=120,
)
r.raise_for_status()
return r.json()["dossier"]
print(dossier("+79991234567", "phone"))
import requests
class HyperionAI:
def __init__(self, ai_key: str, base: str = "https://api.hyperionsearch.xyz/miniapp"):
self.h = {"X-AI-Api-Key": ai_key}
self.base = base
def _post(self, path: str, payload: dict) -> dict:
r = requests.post(f"{self.base}{path}", headers=self.h,
json=payload, timeout=120)
r.raise_for_status()
return r.json()
def dossier(self, query, type_="phone"):
return self._post("/ai/dossier", {"query": query, "type": type_})
def anomalies(self, query, type_="phone"):
return self._post("/ai/anomalies", {"query": query, "type": type_})
def full_profile(self, query, type_="phone", max_steps=5):
return self._post("/ai/full_profile",
{"query": query, "type": type_, "max_steps": max_steps})
def connections(self, q1, t1, q2, t2):
return self._post("/ai/connections",
{"query1": q1, "type1": t1, "query2": q2, "type2": t2})
ai = HyperionAI(AI_KEY)
print(ai.full_profile("+79991234567")["dossier"])
const r = await fetch("https://api.hyperionsearch.xyz/miniapp/ai/dossier/stream", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-AI-Api-Key": "YOUR_AI_KEY",
},
body: JSON.stringify({ query: "+79991234567", type: "phone" }),
});
const reader = r.body.getReader();
const dec = new TextDecoder();
let buf = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
buf += dec.decode(value, { stream: true });
// Каждое событие в SSE разделяется \n\n
for (const block of buf.split("\n\n")) {
if (block.startsWith("event: token")) {
const data = block.split("\ndata: ")[1] || "";
process.stdout.write(JSON.parse(data || '""'));
}
}
buf = buf.split("\n\n").slice(-1)[0];
}
const BASE = "https://api.hyperionsearch.xyz/miniapp";
const AI_KEY = "YOUR_AI_KEY";
async function aiCall(path, payload) {
const r = await fetch(`${BASE}${path}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-AI-Api-Key": AI_KEY,
},
body: JSON.stringify(payload),
});
if (!r.ok) throw new Error(`AI ${r.status}`);
return r.json();
}
const dossier = await aiCall("/ai/dossier", {
query: "+79991234567",
type: "phone",
});
console.log(dossier.dossier);
const profile = await aiCall("/ai/full_profile", {
query: "@durov", type: "tg", max_steps: 5,
});
console.log(profile);
{
"dossier": "## Личность\nИванов Иван Иванович, 12.04.1985\n\n## Контакты\n+7 999 123-45-67\nivan@mail.ru\n\n## Адреса\nМосква, ул. Ленина, 1\n\n## Цифровой след\nVK: id12345678\nTelegram: @ivan_dev\n\n## Ключевые выводы\n- Активный пользователь, профили в нескольких базах\n- Совпадение по телефону и email — высокая достоверность",
"ai_tokens": 90
}
| Пакет | AI-токены | Цена |
|---|---|---|
| Старт | 50 | $1 |
| Стандарт | 150 | $3 |
| Pro | 500 | $8 |
| API-ключ | — | $4 (навсегда, без пакета) |
Стандартные HTTP-коды с JSON-телом ошибки.
| Код | Ошибка | Описание |
|---|---|---|
| 401 | missing_api_key | API-ключ не передан |
| 401 | invalid_api_key | Ключ не найден в базе |
| 403 | version_mismatch | Версия ключа не совпадает с эндпоинтом |
| 422 | query_required | Пустой или отсутствующий запрос |
| 422 | invalid_type | Неизвестный тип поиска |
| 429 | rate_limit | Слишком много запросов |
| 402 | no_ai_tokens | Закончились AI-токены (только для /miniapp/ai/*) |
| 503 | ai_not_configured | ИИ временно недоступен |
| 504 | ai_timeout | ИИ не успел ответить |
{
"error": "invalid_api_key"
}