API Presend para desenvolvedores

Endpoints de servidor gratuitos para tarefas comuns, além de ferramentas incorporáveis no cliente. Sem chave de API. Sem cadastro.

Endpoints de servidor

Rodam na rede edge da Cloudflare e retornam JSON. Apenas uso justo — sem SLA oficial, tráfego pesado ou automatizado pode ser limitado sem aviso.

Usuários de Python: requisições enviadas com o User-Agent padrão do urllib (Python-urllib/3.x) são rejeitadas pelo Cloudflare com HTTP 403 e o corpo error code: 1010. Defina qualquer User-Agent explícito. requests, curl e Node enviam um que é aceito.

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

Retorna SHA-256, SHA-1 e SHA-512 de qualquer arquivo de até 20 MB.

curl -X POST --data-binary @file.pdf \
  https://presend.pages.dev/api/hash

# {"size_bytes":17,"hashes":{"sha256":"...","sha1":"...","sha512":"..."}}

POST /api/file-type

Detecta o tipo real de um arquivo pela sua assinatura binária e aponta divergência em relação ao Content-Type declarado: pega arquivos disfarçados (por exemplo, um executável renomeado como foto) que passam por filtros de upload ingênuos.

curl -X POST --data-binary @suspicious.jpg -H "Content-Type: image/jpeg" https://presend.pages.dev/api/file-type

POST /api/malware-check

Calcula o hash (SHA-256) de um arquivo enviado e o verifica no MalwareBazaar (abuse.ch), um banco de dados gratuito de amostras de malware conhecidas: hash e verificação em uma única chamada.

curl -X POST --data-binary @file.exe https://presend.pages.dev/api/malware-check

GET /api/url-clean

Remove mais de 60 parâmetros de rastreamento (utm_*, fbclid, gclid...) de uma URL.

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

O mesmo, em lote: até 100 URLs por requisição.

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

Retorna o IP de quem faz a chamada com geolocalização, moeda, idioma e indicadores de UE e VPN.

curl https://presend.pages.dev/api/ip

GET /api/uuid

Gera UUIDs aleatórios (v4), até 100 por requisição.

curl "https://presend.pages.dev/api/uuid?count=5"

GET /api/base64

Codifica ou decodifica texto em Base64.

curl "https://presend.pages.dev/api/base64?action=encode&text=hello"

GET /api/jwt-decode

Decodifica o cabeçalho e o payload de um JWT (sem verificar a assinatura; para isso, use jwt-verify).

curl "https://presend.pages.dev/api/jwt-decode?token=eyJhbGci..."

POST /api/jwt-verify

Verifica de fato a assinatura criptográfica de um JWT (HS256/384/512, RS/PS256/384/512, ES256/384/512) pela API Web Crypto nativa dos Workers, além de checar as claims exp/nbf. Forneça um “secret” para HMAC, ou um “jwk”/“jwks_url” para algoritmos assimétricos.

curl -X POST -H "Content-Type: application/json" -d '{"token":"...","secret":"..."}' https://presend.pages.dev/api/jwt-verify

GET /api/timestamp

Hora atual, ou conversão entre timestamp Unix e data ISO.

curl "https://presend.pages.dev/api/timestamp?unix=1700000000"

GET /api/color

Converte entre os formatos de cor hex, RGB e HSL.

curl "https://presend.pages.dev/api/color?hex=ff5733"

GET /api/user-agent

Analisa uma string User-Agent em navegador, sistema operacional e tipo de dispositivo.

curl "https://presend.pages.dev/api/user-agent"

GET /api/password

Gera uma senha criptograficamente segura com estimativa de entropia.

curl "https://presend.pages.dev/api/password?length=20&symbols=1"

GET /api/email-validate

Valida a sintaxe do e-mail e verifica se o domínio tem um registro MX. Não sonda a caixa de correio, então não pode confirmar que o endereço existe; use email-verify para também detectar domínios descartáveis e contas funcionais.

curl "https://presend.pages.dev/api/email-validate?email=foo@example.com"

GET /api/favicon

Obtém a URL do favicon de qualquer domínio.

curl "https://presend.pages.dev/api/favicon?domain=github.com"

GET/POST /api/csv-json

