Авторизация Поиск Типы Примеры ИИ Ошибки

Hyperion API

https://api.hyperionsearch.xyz/api
загрузка...

Авторизация

Каждый запрос должен содержать API-ключ. Поддерживаются три способа:

Рекомендуется

Заголовок

Header
X-API-Key: your_api_key

Тело запроса

JSON Body
{
  "token": "your_api_key"
}

Bearer

Header
Authorization: Bearer your_api_key

Типы поиска

Доступные значения параметра type. Если не указан — определяется автоматически.

phone79001234567
emailuser@mail.ru
fioИванов Иван
tg@username
vkvk.com/id123
nicknamecoolhacker
ip8.8.8.8
inn7707083893
snils123-456-789 00
passport4515 123456
autoА123ВС77
addressМосква, Ленина 1

Авто-определение типа

Если type не указан, API определяет его из запроса:

Паттерн запросаОпределяется как
@usernametg
user@domain.comemail
+79001234567phone
192.168.1.1ip
4515 123456passport
123-456-789 00snils
10-12 цифрinn
А123ВС77auto
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"}'
Поиск по Telegram
curl -X POST "https://api.hyperionsearch.xyz/api" \
  -H "Content-Type: application/json" \
  -d '{"token": "YOUR_KEY", "search": "@durov"}'
main.py
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)
index.js
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 навсегда).

Header
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_profileInvestigate + автодосье в одном запросе15 фикс
POST/miniapp/search/ai-mergeСжимает дубли в один профильбесплатно

Тело запроса

Все эндпоинты принимают либо готовые results из обычного поиска, либо query + type для автопоиска.

ПараметрТипОписание
querystringПоисковый запрос (если нет results)
typestringТип: phone, fio, email, vk, tg, ip, …
resultsarrayГотовые результаты из POST /api
max_stepsnumberТолько для 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"
  }'
ai_client.py
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"))
Embed в свой бот / приложение
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"])
streaming.js — SSE по мере генерации
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];
}
ai_client.js
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 response
{
  "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
Pro500$8
API-ключ$4 (навсегда, без пакета)

Ошибки

Стандартные HTTP-коды с JSON-телом ошибки.

КодОшибкаОписание
401missing_api_keyAPI-ключ не передан
401invalid_api_keyКлюч не найден в базе
403version_mismatchВерсия ключа не совпадает с эндпоинтом
422query_requiredПустой или отсутствующий запрос
422invalid_typeНеизвестный тип поиска
429rate_limitСлишком много запросов
402no_ai_tokensЗакончились AI-токены (только для /miniapp/ai/*)
503ai_not_configuredИИ временно недоступен
504ai_timeoutИИ не успел ответить
Пример ошибки
{
  "error": "invalid_api_key"
}