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"

Извлекает метаданные 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);

Смотреть на npm

Встраиваемый виджет

Добавьте рабочий инструмент прямо на свой сайт — без 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 — отдельными карточками по направлениям, если вам нужна только часть каталога:

Статус

Доступность в реальном времени: независимый мониторинг из 4 регионов (ЕС, США, Азия, Австралия), проверка каждые 3 минуты.

presend.betteruptime.com

Коллекция Postman

Готовая к импорту коллекция со всеми 48 эндпоинтами, сгенерированная из спецификации OpenAPI выше.

Run in Postman

Или скачайте исходный файл: postman_collection.json.

Открытый исходный код

Все инструменты имеют открытый исходный код. Внесите вклад на GitHub или сделайте форк для своих проектов. github.com/presendapp/presend-source