Converte entre JSON e CSV. Objetos aninhados viram strings, não são achatados.

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

Verifica se uma senha aparece em vazamentos de dados conhecidos (Have I Been Pwned). Apenas os 5 primeiros caracteres do hash SHA-1 dela são enviados ao HIBP (k-anonimato), e o Presend não a registra. Mas é uma requisição GET, então a senha trafega na URL, onde navegadores, proxies ou logs de servidor podem registrá-la: para senhas reais, use POST /api/password-check.

curl "https://presend.pages.dev/api/password-breach?password=..."

POST /api/password-check

Combina pontuação de força/entropia com uma verificação opcional de vazamento em uma única chamada — a senha viaja no corpo da requisição POST, nunca em uma URL. Mesma garantia de k-anonimato do password-breach.

curl -X POST -H "Content-Type: application/json" -d '{"password":"..."}' https://presend.pages.dev/api/password-check

GET /api/email-disposable

Detecta provedores de e-mail descartáveis a partir de uma lista de mais de 576 domínios conhecidos.

curl "https://presend.pages.dev/api/email-disposable?email=foo@mailinator.com"

GET /api/email-verify

Combina verificação de sintaxe, consulta MX, detecção de domínio descartável e detecção de conta genérica (info@, admin@...) em uma única chamada .

curl "https://presend.pages.dev/api/email-verify?email=foo@example.com"

GET /api/phone-verify

Valida e formata um número de telefone (E.164, internacional, nacional) via libphonenumber-js. Se nenhum país for informado para um número sem prefixo "+", o país inferido pelo IP do solicitante é usado automaticamente.

curl "https://presend.pages.dev/api/phone-verify?number=%2B14155552671"

GET /api/email-security

Verifica a configuração antifalsificação de e-mail de um domínio: força do SPF, política DMARC e uma busca DKIM de melhor esforço em seletores comuns.

curl "https://presend.pages.dev/api/email-security?domain=example.com"

GET /api/security-scan

Combina security-headers, url-reputation e subdomains em um único relatório com pontuação geral e veredito: uma chamada em vez de três.

curl "https://presend.pages.dev/api/security-scan?url=https://example.com"

POST /api/qr-scan

Decodifica um QR code de uma imagem enviada e, se ele apontar para uma URL, verifica-a no URLhaus em busca de indícios de malware ou phishing: decodificação e verificação de reputação em uma única chamada. O phishing por QR code (“quishing”) é um dos vetores de phishing que mais crescem.

curl -X POST -F "file=@qrcode.png" https://presend.pages.dev/api/qr-scan

GET /api/security-headers

Audita os cabeçalhos de segurança HTTP (CSP, HSTS, X-Frame-Options...) e atribui uma nota por letra.

curl "https://presend.pages.dev/api/security-headers?url=https://example.com"

GET /api/url-reputation

Verifica uma URL no URLhaus, um banco de dados público de malware e phishing.

curl "https://presend.pages.dev/api/url-reputation?url=https://example.com"

GET /api/subdomains

Descoberta passiva de subdomínios pelos logs de Certificate Transparency (crt.sh), para auditar a sua própria superfície de ataque. Observação: depende do crt.sh, que tem instabilidades ocasionais fora do nosso controle.

curl "https://presend.pages.dev/api/subdomains?domain=example.com"

GET /api/ai-crawler-check

Busca o robots.txt e informa quais crawlers de IA conhecidos (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot etc.) estão permitidos ou bloqueados. Grátis, sem cadastro.

curl "https://presend.pages.dev/api/ai-crawler-check?domain=example.com"

GET /api/ip-reputation

Verifica um endereço IPv4 ou IPv6 em uma lista curada de blocos de rede sabidamente sequestrados ou controlados por operações de spam ou crime cibernético. Uma lista específica, não uma pontuação de reputação completa. A cópia é atualizada no máximo uma vez por dia; a resposta inclui a data da lista, a atribuição e um indicador stale se a fonte ficou inacessível tempo suficiente para a cópia ter mais de 48 horas. Para verificar cada requisição no seu próprio middleware, carregar a lista localmente costuma ser o melhor desenho.

curl "https://presend.pages.dev/api/ip-reputation?ip=1.2.3.4"

GET /api/dns-lookup

