Получите клиентский ключ
sudo cat /root/jycode_gateway_client_key.txtЛибо создайте новый ключ и сразу примените его:
sudo /opt/jycode-gateway/.venv/bin/python \
/opt/jycode-gateway/scripts/create_gateway_key.py \
--restartJyCode API Gateway принимает один запрос, параллельно запускает все подходящие источники, приводит результаты к единому формату и сохраняет исходные ответы при необходимости.
Минимальный рабочий запрос через HTTPS.
sudo cat /root/jycode_gateway_client_key.txtЛибо создайте новый ключ и сразу примените его:
sudo /opt/jycode-gateway/.venv/bin/python \
/opt/jycode-gateway/scripts/create_gateway_key.py \
--restartcurl -sS -X POST "https://tulasay.ru/v1/search" \
-H "X-API-Key: jg_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"query": "8382799213",
"search_type": "telegram",
"include_raw": false
}'Каждый защищённый запрос должен содержать клиентский ключ Gateway.
Основной и самый простой способ.
X-API-Key: jg_ВАШ_КЛЮЧАльтернативная стандартная схема.
Authorization: Bearer jg_ВАШ_КЛЮЧРазные ключи для бота, сайта и приложения.
GATEWAY_API_KEYS=jg_БОТ,jg_САЙТ,jg_APP/opt/jycode-gateway/.env. Клиент знает только ключ jg_....Основные маршруты Gateway.
/healthzПроверка, что процесс работает. Ключ не нужен.
/readyzГотовность и список загруженных адаптеров. Ключ не нужен.
/v1/typesСписок типов поиска и примечания. Нужен ключ.
/v1/providersКакие провайдеры включены и настроены.
/v1/providers/statusПроверка статуса, лимитов и доступности поддерживаемых upstream-методов.
/v1/detectЛокально определяет тип запроса без платного поиска.
/v1/searchГлавный поиск: параллельный вызов подходящих источников.
/v1/face/searchMultipart-загрузка JPG, PNG, WEBP или GIF до 5 МБ.
/v1/bigbase/open-dossierОткрыть досье BigBase по record_id из поисковой выдачи.
/v1/bigbase/random-dossierПолучить случайное тестовое досье с фильтрами пола, года и поисковой строки.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
query | string | обязательно | Строка поиска, от 1 до 500 символов. |
search_type | enum | auto | Тип поиска. При auto используется локальный детектор. |
providers | array|null | null | Ограничить поиск конкретными провайдерами. |
page | integer | 1 | Страница для методов, которые поддерживают пагинацию. |
include_raw | boolean | true | Добавить исходный JSON каждого источника. |
bypass_cache | boolean | false | Не использовать кэш и выполнить новый upstream-поиск. |
При совпадении методов Gateway запускает несколько сервисов одновременно.
| search_type | Пример | Запускаемые инструменты |
|---|---|---|
phone | 79991234567 | DepSearch · NightSearch phone · Jitler number · RaidFind phone · DeepScan phone |
email | user@example.com | DepSearch · NightSearch email · Jitler sherlock · RaidFind email · DeepScan email |
fio | Иванов Иван Иванович | DepSearch · NightSearch fio · RaidFind fio · DeepScan fio |
telegram | 8382799213 / @username | NightSearch tg · Jitler funstat + sherlock · RaidFind telegram · DeepScan tg |
vk | https://vk.com/username | DepSearch · NightSearch vk · Jitler vks + sherlock · RaidFind vk · DeepScan vk |
nick | username | DepSearch nick · NightSearch nick · Jitler sherlock · RaidFind nick · DeepScan nick |
ip | 8.8.8.8 | DepSearch · NightSearch ip · RaidFind ip · DeepScan ip |
snils | 123-456-789 01 | DepSearch · NightSearch snils · DeepScan snils |
inn | 7712345678 | DepSearch · NightSearch inn · RaidFind inn · DeepScan inn |
auto_vehicle | A123BC777 / VIN | DepSearch · NightSearch car · RaidFind auto · DeepScan car |
passport | 4515123456 | RaidFind passport · DeepScan passport |
ok | ok.ru/profile/... | NightSearch ok · DeepScan ok |
fb | facebook.com/username | NightSearch fb · DeepScan fb |
tiktok | @username | DepSearch tt |
address | Москва, Тверская, 10 | DepSearch addr |
sherlock | username | Jitler sherlock |
funstat | 8382799213 | Jitler funstat |
card | 4111111111111111 | Gloom card · BigBase search |
imei | 123456789012345 | Gloom imei · BigBase search |
bdate | 1990-01-01 | Gloom bdate · BigBase search |
social | facebook.com/user | Gloom social · BigBase search |
face | photo.jpg | RaidFind face + DeepScan face через отдельный endpoint |
Gateway скрывает различия авторизации, форматов и фоновых задач.
GET-интеграция. Специализированные префиксы для nick, snils, inn, ip, TikTok и адреса.
POST /api/search с собственным search_type. 404 трактуется как корректное «не найдено».
Ротация нескольких ключей, создание фоновой задачи и polling результата.
Единый поиск по типам и отдельный multipart-поиск лица. Gateway добавляет обязательный User-Agent.
Префиксная маршрутизация обычных запросов и отдельный поиск по фотографии.
Универсальный POST /api/search с X-API-Key и отдельной проверкой статуса аккаунта.
Bearer-авторизация, список ключей, round-robin и переключение при временных ошибках.
POST /v1/search с X-API-Key для телефона, Telegram username/ID и VK ID.
Универсальный поиск, открытие досье по record_id и генерация случайного тестового досье.
Bearer REST API для поиска по email, телефону, username, IP, адресу, паспорту, ФИО и авто.
Параллельный запуск, кэш, ограничение одновременности, единые записи и частичный успех.
Нормализованные записи и подробный результат каждого инструмента.
{
"request_id": "uuid",
"status": "success",
"query": "8382799213",
"search_type": "telegram",
"detected": null,
"result_count": 3,
"providers_ok": 5,
"providers_failed": 0,
"cached": false,
"records": [
{
"provider": "raidfind",
"tool": "telegram",
"title": "Запись",
"database": "Источник",
"year": 2025,
"actuality": 98,
"fields": {
"full_name": "Иван Иванов"
},
"links": ["https://t.me/username"]
}
],
"provider_results": [
{
"provider": "jitler",
"tool": "sherlock",
"ok": true,
"found": true,
"status_code": 200,
"latency_ms": 1530,
"records": [],
"raw": {}
}
]
}success — есть результаты, все инструменты ответили.
partial_success — результаты есть, часть инструментов завершилась ошибкой.
not_found — источники ответили, записей нет.
failed — ни один запланированный инструмент не дал успешного ответа.
records — удобный единый массив для интерфейса.
provider_results — разбор по каждому источнику и инструменту.
raw присутствует только при include_raw=true.
HTTP-ошибки Gateway и ошибки отдельных источников.
| Код | Когда возникает | Что делать |
|---|---|---|
400 | Пустой/неподдерживаемый файл или некорректный запрос. | Проверить тело и Content-Type. |
401 | Ключ отсутствует или неверный. | Проверить X-API-Key или Bearer. |
413 | Изображение больше установленного лимита. | Уменьшить файл до 5 МБ. |
422 | Тело JSON не прошло валидацию. | Проверить поля, enum и длины. |
429 | Превышен лимит запросов на ключ. | Учитывать Retry-After и повторить позже. |
provider_results[].error. Поле retryable показывает, имеет ли смысл повторить запрос.Методы доступны через защищённые endpoint-ы Gateway.
curl -sS -X POST "https://tulasay.ru/v1/bigbase/open-dossier" \
-H "X-API-Key: jg_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"record_id":"RECORD_ID"}'curl -sS -X POST "https://tulasay.ru/v1/bigbase/random-dossier" \
-H "X-API-Key: jg_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"search":"Москва","sex":"any","year_from":"1980","year_to":"2000"}'cURL, Python и JavaScript.
import httpx
payload = {
"query": "8382799213",
"search_type": "telegram",
"include_raw": False,
}
response = httpx.post(
"https://tulasay.ru/v1/search",
headers={"X-API-Key": "jg_ВАШ_КЛЮЧ"},
json=payload,
timeout=90,
)
response.raise_for_status()
print(response.json())const response = await fetch(
"https://tulasay.ru/v1/detect",
{
method: "POST",
headers: {
"X-API-Key": "jg_ВАШ_КЛЮЧ",
"Content-Type": "application/json"
},
body: JSON.stringify({ query: "8382799213" })
}
);
const data = await response.json();
console.log(data);curl -sS -X POST "https://tulasay.ru/v1/search" \
-H "X-API-Key: jg_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"query": "user@example.com",
"search_type": "email",
"providers": ["jitler", "deepscan"],
"include_raw": false,
"bypass_cache": true
}'curl -sS -X POST \
"https://tulasay.ru/v1/face/search" \
-H "X-API-Key: jg_ВАШ_КЛЮЧ" \
-F "image=@photo.jpg"Ключ используется только в этой вкладке браузера и никуда не сохраняется.
Здесь появится ответ сервера.
Команды для сервера и важные параметры.
sudo systemctl status jycode-gateway
sudo systemctl restart jycode-gateway
sudo journalctl -u jycode-gateway -fsudo systemctl status caddy
sudo journalctl -u caddy -f
curl https://tulasay.ru/healthzsudo nano /opt/jycode-gateway/.env
sudo chmod 600 /opt/jycode-gateway/.env
sudo systemctl restart jycode-gatewayПо умолчанию повторный одинаковый поиск кэшируется на 180 секунд. Используйте bypass_cache=true только когда требуется новый upstream-запрос.
По умолчанию 30 запросов в минуту на каждый клиентский ключ. Лимит задаётся через RATE_LIMIT_PER_MINUTE.
include_raw=true может вернуть большой объём исходных данных. Для обычного интерфейса и Telegram-бота безопаснее использовать false.