Presend API для разработчиков
Бесплатные серверные эндпоинты для распространённых задач, плюс встраиваемые клиентские инструменты. Ключ API не требуется. Регистрация не требуется.
Серверные эндпоинты
Работают на edge-сети Cloudflare и возвращают JSON. Только добросовестное использование — без официального SLA, интенсивный или автоматизированный трафик может быть ограничен без предупреждения.
Пользователям Python: запросы с User-Agent по умолчанию из urllib (Python-urllib/3.x) Cloudflare отклоняет с кодом HTTP 403 и телом error code: 1010. Укажите любой явный User-Agent. requests, curl и Node отправляют допустимый.
import json, urllib.request
req = urllib.request.Request("https://presend.pages.dev/api/uuid", headers={"User-Agent": "my-app/1.0"})
print(json.load(urllib.request.urlopen(req)))
POST /api/hash
Возвращает SHA-256, SHA-1 и SHA-512 для любого файла до 20 МБ.
curl -X POST --data-binary @file.pdf \
https://presend.pages.dev/api/hash
# {"size_bytes":17,"hashes":{"sha256":"...","sha1":"...","sha512":"..."}}
POST /api/file-type
Определяет настоящий тип файла по его двоичной сигнатуре и сообщает о несоответствии заявленному Content-Type — ловит замаскированные файлы (например, исполняемый файл, переименованный в фотографию), которые проходят через наивные фильтры загрузки.
curl -X POST --data-binary @suspicious.jpg -H "Content-Type: image/jpeg" https://presend.pages.dev/api/file-type
POST /api/malware-check
Вычисляет хеш загруженного файла (SHA-256) и проверяет его по MalwareBazaar (abuse.ch) — бесплатной базе известных образцов вредоносного ПО: хеш и проверка за один вызов.
curl -X POST --data-binary @file.exe https://presend.pages.dev/api/malware-check
GET /api/url-clean
Удаляет из URL более 60 параметров отслеживания (utm_*, fbclid, gclid...).
curl "https://presend.pages.dev/api/url-clean?url=https://example.com/?utm_source=x"
# {"clean":"https://example.com/","removed":1,"valid":true}
POST /api/url-clean
То же в пакетном режиме — до 100 URL за запрос.
curl -X POST -H "Content-Type: application/json" \
-d '{"urls":["https://a.com?fbclid=x","https://b.com?gclid=y"]}' \
https://presend.pages.dev/api/url-clean
GET /api/ip
Возвращает IP вызывающего с геолокацией, валютой, языком и признаками ЕС и VPN.
curl https://presend.pages.dev/api/ip
GET /api/uuid
Генерирует случайные UUID (v4), до 100 за запрос.
curl "https://presend.pages.dev/api/uuid?count=5"
GET /api/base64
Кодирует или декодирует текст в Base64.
curl "https://presend.pages.dev/api/base64?action=encode&text=hello"
GET /api/jwt-decode
Декодирует заголовок и полезную нагрузку JWT (без проверки подписи; для неё используйте jwt-verify).
curl "https://presend.pages.dev/api/jwt-decode?token=eyJhbGci..."
POST /api/jwt-verify
Действительно проверяет криптографическую подпись JWT (HS256/384/512, RS/PS256/384/512, ES256/384/512) через встроенный в Workers Web Crypto API, а также утверждения exp/nbf. Передайте «secret» для HMAC или «jwk»/«jwks_url» для асимметричных алгоритмов.
curl -X POST -H "Content-Type: application/json" -d '{"token":"...","secret":"..."}' https://presend.pages.dev/api/jwt-verify
GET /api/timestamp
Текущее время или преобразование между Unix-временем и датой ISO.
curl "https://presend.pages.dev/api/timestamp?unix=1700000000"
GET /api/color
Преобразует цвета между форматами hex, RGB и HSL.
curl "https://presend.pages.dev/api/color?hex=ff5733"
GET /api/user-agent
Разбирает строку User-Agent на браузер, ОС и тип устройства.
curl "https://presend.pages.dev/api/user-agent"
GET /api/password
Генерирует криптографически стойкий пароль с оценкой энтропии.
curl "https://presend.pages.dev/api/password?length=20&symbols=1"
GET /api/email-validate
Проверяет синтаксис email и наличие у домена MX-записи. Почтовый ящик не опрашивается, поэтому существование адреса подтвердить нельзя; чтобы дополнительно выявлять одноразовые домены и ролевые адреса, используйте email-verify.
curl "https://presend.pages.dev/api/email-validate?email=foo@example.com"
GET /api/favicon
Получает URL фавиконки любого домена.
curl "https://presend.pages.dev/api/favicon?domain=github.com"
GET/POST /api/csv-json
Преобразует между JSON и CSV. Вложенные объекты превращаются в строки, а не разворачиваются.
curl -X POST -H "Content-Type: application/json" \
-d '{"direction":"json-to-csv","data":"[{\"a\":1}]"}' \
https://presend.pages.dev/api/csv-json
GET /api/password-breach
Проверяет, встречается ли пароль в известных утечках данных (Have I Been Pwned). В HIBP отправляются только первые 5 символов его хеша SHA-1 (k-анонимность), и Presend его не записывает. Но это GET-запрос, поэтому пароль передаётся в URL, где его могут сохранить браузеры, прокси или журналы серверов: для настоящих паролей используйте POST /api/password-check.
curl "https://presend.pages.dev/api/password-breach?password=..."
POST /api/password-check
Объединяет оценку надёжности/энтропии с опциональной проверкой утечки за один вызов — пароль передаётся в теле POST-запроса, никогда в URL. Та же гарантия k-анонимности, что и у password-breach.
curl -X POST -H "Content-Type: application/json" -d '{"password":"..."}' https://presend.pages.dev/api/password-check
GET /api/email-disposable
Определяет одноразовые почтовые сервисы по списку из 576+ известных доменов.
curl "https://presend.pages.dev/api/email-disposable?email=foo@mailinator.com"
GET /api/email-verify
Объединяет проверку синтаксиса, поиск MX-записи, обнаружение одноразовых доменов и обнаружение общих аккаунтов (info@, admin@...) в одном вызове .
curl "https://presend.pages.dev/api/email-verify?email=foo@example.com"
GET /api/phone-verify
Проверяет и форматирует номер телефона (E.164, международный, национальный) через libphonenumber-js. Если страна не указана для номера без префикса «+», автоматически используется страна, определённая по IP-адресу вызывающего.
curl "https://presend.pages.dev/api/phone-verify?number=%2B14155552671"
GET /api/email-security
Проверяет защиту почты домена от подделки: надёжность SPF, политику DMARC и поиск DKIM по распространённым селекторам (без гарантии полноты).
curl "https://presend.pages.dev/api/email-security?domain=example.com"
GET /api/security-scan
Объединяет security-headers, url-reputation и subdomains в один отчёт с общей оценкой и вердиктом — один вызов вместо трёх.
curl "https://presend.pages.dev/api/security-scan?url=https://example.com"
POST /api/qr-scan
Декодирует QR-код из загруженного изображения и, если он ведёт на URL, проверяет его по URLhaus на признаки вредоносного ПО и фишинга — декодирование и проверка репутации за один вызов. Фишинг через QR-коды («квишинг») — один из самых быстро растущих видов фишинга.
curl -X POST -F "file=@qrcode.png" https://presend.pages.dev/api/qr-scan
GET /api/security-headers
Проверяет заголовки безопасности HTTP (CSP, HSTS, X-Frame-Options...) и выставляет буквенную оценку.
curl "https://presend.pages.dev/api/security-headers?url=https://example.com"
GET /api/url-reputation
Проверяет URL по URLhaus — публичной базе вредоносных и фишинговых ссылок.
curl "https://presend.pages.dev/api/url-reputation?url=https://example.com"
GET /api/subdomains
Пассивный поиск поддоменов по журналам Certificate Transparency (crt.sh) — для аудита вашей собственной поверхности атаки. Примечание: зависит от crt.sh, у которого бывают сбои, не зависящие от нас.
curl "https://presend.pages.dev/api/subdomains?domain=example.com"
GET /api/ai-crawler-check
Загружает robots.txt и показывает, каким известным ИИ-краулерам (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot и др.) доступ разрешён или запрещён. Бесплатно, без регистрации.
curl "https://presend.pages.dev/api/ai-crawler-check?domain=example.com"
GET /api/ip-reputation
Проверяет адрес IPv4 или IPv6 по курируемому списку сетевых блоков, которые, как известно, захвачены или контролируются спамерами и киберпреступными группами. Это один конкретный список, а не полноценная оценка репутации. Копия обновляется не чаще одного раза в день; ответ содержит дату списка, указание источника и флаг stale, если источник был недоступен так долго, что копии больше 48 часов. Для проверки каждого запроса в вашем собственном middleware обычно лучше загружать список локально.
curl "https://presend.pages.dev/api/ip-reputation?ip=1.2.3.4"
GET /api/dns-lookup
Записи A, AAAA, CNAME, MX, TXT и NS за один вызов через DNS-over-HTTPS-резолвер Cloudflare или один тип с type=.
curl "https://presend.pages.dev/api/dns-lookup?domain=example.com"
GET /api/whois-lookup
Регистратор, даты создания и окончания регистрации, возраст домена и серверы имён через RDAP — основанного на HTTPS преемника классического WHOIS.
curl "https://presend.pages.dev/api/whois-lookup?domain=example.com"
GET /api/redirect-trace
Проходит всю цепочку перенаправлений URL (до 15 шагов) и фиксирует код ответа и адрес каждого шага, а не только конечный URL.
curl "https://presend.pages.dev/api/redirect-trace?url=http://github.com"
Безопасность цепочки поставок
Проверки рисков зависимостей. typosquat-check и maintainer-change-check — эвристики: сигналы для разбора, а не вердикты.
GET /api/typosquat-check
Отмечает имена пакетов, очень похожие на имена из курируемого списка известных пакетов npm и PyPI (1 правка для имён из 4–7 символов, 2 — от 8; имена из 3 символов и короче нечётко не сравниваются). Имена PyPI нормализуются (PEP 503); проверенные легитимные «двойники» помечаются known_legitimate.
curl "https://presend.pages.dev/api/typosquat-check?ecosystem=npm&package=lodahs"
POST /api/typosquat-check
Пакетный режим: до 100 имён в одном запросе, который считается одним запросом для лимита. Некорректная запись возвращает ошибку для этой записи, не срывая весь пакет.
curl -X POST -H "Content-Type: application/json" -d '{"ecosystem":"npm","packages":["lodahs","expres","react"]}' https://presend.pages.dev/api/typosquat-check
GET /api/maintainer-change-check
npm и PyPI. Для npm отмечает случаи, когда ранее не встречавшийся издатель-человек перенимает пакет после 180+ дней бездействия, в течение последних 365 дней: схема, стоявшая за компрометацией event-stream (2018). Передача пакета издателю, который уже сопровождает другой пакет со 100 000+ загрузок в неделю, и переход на trusted publishing в npm сообщаются отдельно и не поднимают флаг. Взлом существующей учётной записи сопровождающего или вредоносный выпуск от исходного сопровождающего не обнаруживаются, так как личность издателя не меняется. Для PyPI сообщает только о существовании и возрасте: PyPI не раскрывает, кто опубликовал каждую версию, поэтому анализ издателей возвращает maintainer_analysis: "npm_only". Для обоих реестров first_published и package_age_days дают возраст пакета, а new_package равно true для пакета, впервые опубликованного менее 30 дней назад. Для PyPI возраст определяется по самому старому файлу, ещё присутствующему в PyPI: удалённые версии делают проект моложе.
curl "https://presend.pages.dev/api/maintainer-change-check?ecosystem=npm&package=lodash"
POST /api/maintainer-change-check
Пакетный режим: до 20 пакетов из одного реестра (npm или PyPI) в одном запросе, который считается одним запросом для лимита. Отсутствующий пакет или сбой реестра сообщаются для каждой записи, не срывая весь пакет.
curl -X POST -H "Content-Type: application/json" -d '{"ecosystem":"npm","packages":["lodash","express"]}' https://presend.pages.dev/api/maintainer-change-check
GET /api/vulnerability-check
Проверяет версию пакета по OSV.dev: npm, PyPI, Go, crates.io, Maven, RubyGems, Packagist, NuGet. Чтобы найти идентификатор CVE или GHSA напрямую, используйте cve-lookup. Без версии учитываются уязвимости любых версий (scope). Для npm и PyPI несуществующее имя возвращает found: false и vulnerable: null, а не «чистый» результат.
curl "https://presend.pages.dev/api/vulnerability-check?ecosystem=npm&package=lodash&version=4.17.15"
GET /api/repo-health-check
Звёзды, форки, открытые issues, лицензия, статус архивации и дни с последнего push для репозитория GitHub через GitHub REST API.
curl "https://presend.pages.dev/api/repo-health-check?repo=lodash/lodash"
GET /api/supply-chain-check
Объединяет maintainer-change-check (анализ издателей, только npm), vulnerability-check, typosquat-check и repo-health-check (репозиторий по возможности определяется из метаданных реестра) в один вызов с общим вердиктом. Пакет, впервые опубликованный менее 30 дней назад, получает флаг new_package, и итоговая оценка тогда не ниже review_recommended. Уязвимости проверяются для необязательного параметра version, а без него для последней опубликованной версии (version_checked, version_source).
curl "https://presend.pages.dev/api/supply-chain-check?ecosystem=npm&package=lodash"
Блокчейн
Бесплатные инструменты для экосистем Cosmos и EVM. Без регистрации и API-ключа.
GET /api/address-risk
Проверяет криптоадрес по всем спискам адресов цифровых валют из списка SDN (Specially Designated Nationals) OFAC. Адреса EVM (0x...) и Bitcoin (bc1..., 1..., 3...) покрыты полностью; адреса других сетей отмечаются, если они есть в списках. Для адресов Cosmos SDK (bech32), которых нет в списках, возвращается sanctioned: null, поскольку OFAC не публиковал записей для сетей Cosmos SDK.
curl "https://presend.pages.dev/api/address-risk?address=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
GET /api/tx-decode
Декодирует сырую подписанную транзакцию Cosmos SDK (байты protobuf TxRaw в base64) в читаемый JSON -- сообщения, комиссия, газ, данные подписанта, подписи. Без внешних зависимостей; декодирует распространённые типы сообщений bank/staking/gov/authz, включая вложенный MsgExec.
curl "https://presend.pages.dev/api/tx-decode?tx=CpwBCpEBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnEK..."
GET /api/rpc-check
Проверяет публичную RPC-точку CometBFT сети Cosmos SDK: статус узла, состояние, связность с пирами и не открыты ли небезопасные административные методы (dial_seeds, dial_peers, unsafe_flush_mempool). Только чтение -- сам никогда не вызывает небезопасных методов.
curl "https://presend.pages.dev/api/rpc-check?url=https://cosmos-rpc.publicnode.com"
Утилиты
Небольшие узкоспециализированные инструменты, по возможности без внешних зависимостей.
GET /api/iban-validate
Проверяет IBAN по контрольной сумме ISO 7064 mod-97 с проверкой длины для каждой страны. Чистый алгоритм -- без внешних источников данных.
curl "https://presend.pages.dev/api/iban-validate?iban=DE89370400440532013000"
GET /api/vat-validate
Проверяет номер плательщика НДС в ЕС в реальном времени через официальный сервис VIES Европейской комиссии -- для действительного номера возвращает зарегистрированные название и адрес компании.
curl "https://presend.pages.dev/api/vat-validate?country=IE&vat=6388047V"
GET /api/link-metadata
Извлекает метаданные Open Graph, Twitter Card и базовые метаданные <head> из URL -- те же данные, по которым мессенджеры строят карточку предпросмотра ссылки. Также возвращает favicon и итоговый URL после перенаправлений (каждое проверяется).
curl "https://presend.pages.dev/api/link-metadata?url=https://github.com/presendapp/presend-source"
GET /api/cve-lookup
Прямой поиск CVE/GHSA по идентификатору через OSV.dev. Дополняет vulnerability-check (которому нужны пакет, экосистема и версия), когда у вас уже есть идентификатор из отчёта сканера.
curl "https://presend.pages.dev/api/cve-lookup?id=CVE-2021-44228"
Цепочки workflow
Эти два эндпоинта объединяют несколько операций на стороне сервера в одном вызове . Обработка не сохраняет состояние: ничего не записывается на диск, ничего не логируется, файл удаляется сразу после отправки ответа.
POST /api/merge-and-compress-pdf
Объединяет 2 или более PDF-файлов в один документ, затем сжимает результат и удаляет метаданные (название, автор, производитель) — за один запрос вместо двух.
curl -X POST -F "files=@a.pdf" -F "files=@b.pdf" https://presend.pages.dev/api/merge-and-compress-pdf -o merged.pdf
POST /api/clean-image
Удаляет EXIF/GPS из JPEG и текстовые метаданные из PNG путём прямого бинарного разбора — пиксели никогда не перекодируются, поэтому нет потери качества (в отличие от подходов на основе canvas, которые всегда пересжимают).
curl -X POST --data-binary @photo.jpg -H "Content-Type: image/jpeg" https://presend.pages.dev/api/clean-image -o clean.jpg
POST /api/image-similarity
Перцептивный хеш (dHash) для 1 или 2 изображений JPEG/PNG. В отличие от криптографического хеша, он выдерживает повторное сжатие и мелкие правки — отправьте 2 изображения, чтобы сразу сравнить их с оценкой сходства и вердиктом.
curl -X POST -F "files=@a.jpg" -F "files=@b.png" https://presend.pages.dev/api/image-similarity
POST /api/text-similarity
SimHash для 1 или 2 текстов — текстовый аналог image-similarity. В отличие от криптографического хеша, находит перефразированные или слегка изменённые почти-дубликаты. Несвязанные тексты обычно случайно дают около 50 %, а не 0 %.
curl -X POST -H "Content-Type: application/json" -d '{"texts":["text a","text b"]}' https://presend.pages.dev/api/text-similarity
Клиентские инструменты (встраивание)
Большинство инструментов для обработки файлов (удаление EXIF, сжатие PDF и т.д.) также полностью работают в браузере как самостоятельные виджеты — ничего не загружается. Используйте их вместо API выше, если вам нужен готовый интерфейс, а не вызов сервера. Встраивайте напрямую:
<iframe src="https://presend.pages.dev/tools/exif-remover?embed=1" width="100%" height="600" frameborder="0" ></iframe>
Доступные инструменты
File Hash Checker
SHA-256 / SHA-1 / SHA-512 — доступен серверный API
URL Cleaner
Удаление параметров отслеживания — доступен серверный API
IP Geolocation
IP, местоположение, валюта — доступен серверный API
UUID Generator
Случайные UUID — доступен серверный API
Base64 Encoder/Decoder
Кодирование/декодирование текста — доступен серверный API
JWT Decoder
Декодирование JWT-токенов — доступен серверный API
Timestamp Converter
Преобразование дат Unix/ISO — серверный API
Color Converter
Hex/RGB/HSL — серверный API
User-Agent Parser
Определение браузера/ОС — серверный API
Password Generator API
Надёжные пароли с оценкой энтропии — серверный API
Email Validator
Синтаксис + MX-запись — серверный API
Favicon Fetcher
Фавиконка любого сайта — серверный API
CSV/JSON Converter
В обе стороны — серверный API
Password Breach Check
На основе HIBP — серверный API
Disposable Email Detector
576+ известных доменов — серверный API
Security Headers Analyzer
Оценка CSP, HSTS — серверный API
URL Reputation Check
Поиск вредоносных и фишинговых ссылок — серверный API
Attack Surface Discovery
Пассивный поиск поддоменов — серверный API
Address Risk Check
Проверка санкций OFAC (EVM, Bitcoin) — серверный API
Cosmos Tx Decoder
Декодирование сырых транзакций Cosmos SDK — серверный API
RPC Check
Аудит RPC-точки CometBFT — серверный API
EXIF Remover
Удаление GPS и метаданных из фото (в браузере)
PDF Compress
Уменьшение размера PDF (в браузере)
Password Generator
Криптографически стойкие пароли (в браузере)
npm-пакет
JS-клиент без зависимостей, оборачивающий все эндпоинты выше.
npm install presend-api
const presend = require('presend-api');
const { uuids } = await presend.generateUuid(3);
Встраиваемый виджет
Добавьте рабочий инструмент прямо на свой сайт — без iframe, работает напрямую через наш API. Поддерживает: url-cleaner, uuid, color.
<div data-presend-tool="url-cleaner"></div> <script src="https://presend.pages.dev/widget.js" async></script>
Добавьте data-badge="false" чтобы скрыть ссылку «Powered by Presend».
Спецификация OpenAPI
Машиночитаемая спецификация для всех серверных эндпоинтов: openapi.json
RapidAPI
Также доступно на RapidAPI — отдельными карточками по направлениям, если вам нужна только часть каталога:
- Presend API -- полный каталог (Cybersecurity)
- Presend Blockchain & Crypto Compliance API -- проверки OFAC, декодирование транзакций Cosmos SDK, аудит RPC (Finance)
- Presend Email & Phone Verification API -- проверка email-адресов и телефонов (Email)
- Presend Developer Tools API -- UUID, Base64, временные метки, IP-геолокация, инструменты для PDF и изображений (Tools)
Статус
Доступность в реальном времени: независимый мониторинг из 4 регионов (ЕС, США, Азия, Австралия), проверка каждые 3 минуты.
Коллекция Postman
Готовая к импорту коллекция со всеми 48 эндпоинтами, сгенерированная из спецификации OpenAPI выше.
Или скачайте исходный файл: postman_collection.json.
Открытый исходный код
Все инструменты имеют открытый исходный код. Внесите вклад на GitHub или сделайте форк для своих проектов. github.com/presendapp/presend-source