Registros A, AAAA, CNAME, MX, TXT e NS em uma única chamada pelo resolvedor DNS sobre HTTPS do Cloudflare, ou um único tipo com type=.

curl "https://presend.pages.dev/api/dns-lookup?domain=example.com"

GET /api/whois-lookup

Registrador, datas de criação e expiração, idade do domínio e servidores de nomes via RDAP, o sucessor do WHOIS tradicional baseado em HTTPS.

curl "https://presend.pages.dev/api/whois-lookup?domain=example.com"

GET /api/redirect-trace

Segue a cadeia completa de redirecionamentos de uma URL (até 15 saltos) e registra o código de status e o destino de cada salto, não apenas a URL final.

curl "https://presend.pages.dev/api/redirect-trace?url=http://github.com"

Segurança da cadeia de suprimentos

Verificações de risco de dependências. typosquat-check e maintainer-change-check são heurísticas: sinais para triagem, não vereditos.

GET /api/typosquat-check

Aponta nomes de pacotes muito parecidos com os de uma lista curada de pacotes npm e PyPI conhecidos (1 edição para nomes de 4 a 7 caracteres, 2 a partir de 8; nomes de 3 caracteres ou menos não passam por comparação aproximada). Os nomes do PyPI são normalizados (PEP 503); sósias legítimos revisados são marcados com known_legitimate.

curl "https://presend.pages.dev/api/typosquat-check?ecosystem=npm&package=lodahs"

POST /api/typosquat-check

Modo em lote: até 100 nomes por requisição, contados como uma única requisição no limite de uso. Uma entrada inválida retorna um erro para essa entrada sem derrubar o lote.

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 e PyPI. No npm, aponta quando um publicador humano nunca visto antes assume um pacote após mais de 180 dias de inatividade, nos últimos 365 dias: o padrão por trás do comprometimento do event-stream (2018). Passagens para um publicador que já mantém outro pacote com mais de 100.000 downloads semanais, e a migração para o trusted publishing do npm, são relatadas à parte, sem levantar o alerta. Não detecta uma conta de mantenedor existente sequestrada nem uma versão maliciosa publicada pelo mantenedor original, já que a identidade do publicador não muda. No PyPI, informa apenas existência e idade: o PyPI não expõe quem publicou cada versão, por isso a análise de publicadores retorna maintainer_analysis: "npm_only". Nos dois registros, first_published e package_age_days dão a idade do pacote, e new_package é true para um pacote publicado pela primeira vez há menos de 30 dias. No PyPI, a idade é a do arquivo mais antigo ainda presente: versões excluídas fazem um projeto parecer mais novo.

curl "https://presend.pages.dev/api/maintainer-change-check?ecosystem=npm&package=lodash"

POST /api/maintainer-change-check

Modo em lote: até 20 pacotes de um mesmo registro (npm ou PyPI) por requisição, contados como uma única requisição no limite de uso. Um pacote inexistente ou uma falha do registro é relatado por entrada, sem derrubar o lote.

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

Verifica uma versão de pacote no OSV.dev: npm, PyPI, Go, crates.io, Maven, RubyGems, Packagist, NuGet. Para consultar diretamente um identificador CVE ou GHSA, use cve-lookup. Sem versão, são contados os avisos que afetam qualquer versão (scope). No npm e no PyPI, um nome que não existe devolve found: false e vulnerable: null, nunca um resultado limpo.

curl "https://presend.pages.dev/api/vulnerability-check?ecosystem=npm&package=lodash&version=4.17.15"

GET /api/repo-health-check

Estrelas, forks, issues abertas, licença, status de arquivamento e dias desde o último push de um repositório do GitHub, pela API REST do GitHub.

curl "https://presend.pages.dev/api/repo-health-check?repo=lodash/lodash"

GET /api/supply-chain-check

Combina maintainer-change-check (análise de publicadores, somente npm), vulnerability-check, typosquat-check e repo-health-check (repositório obtido dos metadados do registro quando possível) em uma única chamada com veredito geral. Um pacote publicado pela primeira vez há menos de 30 dias é marcado como new_package, e o veredito passa a ser no mínimo review_recommended. As vulnerabilidades são verificadas para o parâmetro opcional version ou, na falta dele, para a última versão publicada (version_checked, version_source).

