API Presend pour développeurs
Points de terminaison serveur gratuits pour des tâches courantes, plus des outils intégrables côté client. Aucune clé API requise. Aucune inscription.
Points de terminaison serveur
Hébergés sur le réseau edge de Cloudflare, ils renvoient du JSON. Usage raisonnable uniquement — aucun SLA officiel, un trafic intensif ou automatisé peut être limité sans préavis.
Utilisateurs Python : les requêtes envoyées avec le User-Agent par défaut d'urllib (Python-urllib/3.x) sont refusées par Cloudflare avec une erreur HTTP 403 et le corps error code: 1010. Définissez n'importe quel User-Agent explicite. requests, curl et Node en envoient un qui est accepté.
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
Renvoie les empreintes SHA-256, SHA-1 et SHA-512 de n'importe quel fichier jusqu'à 20 Mo.
curl -X POST --data-binary @file.pdf \
https://presend.pages.dev/api/hash
# {"size_bytes":17,"hashes":{"sha256":"...","sha1":"...","sha512":"..."}}
POST /api/file-type
Détecte le vrai type d'un fichier à partir de sa signature binaire et signale un écart avec le Content-Type annoncé : repère les fichiers déguisés (par exemple un exécutable renommé en photo) qui échappent aux filtres d'upload naïfs.
curl -X POST --data-binary @suspicious.jpg -H "Content-Type: image/jpeg" https://presend.pages.dev/api/file-type
POST /api/malware-check
Calcule l'empreinte SHA-256 d'un fichier envoyé et la compare à MalwareBazaar (abuse.ch), une base gratuite d'échantillons de malwares connus : empreinte et vérification en un seul appel.
curl -X POST --data-binary @file.exe https://presend.pages.dev/api/malware-check
GET /api/url-clean
Supprime plus de 60 paramètres de suivi (utm_*, fbclid, gclid...) d'une 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
Idem, en lot : jusqu'à 100 URL par requête.
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
Renvoie l'IP de l'appelant avec sa géolocalisation, sa devise, sa langue et des indicateurs UE/VPN.
curl https://presend.pages.dev/api/ip
GET /api/uuid
Génère des UUID aléatoires (v4), jusqu'à 100 par requête.
curl "https://presend.pages.dev/api/uuid?count=5"
GET /api/base64
Encode ou décode du texte en Base64.
curl "https://presend.pages.dev/api/base64?action=encode&text=hello"
GET /api/jwt-decode
Décode l'en-tête et la charge utile d'un JWT (sans vérifier la signature ; pour cela, utilisez jwt-verify).
curl "https://presend.pages.dev/api/jwt-decode?token=eyJhbGci..."
POST /api/jwt-verify
Vérifie réellement la signature cryptographique d'un JWT (HS256/384/512, RS/PS256/384/512, ES256/384/512) via l'API Web Crypto native des Workers, avec contrôle des claims exp/nbf. Fournir un « secret » pour HMAC, ou un « jwk »/« jwks_url » pour les algorithmes asymétriques.
curl -X POST -H "Content-Type: application/json" -d '{"token":"...","secret":"..."}' https://presend.pages.dev/api/jwt-verify
GET /api/timestamp
Heure actuelle, ou conversion entre timestamp Unix et date ISO.
curl "https://presend.pages.dev/api/timestamp?unix=1700000000"
GET /api/color
Conversion entre les formats de couleur hex, RGB et HSL.
curl "https://presend.pages.dev/api/color?hex=ff5733"
GET /api/user-agent
Analyse une chaîne User-Agent : navigateur, système d'exploitation et type d'appareil.
curl "https://presend.pages.dev/api/user-agent"
GET /api/password
Génère un mot de passe cryptographiquement sûr, avec une estimation de son entropie.
curl "https://presend.pages.dev/api/password?length=20&symbols=1"
GET /api/email-validate
Valide la syntaxe d'un e-mail et vérifie que le domaine possède un enregistrement MX. Ne sonde pas la boîte aux lettres : cela ne prouve donc pas que l'adresse existe. Pour détecter aussi les domaines jetables et les comptes génériques, utilisez email-verify.
curl "https://presend.pages.dev/api/email-validate?email=foo@example.com"
GET /api/favicon
Renvoie l'URL du favicon déclaré par un site ; si aucune icône n'est déclarée, une URL par défaut est renvoyée et signalée comme telle.
curl "https://presend.pages.dev/api/favicon?domain=github.com"
GET/POST /api/csv-json
Convertit entre JSON et CSV. Les objets imbriqués sont sérialisés en chaîne, pas aplatis.
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
Vérifie si un mot de passe figure dans des fuites de données connues (Have I Been Pwned). Seuls les 5 premiers caractères de son empreinte SHA-1 sont envoyés à HIBP (k-anonymat), et Presend ne l'enregistre pas. Mais c'est une requête GET : le mot de passe circule dans l'URL, que navigateurs, proxys ou journaux serveur peuvent conserver. Pour de vrais mots de passe, utilisez POST /api/password-check.
curl "https://presend.pages.dev/api/password-breach?password=..."
POST /api/password-check
Combine l'estimation de force/entropie avec une vérification optionnelle de fuite en un seul appel — le mot de passe transite dans le corps de la requête POST, jamais dans une URL. Même garantie de k-anonymat que password-breach.
curl -X POST -H "Content-Type: application/json" -d '{"password":"..."}' https://presend.pages.dev/api/password-check
GET /api/email-disposable
Détecte les fournisseurs d'e-mails jetables à partir d'une liste de 576 domaines connus.
curl "https://presend.pages.dev/api/email-disposable?email=foo@mailinator.com"
GET /api/email-verify
Combine la vérification de syntaxe, la recherche MX, la détection de domaine jetable et la détection de compte générique (info@, admin@...) en un seul appel, gratuit et sans clé. Ne sonde pas la boîte aux lettres.
curl "https://presend.pages.dev/api/email-verify?email=foo@example.com"
GET /api/phone-verify
Valide et formate un numéro de téléphone (E.164, international, national) via libphonenumber-js. Si aucun pays n'est fourni pour un numéro sans préfixe « + », le pays déduit de l'IP de l'appelant est utilisé automatiquement.
curl "https://presend.pages.dev/api/phone-verify?number=%2B14155552671"
GET /api/email-security
Vérifie la configuration anti-usurpation e-mail d'un domaine : robustesse SPF, politique DMARC et recherche DKIM au mieux sur des sélecteurs courants.
curl "https://presend.pages.dev/api/email-security?domain=example.com"
GET /api/security-scan
Combine security-headers, url-reputation et subdomains en un seul rapport avec un score global et un verdict : un appel au lieu de trois.
curl "https://presend.pages.dev/api/security-scan?url=https://example.com"
POST /api/qr-scan
Décode un QR code depuis une image envoyée et, s'il pointe vers une URL, la vérifie auprès d'URLhaus (indicateurs de malware ou de phishing) : décodage et vérification de réputation en un seul appel. Le phishing par QR code (« quishing ») est l'un des vecteurs de phishing en plus forte croissance.
curl -X POST -F "file=@qrcode.png" https://presend.pages.dev/api/qr-scan
GET /api/security-headers
Audite les en-têtes de sécurité HTTP (CSP, HSTS, X-Frame-Options...) et attribue une note sous forme de lettre.
curl "https://presend.pages.dev/api/security-headers?url=https://example.com"
GET /api/url-reputation
Vérifie une URL auprès d'URLhaus, une base publique de malwares et de phishing.
curl "https://presend.pages.dev/api/url-reputation?url=https://example.com"
GET /api/subdomains
Découverte passive de sous-domaines via les journaux Certificate Transparency (crt.sh), pour auditer votre propre surface d'attaque. Dépend de crt.sh, qui connaît parfois des interruptions indépendantes de notre volonté.
curl "https://presend.pages.dev/api/subdomains?domain=example.com"
GET /api/ai-crawler-check
Récupère le robots.txt et indique quels robots d'IA connus (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, etc.) sont autorisés ou bloqués. Gratuit, sans inscription.
curl "https://presend.pages.dev/api/ai-crawler-check?domain=example.com"
GET /api/ip-reputation
Vérifie une adresse IPv4 ou IPv6 contre une liste de blocs réseau connus pour être détournés ou contrôlés par des opérations de spam ou de cybercriminalité. Une liste précise, pas un score de réputation complet. La copie est rafraîchie au plus une fois par jour ; la réponse indique la date de la liste, l'attribution, et un indicateur stale si la source est injoignable au point que la copie a plus de 48 heures. Pour un contrôle à chaque requête dans votre propre middleware, charger la liste en local est généralement la meilleure conception.
curl "https://presend.pages.dev/api/ip-reputation?ip=1.2.3.4"
GET /api/dns-lookup
Enregistrements A, AAAA, CNAME, MX, TXT et NS en un seul appel via le résolveur DNS-over-HTTPS de Cloudflare, ou un seul type avec type=.
curl "https://presend.pages.dev/api/dns-lookup?domain=example.com"
GET /api/whois-lookup
Registraire, dates de création et d'expiration, âge du domaine et serveurs de noms via RDAP, le successeur HTTPS du WHOIS historique.
curl "https://presend.pages.dev/api/whois-lookup?domain=example.com"
GET /api/redirect-trace
Suit toute la chaîne de redirections d'une URL (jusqu'à 15 sauts) et enregistre le code de statut et la destination de chaque saut, pas seulement l'URL finale.
curl "https://presend.pages.dev/api/redirect-trace?url=http://github.com"
Sécurité de la chaîne d'approvisionnement
Contrôles de risque sur les dépendances. typosquat-check et maintainer-change-check sont des heuristiques : des signaux de tri, pas des verdicts.
GET /api/typosquat-check
Signale les noms de paquets très proches d'une liste de paquets npm et PyPI connus (1 modification pour les noms de 4 à 7 caractères, 2 à partir de 8 ; les noms de 3 caractères ou moins ne sont pas comparés de façon approchée). Les noms PyPI sont normalisés (PEP 503) ; les voisins légitimes revus sont marqués known_legitimate.
curl "https://presend.pages.dev/api/typosquat-check?ecosystem=npm&package=lodahs"
POST /api/typosquat-check
Mode lot : jusqu'à 100 noms par requête, comptés comme une seule requête pour la limite de débit. Une entrée invalide renvoie une erreur pour cette entrée sans faire échouer le lot.
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 et PyPI. Sur npm, signale la reprise d'un paquet par un publieur humain jamais vu auparavant, après au moins 180 jours d'inactivité, au cours des 365 derniers jours : le schéma de la compromission event-stream (2018). Les passations vers un publieur qui maintient déjà un autre paquet à plus de 100 000 téléchargements hebdomadaires, et les passages au trusted publishing npm, sont signalés à part sans lever l'alerte. Il ne détecte pas un compte de mainteneur existant piraté ni une version malveillante publiée par le mainteneur d'origine, puisque l'identité du publieur ne change pas. Sur PyPI, il indique seulement l'existence et l'âge : PyPI ne publie pas qui a déposé chaque version, donc l'analyse des publieurs renvoie maintainer_analysis: "npm_only". Sur les deux registres, first_published et package_age_days donnent l'âge du paquet, et new_package vaut true pour un paquet publié pour la première fois il y a moins de 30 jours. Sur PyPI, l'âge est celui du plus ancien fichier encore présent : des versions supprimées rajeunissent un projet.
curl "https://presend.pages.dev/api/maintainer-change-check?ecosystem=npm&package=lodash"
POST /api/maintainer-change-check
Mode lot : jusqu'à 20 paquets d'un même registre (npm ou PyPI) par requête, comptés comme une seule requête pour la limite de débit. Un paquet introuvable ou une panne du registre est signalé entrée par entrée, sans faire échouer le lot.
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
Vérifie la version d'un paquet auprès d'OSV.dev : npm, PyPI, Go, crates.io, Maven, RubyGems, Packagist, NuGet. Pour rechercher directement un identifiant CVE ou GHSA, utilisez cve-lookup. Sans version, les avis concernant n'importe quelle version sont comptés (scope). Pour npm et PyPI, un nom qui n'existe pas renvoie found: false et vulnerable: null, jamais un résultat « propre ».
curl "https://presend.pages.dev/api/vulnerability-check?ecosystem=npm&package=lodash&version=4.17.15"
GET /api/repo-health-check
Étoiles, forks, issues ouvertes, licence, statut d'archivage et jours depuis le dernier push d'un dépôt GitHub, via l'API REST de GitHub.
curl "https://presend.pages.dev/api/repo-health-check?repo=lodash/lodash"
GET /api/supply-chain-check
Combine maintainer-change-check (analyse des publieurs, npm uniquement), vulnerability-check, typosquat-check et repo-health-check (dépôt déduit des métadonnées du registre quand c'est possible) en un seul appel, avec un verdict global. Un paquet publié pour la première fois il y a moins de 30 jours est signalé new_package, et le verdict est alors au moins review_recommended. Les vulnérabilités sont vérifiées pour le paramètre facultatif version, sinon pour la dernière version publiée (version_checked, version_source).
curl "https://presend.pages.dev/api/supply-chain-check?ecosystem=npm&package=lodash"
Blockchain
Outils pour les chaînes Cosmos SDK et EVM : filtrage des sanctions, décodage de transactions et audit de nœuds RPC.
GET /api/address-risk
Vérifie une adresse crypto contre toutes les listes d'adresses de monnaies numériques de la liste SDN de l'OFAC. Les adresses EVM (0x...) et Bitcoin (bc1..., 1..., 3...) sont entièrement couvertes ; celles des autres chaînes sont signalées si elles figurent sur une liste. Les adresses Cosmos SDK (bech32) renvoient sanctioned: null lorsqu'elles ne sont pas listées, l'OFAC n'ayant publié aucune entrée pour les chaînes Cosmos SDK.
curl "https://presend.pages.dev/api/address-risk?address=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
GET /api/tx-decode
Décode une transaction Cosmos SDK brute et signée (octets protobuf TxRaw, en base64) en JSON lisible : messages, frais, gas, informations du signataire, signatures. Sans dépendance externe ; décode les types de messages bank/staking/gov/authz courants, y compris les MsgExec imbriqués.
curl "https://presend.pages.dev/api/tx-decode?tx=CpwBCpEBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnEK..."
GET /api/rpc-check
Audite un endpoint RPC CometBFT public d'une chaîne Cosmos SDK : état du nœud, santé, connectivité aux pairs, et exposition éventuelle de méthodes d'administration non sûres (dial_seeds, dial_peers, unsafe_flush_mempool). En lecture seule : n'invoque jamais lui-même de méthode non sûre.
curl "https://presend.pages.dev/api/rpc-check?url=https://cosmos-rpc.publicnode.com"
Utilitaires
Petits outils ciblés, sans dépendance externe autant que possible.
GET /api/iban-validate
Valide un IBAN via la somme de contrôle ISO 7064 mod-97, avec vérification de la longueur propre à chaque pays. Pur algorithme, sans source de données externe.
curl "https://presend.pages.dev/api/iban-validate?iban=DE89370400440532013000"
GET /api/vat-validate
Valide un numéro de TVA intracommunautaire en temps réel via le service officiel VIES de la Commission européenne ; renvoie le nom et l'adresse de l'entreprise enregistrée lorsqu'il est valide.
curl "https://presend.pages.dev/api/vat-validate?country=IE&vat=6388047V"
GET /api/link-metadata
Extrait les métadonnées Open Graph, Twitter Card et <head> de base d'une URL : les données utilisées pour afficher l'aperçu d'un lien dans une messagerie. Renvoie aussi le favicon et, après les redirections (chacune vérifiée), l'URL finale.
curl "https://presend.pages.dev/api/link-metadata?url=https://github.com/presendapp/presend-source"
GET /api/cve-lookup
Recherche directe d'une CVE ou d'un GHSA par identifiant via OSV.dev. Complète vulnerability-check (qui demande paquet, écosystème et version) lorsque vous disposez déjà d'un identifiant tiré d'un rapport de scanner.
curl "https://presend.pages.dev/api/cve-lookup?id=CVE-2021-44228"
Workflows enchaînés
Ces points de terminaison traitent des fichiers ou du texte côté serveur en un seul appel. Le traitement est sans état : rien n'est écrit sur disque, rien n'est journalisé, et les données envoyées sont supprimées dès l'envoi de la réponse.
POST /api/merge-and-compress-pdf
Fusionne 2 fichiers PDF ou plus en un seul document, puis compresse le résultat et supprime les métadonnées (titre, auteur, producteur) — en une seule requête plutôt que deux.
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
Supprime les EXIF/GPS d'un JPEG et les métadonnées textuelles d'un PNG par analyse binaire directe — les pixels ne sont jamais réencodés, donc aucune perte de qualité (contrairement aux approches par canvas, qui recompressent toujours).
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
Empreinte perceptuelle (dHash) pour 1 ou 2 images JPEG/PNG. Contrairement à une empreinte cryptographique, elle résiste à la recompression et aux retouches mineures ; envoyez 2 images pour les comparer directement, avec un score de similarité et un verdict.
curl -X POST -F "files=@a.jpg" -F "files=@b.png" https://presend.pages.dev/api/image-similarity
POST /api/text-similarity
SimHash pour 1 ou 2 textes, l'équivalent textuel d'image-similarity. Détecte les contenus quasi identiques, paraphrasés ou légèrement retouchés, contrairement à une empreinte cryptographique. Deux textes sans rapport obtiennent en général un score d'environ 50 % par hasard, et non 0 %.
curl -X POST -H "Content-Type: application/json" -d '{"texts":["text a","text b"]}' https://presend.pages.dev/api/text-similarity
Outils côté client (à intégrer)
La plupart des outils de traitement de fichiers (suppression EXIF, compression PDF, etc.) existent aussi en version navigateur, sous forme de widgets autonomes : rien n'est envoyé. Préférez-les à l'API ci-dessus si vous voulez une interface prête à l'emploi plutôt qu'un appel serveur. Intégrez-les directement :
<iframe src="https://presend.pages.dev/tools/exif-remover?embed=1" width="100%" height="600" frameborder="0" ></iframe>
Outils disponibles
Vérificateur d'empreintes
SHA-256 / SHA-1 / SHA-512 — API serveur disponible
Nettoyeur d'URL
Supprime les paramètres de suivi — API serveur disponible
Géolocalisation IP
IP, localisation, devise — API serveur disponible
Générateur d'UUID
UUID aléatoires — API serveur disponible
Encodeur/décodeur Base64
Encoder/décoder du texte — API serveur disponible
Décodeur JWT
Décoder des jetons JWT — API serveur disponible
Convertisseur de timestamps
Conversion de dates Unix/ISO — API serveur
Convertisseur de couleurs
Hex/RGB/HSL — API serveur
Analyseur de User-Agent
Détection navigateur/OS — API serveur
API de génération de mots de passe
Mots de passe sûrs avec entropie — API serveur
Validateur d'e-mails
Vérification syntaxe + MX — API serveur
Récupérateur de favicon
Favicon de n'importe quel site — API serveur
Convertisseur CSV/JSON
Dans les deux sens — API serveur
Vérification de fuite de mot de passe
Basé sur HIBP — API serveur
Détecteur d'e-mails jetables
576 domaines connus — API serveur
Analyseur d'en-têtes de sécurité
Note CSP, HSTS — API serveur
Réputation d'URL
Recherche malware/phishing — API serveur
Découverte de la surface d'attaque
Énumération passive de sous-domaines — API serveur
Risque d'adresse (OFAC)
Vérification des sanctions OFAC (EVM, Bitcoin) — API serveur
Décodeur de transactions Cosmos
Décode les transactions brutes Cosmos SDK — API serveur
Vérification RPC
Audit d'un point de terminaison RPC CometBFT — API serveur
Suppression EXIF
Supprime GPS et métadonnées des photos (côté client)
Compression PDF
Réduit la taille des PDF (côté client)
Générateur de mots de passe
Mots de passe cryptographiquement sûrs (côté client)
Paquet npm
Un client JS sans dépendance qui encapsule tous les points de terminaison ci-dessus.
npm install presend-api
const presend = require('presend-api');
const { uuids } = await presend.generateUuid(3);
Widget intégrable
Ajoutez un outil fonctionnel directement sur votre site — sans iframe, propulsé par notre API. Compatible avec : url-cleaner, uuid, color.
<div data-presend-tool="url-cleaner"></div> <script src="https://presend.pages.dev/widget.js" async></script>
Ajoutez data-badge="false" pour masquer le lien de crédit « Powered by Presend ».
Spécification OpenAPI
Spécification lisible par machine pour tous les points de terminaison serveur : openapi.json
RapidAPI
Également disponible sur RapidAPI, en fiches séparées par domaine si vous n'avez besoin que d'une partie du catalogue :
- Presend API -- le catalogue complet (Cybersécurité)
- Presend Blockchain & Crypto Compliance API -- vérifications OFAC, décodage de transactions Cosmos SDK, audit RPC (Finance)
- Presend Email & Phone Verification API -- vérification d'e-mails et de numéros de téléphone (Email)
- Presend Developer Tools API -- UUID, Base64, horodatage, géolocalisation IP, outils PDF et image (Tools)
Statut
Disponibilité en direct, surveillée de façon indépendante depuis 4 régions (UE, États-Unis, Asie, Australie), vérifiée toutes les 3 minutes.
Collection Postman
Collection prête à importer couvrant les 48 points de terminaison, générée à partir de la spécification OpenAPI ci-dessus.
Ou téléchargez le fichier brut : postman_collection.json.
Open Source
Tous les outils sont open source. Contribuez sur GitHub ou forkez pour vos propres projets. github.com/presendapp/presend-source