Vous êtes sur le point de dépendre de nous. Voici pourquoi c’est sûr.
Construit et exploité par deux fondateurs, Het et Om. Cette page contient tout ce que nous aurions voulu lire avant de faire d’une petite API inconnue une dépendance de production — chaque affirmation pointe vers son mécanisme, et là où nous sommes en retrait, nous le disons ici en premier.
La plupart des scrapers mentent à votre agent. Le nôtre dépose un rapport.
L’échec qui effraie tout ingénieur IA n’est pas le plantage — c’est le mensonge silencieux, celui qu’un client découvre avant vous. Le cœur d’EnConvert, c’est le refus de faire cela.
Chaque rendu de /v2/perceive, /v2/distill et /v2/watch passe par un modèle de qualité déterministe à 8 signaux : balisage anti-bot, pages CAPTCHA et de détection de bots, murs de connexion, corps vides, erreurs de console JavaScript, sous-ressources échouées, redirections inter-domaines et rendus lents. Le score revient dans la réponse, lu depuis la véritable session navigateur.
Quand un rendu déclenche les détecteurs anti-bot, CAPTCHA ou mur de connexion, la réponse porte un avertissement explicite nommant la condition et les déductions exactes qui ont produit le score. Vous obtenez la sortie complète plus la vérité sur celle-ci — jamais une page de défi présentée comme la réponse.
Une page marquée comme bloquée ne déclenche jamais d’extraction LLM payante. Vous obtenez le résultat heuristique plus un avertissement expliquant le saut, au lieu de tokens brûlés à inventer une structure à partir d’un écran de défi.
Envoyez une option que nous n’avons pas encore livrée et l’API la rejette avec un 422 qui le dit — elle n’accepte jamais un paramètre pour l’ignorer silencieusement. Les succès partiels reviennent sous forme d’avertissements nommés, jamais d’un haussement d’épaules silencieux.
- 92% de détection, 4% de fausses alertes sur notre corpus étiqueté de 50 pages — environ 1 page de blocage sur 12 peut encore passer, et nous publions les échecs.
- /v2/ingest rend les pages mais ne filtre pas encore sur le score, donc une page bloquée peut entrer non signalée dans un corpus RAG ; ce filtrage est sur la feuille de route, pas terminé.
- Un score faible signale et avertit — il ne bloque pas la livraison ni ne rembourse l’appel, et il ne retient jamais votre contenu en silence.
Voici exactement ce qui arrive à vos données.
Aucune abstraction — deux flux couvrent presque tout ce qu’EnConvert fait.
- Arrive via TLS
- Vérifié contre la limite de taille de votre plan et les extensions acceptées
- Nom de fichier assaini — composants de chemin et séquences de traversée supprimés
- Octets conservés en mémoire, transmis directement au convertisseur — votre fichier source n’est jamais écrit dans notre stockage
- Seule la sortie convertie est stockée, en privé, sous le préfixe de clé propre à votre compte
- Téléchargée via une URL pré-signée : expiration à 15 minutes, propriété vérifiée avant signature
- Supprimable par vous, à tout moment
- Le HTML rendu des tâches URL est conservé 90 jours pour alimenter la notation de qualité et le cache — divulgué dans la Politique de confidentialité, et toute requête individuelle peut le désactiver avec l’en-tête X-Enconvert-No-Capture: true, câblé dans le pipeline et pas seulement écrit dans une politique.
- Les fichiers convertis sont conservés pendant la fenêtre de rétention de votre plan (1 heure sur Free jusqu’à 30 jours sur les niveaux supérieurs), puis supprimés.
- Les métadonnées sont journalisées (endpoint, tailles, durée, URL source pour les tâches URL). Le contenu de vos fichiers et les corps de page rendus ne sont jamais écrits dans nos journaux.
Pas de badges. Des mécanismes.
Nous ne pouvons pas vous remettre un rapport SOC 2 — voici donc les contrôles spécifiques dont il est un substitut, y compris là où chacun s’arrête.
Chaque URL fournie par l’appelant est filtrée avant que le navigateur ne la touche. Bloqué : schémas non HTTP(S), identifiants intégrés, espace d’adresses privé / loopback / link-local / multicast / réservé, endpoints de métadonnées cloud à la fois par IP (169.254.169.254) et par nom d’hôte, et notations IP non standards (octal pointé, hexadécimal, entier compacté) qu’un validateur et un navigateur peuvent analyser différemment. Le filtre s’exécute sur perceive, distill, discover (chaque lien suivi par le crawler), watch (à la création et avant chaque vérification), ingest, et sur votre URL de webhook avant chaque livraison.
V2 uniquement — les anciens endpoints V1 url-to-pdf / screenshot / markdown précèdent ce module et ne sont pas filtrés. Deux failles documentées sont en cours de durcissement : le DNS rebinding, et une URL publique qui redirige vers une URL interne après le filtre. Le filtre couvre la page que vous demandez, pas chaque sous-ressource qu’elle charge.
Les clés portent 256 bits d’aléa issus d’un CSPRNG et ne sont stockées que sous forme de hash SHA-256 avec un court préfixe d’affichage — le texte en clair est affiché une seule fois et n’est récupérable ni par vous ni par nous. La révocation prend effet dès la requête suivante. Les clés peuvent être limitées à des endpoints et des domaines précis, appliqué côté serveur à chaque appel. Les clés secrètes (sk_) sont refusées d’emblée depuis un navigateur ; les clés publiables (pk_) ne peuvent émettre que des tokens de courte durée liés à l’origine, pour les domaines que vous mettez en liste blanche. Les sessions navigateur utilisent des tokens d’accès d’1 heure ; le token de rafraîchissement de 7 jours vit dans un cookie HttpOnly, Secure.
Le hash de la clé est du SHA-256 non salé (correct pour des clés aléatoires à haute entropie ; les mots de passe utilisent bcrypt). Un token déjà émis reste valide jusqu’à son expiration — jusqu’à une heure — même après la révocation de sa clé. Pas de limiteur de débit par seconde aujourd’hui ; la dépense est bornée par des quotas de plan stricts vérifiés avant chaque opération.
Chaque webhook V2 de complétion et de changement (ingest, watch) est signé en HMAC-SHA256 avec l’horodatage de livraison lié à la signature, à la manière de Stripe, envoyé sous X-Enconvert-Signature et X-Enconvert-Timestamp — pour que votre récepteur puisse vérifier l’expéditeur et rejeter les rejeux. Le secret de signature, propre à chaque projet, vient d’un CSPRNG, n’est révélé que via le tableau de bord authentifié, et tourne instantanément. Un vérificateur de référence en temps constant est fourni avec ; les livraisons réessaient avec un backoff, chaque tentative étant re-signée à neuf.
Webhooks V2 uniquement. Le callback de conversion asynchrone V1 hérité n’est pas signé, par conception figée — ne comptez pas dessus pour l’authenticité.
Chaque conversion facturable écrit une ligne de grand livre en ajout seul, indexée par une clé d’idempotence déterministe, et le compteur ne bouge que lorsque cette ligne est insérée, dans la même transaction — une requête réessayée ou dupliquée ne peut pas être comptée deux fois. Les conversions échouées, les rendus échoués et les requêtes refusées pour quota ne sont jamais facturés. À une limite de plan, vous recevez un 402 avec vos chiffres d’usage exacts avant qu’aucun travail ne s’exécute. Les dépenses d’extraction LLM sont derrière un plafond atomique de réservation-règlement qui échoue de façon fermée, et une tâche nocturne redérive chaque compteur depuis le grand livre brut et signale les écarts au lieu de réécrire silencieusement votre facture.
La vérification de quota et l’incrément sont deux étapes, donc à la frontière d’un plafond, des requêtes concurrentes peuvent dépasser de quelques opérations — toujours en votre faveur. La facturation de dépassement ne s’applique que si vous l’activez explicitement.
Utilisez une clé pk_, verrouillée sur vos domaines, pour tout ce qui est côté client — les navigateurs rejettent sk_ à dessein.
Recalculez HMAC-SHA256 sur <timestamp>.<body>, comparez en temps constant, rejetez tout ce qui a plus de 5 minutes.
Une clé restreinte au seul endpoint dont elle a besoin ne peut rien faire d’autre en cas de fuite.
Faites tourner un secret, ou révoquez et recréez une clé, dès que vous suspectez une exposition — la révocation est immédiate.
Votre côté de la clôture — quatre choses qui protègent votre compte
Des preuves, pas des promesses.
Ce qui est réellement construit, ce qui est réellement testé, et des réponses honnêtes aux simulations de panne que vous faites déjà tourner dans votre tête.
Si le serveur redémarre en plein vol, les opérations par lots interrompues sont marquées comme échouées avec un motif explicite « resubmit », les tâches ingest reprennent depuis un état durable par page, et les moniteurs rattrapent leur retard tout seuls car leur planning vit en base de données. L’ancien mode de panne d’une tâche bloquée « In Progress » pour toujours n’existe pas ici.
Une seule URL non rendable échoue sa propre opération et le reste de votre lot se termine avec des résultats partiels. Une tâche plantée ne fait jamais tomber la boucle du worker.
Un observateur de page qui échoue trois vérifications d’affilée se met en pause tout seul et vous envoie un e-mail, plutôt que de faire semblant silencieusement de continuer à observer.
Plus de 380 tests automatisés visent précisément ces comportements : limites de détection de blocage, rejet des signatures de webhook falsifiées, échec partiel de lots, et régression de rendu au niveau octet contre des fixtures de référence. Le scoreur de qualité est validé contre un corpus étiqueté de 50 pages à 92% de détection et 4% de fausses alertes, les échecs connus étant versés dans le dépôt. Remarque honnête : ces tests s’exécutent manuellement, pas encore en CI.
EnConvert fonctionne aujourd’hui dans une seule région. La page de statut est publique et nous sommes alertés automatiquement. Il n’y a pas de guichet de support anonyme 24/7 — il y a deux fondateurs, et l’un de nous est joignable.
Nous sommes deux, par conception : Het gère le produit au quotidien, Om prend le relais quand Het n’est pas disponible, et inversement. Un jour normal, aucun de nous n’a de toute façon besoin d’appuyer sur un bouton — les workers s’auto-réparent et résistent aux redémarrages, les moniteurs se mettent en pause automatiquement quand ils cassent, et les périodes de facturation tournent d’elles-mêmes.
Les rendus sont actuellement sérialisés sur un seul nœud, un par un — un vrai plafond dont nous sommes honnêtes. Les conversions rapides répondent de façon synchrone ; le travail lourd ou par rafales se dégrade en tâches asynchrones plutôt que d’échouer. La montée en charge horizontale est un travail planifié, pas livré.
La vraie question pour un jeune fournisseur, donc une vraie réponse. L’API est sans état : vos fichiers vivent des minutes et des heures, pas des années, donc migrer revient à changer d’endpoint, pas à exporter une base de données. Si nous devions un jour arrêter, vous recevriez au moins 6 mois de préavis écrit — et à la fermeture, nous libérons le code de conversion principal pour les clients payants, afin que vous ne restiez jamais bloqué sur une API boîte noire morte. Nous l’écrivons volontairement.
Ce que nous ne ferons jamais avec vos fichiers.
- Nous n’entraînons jamais de modèles sur vos fichiers ni sur votre contenu
- Nous ne vendons ni ne partageons jamais vos données
- Les fichiers source sont traités en mémoire, jamais stockés — seule votre sortie convertie l’est, sous votre préfixe, supprimable par vous
- Les téléchargements sont privés et limités dans le temps : URL signées, expiration à 15 minutes, propriété vérifiée avant signature
Stockage d’objets pour vos sorties converties.
Extraction assistée par LLM (l’un des sous-traitants LLM d’EnConvert — celui qui est actif est un paramètre configurable), uniquement sur les plans où vous l’activez — le contenu de page allégé est envoyé pour en extraire des données structurées ; sinon, votre contenu ne quitte jamais l’infrastructure d’EnConvert pour cela.
Extraction assistée par LLM (l’un des sous-traitants LLM d’EnConvert — celui qui est actif est un paramètre configurable), uniquement sur les plans où vous l’activez — le contenu de page allégé est envoyé pour en extraire des données structurées ; sinon, votre contenu ne quitte jamais l’infrastructure d’EnConvert pour cela.
Extraction assistée par LLM (l’un des sous-traitants LLM d’EnConvert — celui qui est actif est un paramètre configurable), uniquement sur les plans où vous l’activez — le contenu de page allégé est envoyé pour en extraire des données structurées ; sinon, votre contenu ne quitte jamais l’infrastructure d’EnConvert pour cela.
Le fournisseur de recherche derrière /v2/lookup ; le texte de votre requête de recherche est envoyé à Serper.
Traitement des paiements et facturation.
Raisons de ne pas utiliser EnConvert.
Tout argumentaire honnête inclut les cas où c’est le mauvais choix. Voici les nôtres.
Nous ne les avons pas. Si un certificat est un critère d’achat incontournable, nous n’en sommes pas encore là.
Une entreprise de deux personnes ne peut pas écrire cela honnêtement — utilisez un fournisseur plus important.
Non proposé ; EnConvert est uniquement une API hébergée.
Les plafonds de taille par plan vont de petits sur Free jusqu’au niveau Production — au-delà, ce n’est pas le bon outil.
Légitime. Tout ce qui figure sur cette page est conçu pour rendre ce risque plus petit qu’il n’y paraît, mais nous ne prétendrons pas qu’il est nul.
Deux noms. Joignables.
Autofinancés, sans investisseurs — le revenu vient uniquement des abonnements, donc le seul travail du produit est de continuer à fonctionner pour les personnes qui le paient. Le support est assuré par les personnes qui ont écrit le code.
Ne faites pas confiance à cette page. Vérifiez-la.
Lancez 100 opérations sur le niveau gratuit, pointez /v2/perceive vers une page que vous savez difficile, et lisez le score qu’elle vous renvoie. Gratuit pendant la bêta — sans carte bancaire.
[email protected] · les rapports de sécurité reçoivent une réponse sous un jour ouvré