curl "https://presend.pages.dev/api/supply-chain-check?ecosystem=npm&package=lodash"

Blockchain

Ferramentas gratuitas para os ecossistemas Cosmos e EVM. Sem cadastro, sem chave de API.

GET /api/address-risk

Verifica um endereço cripto em todas as listas de endereços de moedas digitais da lista SDN (Specially Designated Nationals) da OFAC. Endereços EVM (0x...) e Bitcoin (bc1..., 1..., 3...) têm cobertura completa; endereços de outras redes são apontados quando listados. Endereços Cosmos SDK (bech32) retornam sanctioned: null quando não listados, pois a OFAC não publicou nenhuma entrada para redes Cosmos SDK.

curl "https://presend.pages.dev/api/address-risk?address=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"

GET /api/tx-decode

Decodifica uma transação Cosmos SDK bruta e assinada (bytes TxRaw em protobuf, base64) em JSON legível -- mensagens, taxa, gas, informações do signatário, assinaturas. Sem dependência externa; decodifica os tipos de mensagem comuns de bank/staking/gov/authz, incluindo MsgExec aninhado.

curl "https://presend.pages.dev/api/tx-decode?tx=CpwBCpEBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnEK..."

GET /api/rpc-check

Audita um endpoint RPC público do CometBFT de uma rede Cosmos SDK: status do nó, saúde, conectividade com pares e se métodos administrativos inseguros (dial_seeds, dial_peers, unsafe_flush_mempool) parecem estar expostos. Somente leitura -- nunca invoca nenhum método inseguro.

curl "https://presend.pages.dev/api/rpc-check?url=https://cosmos-rpc.publicnode.com"

Utilitários

Ferramentas pequenas e focadas, sem dependência externa sempre que possível.

GET /api/iban-validate

Valida um IBAN pela soma de verificação ISO 7064 mod-97, com checagem de comprimento por país. Algoritmo puro -- sem fonte de dados externa.

curl "https://presend.pages.dev/api/iban-validate?iban=DE89370400440532013000"

GET /api/vat-validate

Valida um número de IVA da UE em tempo real pelo serviço oficial VIES da Comissão Europeia -- retorna o nome e o endereço registrados da empresa quando válido.

curl "https://presend.pages.dev/api/vat-validate?country=IE&vat=6388047V"

Extrai metadados Open Graph, Twitter Card e básicos do <head> de uma URL -- os mesmos dados usados por apps de chat para exibir a prévia de um link. Também retorna o favicon e, após seguir os redirecionamentos (cada um verificado), a URL final.

curl "https://presend.pages.dev/api/link-metadata?url=https://github.com/presendapp/presend-source"

GET /api/cve-lookup

Consulta direta de CVE/GHSA por identificador via OSV.dev. Complementa o vulnerability-check (que exige pacote, ecossistema e versão) quando você já tem um identificador de um relatório de scanner.

curl "https://presend.pages.dev/api/cve-lookup?id=CVE-2021-44228"

Fluxos encadeados

Esses dois endpoints encadeiam múltiplas operações no servidor em uma única chamada . O processamento não mantém estado: nada é gravado em disco, nada é registrado, o arquivo é descartado assim que a resposta é enviada.

POST /api/merge-and-compress-pdf

Combina 2 ou mais arquivos PDF em um único documento, depois comprime o resultado e remove metadados (título, autor, produtor) — em uma única requisição em vez de duas.

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

Remove EXIF/GPS de JPEG e metadados de texto de PNG via análise binária direta — os pixels nunca são recodificados, portanto não há perda de qualidade (diferente das abordagens baseadas em canvas, que sempre recomprimem).

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

Hash perceptual (dHash) para 1 ou 2 imagens JPEG/PNG. Ao contrário de um hash criptográfico, resiste a recompressão e pequenas edições: envie 2 imagens para compará-las diretamente com uma pontuação de similaridade e um veredito.

curl -X POST -F "files=@a.jpg" -F "files=@b.png" https://presend.pages.dev/api/image-similarity

POST /api/text-similarity

SimHash para 1 ou 2 textos: o equivalente para texto do image-similarity. Detecta conteúdo quase duplicado, parafraseado ou levemente editado, ao contrário de um hash criptográfico. Textos sem relação costumam pontuar ~50% por acaso, não 0%.

curl -X POST -H "Content-Type: application/json" -d '{"texts":["text a","text b"]}' https://presend.pages.dev/api/text-similarity

Ferramentas no cliente (incorporar)

A maioria das ferramentas de processamento de arquivos (remoção de EXIF, compressão de PDF etc.) também roda inteiramente no navegador como widgets independentes — nada é enviado. Use-as em vez da API acima quando quiser uma interface pronta em vez de uma chamada ao servidor. Incorpore diretamente:

<iframe 
  src="https://presend.pages.dev/tools/exif-remover?embed=1" 
  width="100%" 
  height="600" 
  frameborder="0"
></iframe>

Ferramentas disponíveis

File Hash Checker

SHA-256 / SHA-1 / SHA-512 — API de servidor disponível

Docs →

URL Cleaner

Remove parâmetros de rastreamento — API de servidor disponível

Docs →

IP Geolocation

IP, localização, moeda — API de servidor disponível

Docs →

UUID Generator

UUIDs aleatórios — API de servidor disponível

Docs →

Base64 Encoder/Decoder

Codifica/decodifica texto — API de servidor disponível

Docs →

JWT Decoder

Decodifica tokens JWT — API de servidor disponível

Docs →

Timestamp Converter

Conversão de datas Unix/ISO — API de servidor

Docs →

Color Converter

Hex/RGB/HSL — API de servidor

Docs →

User-Agent Parser

Detecção de navegador/SO — API de servidor

Docs →

Password Generator API

Senhas seguras com entropia — API de servidor

Docs →

Email Validator

Sintaxe + registro MX — API de servidor

Docs →

Favicon Fetcher

Favicon de qualquer site — API de servidor

Docs →

CSV/JSON Converter

Bidirecional — API de servidor

Docs →

Password Breach Check

Baseado no HIBP — API de servidor

Docs →

Disposable Email Detector

Mais de 576 domínios conhecidos — API de servidor

Docs →

Security Headers Analyzer

Nota CSP, HSTS — API de servidor

Docs →

URL Reputation Check

Consulta de malware/phishing — API de servidor

Docs →

Attack Surface Discovery

Enumeração passiva de subdomínios — API de servidor

Docs →

Address Risk Check

Verificação de sanções da OFAC (EVM, Bitcoin) — API de servidor

Docs →

Cosmos Tx Decoder

Decodifica transações Cosmos SDK brutas — API de servidor

Docs →

RPC Check

Audita um endpoint RPC do CometBFT — API de servidor

Docs →

EXIF Remover

Remove GPS e metadados de fotos (no cliente)

Docs →

PDF Compress

Reduz o tamanho de arquivos PDF (no cliente)

Docs →

Password Generator

Senhas criptograficamente seguras (no cliente)

Docs →

Pacote npm

Um cliente JS sem dependências que envolve todos os endpoints acima.

npm install presend-api
const presend = require('presend-api');
const { uuids } = await presend.generateUuid(3);

Ver no npm

Widget incorporável

Adicione uma ferramenta funcional diretamente no seu site — sem iframe, alimentada diretamente pela nossa API. Suporta: url-cleaner, uuid, color.

<div data-presend-tool="url-cleaner"></div>
<script src="https://presend.pages.dev/widget.js" async></script>

Adicione data-badge="false" para ocultar o link de crédito "Powered by Presend".

Especificação OpenAPI

Especificação legível por máquina para todos os endpoints de servidor: openapi.json

RapidAPI

Também disponível no RapidAPI, em fichas separadas por área se você só precisa de uma parte do catálogo:

Status

Disponibilidade ao vivo, monitorada de forma independente a partir de 4 regiões (UE, EUA, Ásia, Austrália), verificada a cada 3 minutos.

presend.betteruptime.com

Coleção do Postman

Coleção pronta para importar cobrindo os 48 endpoints, gerada a partir da especificação OpenAPI acima.

Run in Postman

Ou baixe o arquivo bruto: postman_collection.json.

Código aberto

Todas as ferramentas são de código aberto. Contribua no GitHub ou faça um fork para seus próprios projetos. github.com/presendapp/presend-source