Vérifier une entrée depuis le vérificateur du site
const url = 'https://api.arnakoff.com/v1/demo/check';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"q":"armen.ltd","turnstile_token":"0.zrSnRHO7h0HwSjSCU8oyzbjEtD8p.d62306d4ee00c77dda697f959ebbd7bd97"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.arnakoff.com/v1/demo/check \ --header 'Content-Type: application/json' \ --data '{ "q": "armen.ltd", "turnstile_token": "0.zrSnRHO7h0HwSjSCU8oyzbjEtD8p.d62306d4ee00c77dda697f959ebbd7bd97" }'Vérifie une entrée comme GET /v1/check, sans clé API : c’est l’accès de démonstration du
vérificateur d’arnakoff.com. L’entrée voyage dans le corps, jamais dans l’URL.
Chaque requête porte un jeton Cloudflare Turnstile obtenu sur le site ; un jeton ne sert
qu’une fois et expire après 300 secondes. Le quota est double : par adresse du client
(politique demo) et pour tous les clients ensemble (politique demo_global).
CORS : seule l’origine du site est autorisée, pour la méthode POST et l’en-tête
Content-Type, sans cookie ni identifiant. Aucune entrée n’est conservée.
Request Bodyrequired
Section intitulée « Request Bodyrequired »L’entrée à vérifier et le jeton anti-abus du vérificateur du site.
object
L’entrée telle que l’utilisateur l’a collée.
Type d’une entrée. Une URL est vérifiée comme son domaine (domain).
Le jeton donné par le widget Cloudflare Turnstile du site, valable une fois.
Examples
Un domaine, avec le jeton du widget
{ "q": "armen.ltd", "turnstile_token": "0.zrSnRHO7h0HwSjSCU8oyzbjEtD8p.d62306d4ee00c77dda697f959ebbd7bd97"}Responses
Section intitulée « Responses »Rapport de la vérification.
Rapport de la vérification d’une entrée.
object
L’entrée normalisée qui a été vérifiée, comme le domaine extrait d’une URL. Pour une adresse e-mail, un numéro de téléphone ou un IBAN, c’est une donnée personnelle : la réponse n’est jamais mise en cache.
Type d’une entrée. Une URL est vérifiée comme son domaine (domain).
Heure de la vérification.
« Aucun signal connu dans nos sources » quand signals est vide, null sinon : les
signaux parlent d’eux-mêmes. Ce n’est jamais une garantie.
Les signaux, du plus grave au moins grave.
Un fait sourcé sur l’entrée vérifiée.
object
Identifiant stable de la règle (liste ouverte, voir GET /v1/signals) : un nouveau
code peut apparaître sans changer de version.
Gravité d’un signal, de la plus faible à la plus forte : info (fait neutre),
attention (indice à vérifier avant d’agir), alerte (fait publié par une autorité,
comme une inscription sur une liste noire).
Une phrase factuelle en français qui dit ce qui a été observé.
Conseil facultatif en français, absent quand le signal n’en a pas.
Nom d’une source, tel qu’il est montré aux utilisateurs.
Page publique où le fait se vérifie.
Heure à laquelle le fait a été lu à la source : téléchargement de la liste en service, ou heure de la vérification pour un registre interrogé à la demande.
L’état de chaque source pour cette vérification.
L’état d’une source pour une vérification.
object
Nom d’une source, tel qu’il est montré aux utilisateurs.
Rôle d’une source dans une vérification : ok (consultée), indisponible (pas
consultée : l’absence de signal de cette source ne prouve rien), non_applicable (ne
couvre pas ce type d’entrée).
Examples
Domaine inscrit sur la liste noire de l'AMF
{ "input": "armen.ltd", "type": "domain", "checked_at": "2026-11-02T08:25:53Z", "summary": null, "signals": [ { "code": "amf_blacklist", "level": "alerte", "message": "Figure sur la liste noire de l'AMF (catégorie Usurpation) depuis le 08/10/2026.", "source": "AMF", "source_url": "https://www.amf-france.org/fr/espace-epargnants/proteger-son-epargne/listes-noires-et-mises-en-garde", "observed_at": "2026-11-02T08:14:42Z" } ], "sources": [ { "source": "AMF", "status": "ok" }, { "source": "ACPR", "status": "indisponible" }, { "source": "AMF PSAN", "status": "ok" }, { "source": "AMF biens divers", "status": "ok" }, { "source": "ARCEP", "status": "non_applicable" }, { "source": "RDAP", "status": "ok" }, { "source": "SIRENE", "status": "non_applicable" }, { "source": "BODACC", "status": "non_applicable" } ]}Aucun signal
{ "input": "552100554", "type": "siren", "checked_at": "2026-11-02T08:25:53Z", "summary": "Aucun signal connu dans nos sources", "signals": [], "sources": [ { "source": "AMF", "status": "non_applicable" }, { "source": "ACPR", "status": "non_applicable" }, { "source": "AMF PSAN", "status": "ok" }, { "source": "AMF biens divers", "status": "ok" }, { "source": "ARCEP", "status": "non_applicable" }, { "source": "RDAP", "status": "non_applicable" }, { "source": "SIRENE", "status": "indisponible" }, { "source": "BODACC", "status": "indisponible" } ]}Quota restant de la politique en cours, selon draft-ietf-httpapi-ratelimit-headers-11 :
r, requêtes encore permises maintenant ; t, secondes avant qu’une requête de plus soit
rendue (pendant ce délai, pas plus de r requêtes), 0 quand le quota est entier.
Example
"key";r=59;t=1Politique de quota, selon draft-ietf-httpapi-ratelimit-headers-11 : q, requêtes
permises par fenêtre ; w, fenêtre en secondes. Le quota entier peut être dépensé d’un
coup, puis il revient au même rythme sur la fenêtre. Politique key sur les routes de
vérification, par clé API (un lot compte pour une requête) ; politique ip sur les routes
sans clé, par adresse du client (préfixe /64 en IPv6) ; politique auth sur les routes de
vérification, par adresse du client, qui compte les clés refusées (mal formées, inconnues
ou révoquées) : une fois ce quota dépensé, les clés envoyées depuis cette adresse ne sont
plus vérifiées et la réponse est 429, même pour une clé valide. La politique auth
n’apparaît que sur ses réponses 429. Sur POST /v1/demo/check, politique demo par
adresse du client et politique demo_global pour tous les clients ensemble, qui
n’apparaît que sur ses réponses 429. Sur POST /v1/keys/request et
POST /v1/keys/redeem, politique key_request par adresse du client. Valeurs de l’exemple
données à titre d’illustration : les quotas dépendent de l’offre.
Example
"key";q=60;w=60Corps de requête qui n’est pas un objet JSON, sans entrée q, ou avec un type inconnu.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Corps de démonstration mal formé
{ "type": "https://arnakoff.com/docs/erreurs/invalid_body", "title": "Corps de requête invalide", "status": 400, "detail": "Le corps de la requête doit être un objet JSON contenant q et turnstile_token.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_body"}Paramètre q absent
{ "type": "https://arnakoff.com/docs/erreurs/missing_parameter", "title": "Paramètre manquant", "status": 400, "detail": "Le paramètre q est obligatoire.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "missing_parameter"}Paramètre type d'une valeur inconnue
{ "type": "https://arnakoff.com/docs/erreurs/invalid_parameter", "title": "Paramètre invalide", "status": 400, "detail": "Le paramètre type doit valoir domain, email, phone, iban, siren ou siret.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_parameter"}Jeton anti-abus absent, invalide, expiré ou déjà utilisé.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Jeton anti-abus refusé
{ "type": "https://arnakoff.com/docs/erreurs/challenge_failed", "title": "Vérification anti-abus échouée", "status": 403, "detail": "Le jeton anti-abus est absent, invalide, expiré ou déjà utilisé. Recharge la vérification et réessaie.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "challenge_failed"}Corps de requête trop gros.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Corps de requête trop gros
{ "type": "https://arnakoff.com/docs/erreurs/content_too_large", "title": "Corps de requête trop gros", "status": 413, "detail": "Le corps de la requête dépasse la taille autorisée.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "content_too_large"}Corps de requête qui n’est pas en application/json.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Corps de requête qui n'est pas du JSON
{ "type": "https://arnakoff.com/docs/erreurs/unsupported_media_type", "title": "Type de contenu non pris en charge", "status": 415, "detail": "Le corps de la requête doit être en application/json.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "unsupported_media_type"}Entrée reconnue comme d’aucun type, ou invalide pour le type donné.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Entrée d'aucun type reconnu
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est ni un domaine, ni une URL, ni une adresse e-mail, ni un numéro de téléphone, ni un IBAN, ni un SIREN, ni un SIRET.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}Domaine invalide pour le type donné
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est ni un domaine ni une URL valide.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}Adresse e-mail invalide pour le type donné
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est pas une adresse e-mail valide.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}Numéro de téléphone invalide pour le type donné
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est pas un numéro de téléphone valide.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}IBAN invalide pour le type donné
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est pas un IBAN valide.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}SIREN invalide pour le type donné
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est pas un SIREN valide.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}SIRET invalide pour le type donné
{ "type": "https://arnakoff.com/docs/erreurs/invalid_input", "title": "Entrée invalide", "status": 422, "detail": "L'entrée n'est pas un SIRET valide.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "invalid_input"}Quota dépassé : celui de la clé (key), de l’adresse (ip), des clés refusées depuis
l’adresse (auth), de l’accès de démonstration (demo, demo_global) ou des demandes de
clé (key_request), nommé dans RateLimit-Policy.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Quota dépassé
{ "type": "https://arnakoff.com/docs/erreurs/too_many_requests", "title": "Trop de requêtes", "status": 429, "detail": "Le quota de requêtes est atteint. Réessaie après le délai de l'en-tête Retry-After.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "too_many_requests"}Quota restant de la politique en cours, selon draft-ietf-httpapi-ratelimit-headers-11 :
r, requêtes encore permises maintenant ; t, secondes avant qu’une requête de plus soit
rendue (pendant ce délai, pas plus de r requêtes), 0 quand le quota est entier.
Example
"key";r=59;t=1Politique de quota, selon draft-ietf-httpapi-ratelimit-headers-11 : q, requêtes
permises par fenêtre ; w, fenêtre en secondes. Le quota entier peut être dépensé d’un
coup, puis il revient au même rythme sur la fenêtre. Politique key sur les routes de
vérification, par clé API (un lot compte pour une requête) ; politique ip sur les routes
sans clé, par adresse du client (préfixe /64 en IPv6) ; politique auth sur les routes de
vérification, par adresse du client, qui compte les clés refusées (mal formées, inconnues
ou révoquées) : une fois ce quota dépensé, les clés envoyées depuis cette adresse ne sont
plus vérifiées et la réponse est 429, même pour une clé valide. La politique auth
n’apparaît que sur ses réponses 429. Sur POST /v1/demo/check, politique demo par
adresse du client et politique demo_global pour tous les clients ensemble, qui
n’apparaît que sur ses réponses 429. Sur POST /v1/keys/request et
POST /v1/keys/redeem, politique key_request par adresse du client. Valeurs de l’exemple
données à titre d’illustration : les quotas dépendent de l’offre.
Example
"key";q=60;w=60Secondes à attendre avant de réessayer (RFC 9110, section 10.2.3).
Example
30Erreur interne du serveur.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Erreur interne
{ "type": "https://arnakoff.com/docs/erreurs/internal_error", "title": "Erreur interne", "status": 500, "detail": "Le serveur a rencontré une erreur. Réessaie plus tard.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "internal_error"}Le jeton anti-abus ne peut pas être vérifié pour le moment.
Erreur au format RFC 9457 (application/problem+json).
object
Adresse de la page du site qui documente ce type d’erreur : la documentation des erreurs
suivie du code.
Résumé du type d’erreur, en français, le même pour toutes ses occurrences.
Code de statut HTTP de la réponse.
Explication de cette occurrence, en français. Ne cite jamais une donnée personnelle.
Identifiant de cette occurrence : l’URI tag:arnakoff.com,2026:request: suivie de
l’identifiant de la requête, celui de l’en-tête X-Request-ID de la réponse. À citer
quand on signale un problème. Absent d’une erreur d’un élément de POST /v1/check/batch.
Identifiant stable du type d’erreur (liste ouverte). Chaque code a un exemple
Problem… dans ce contrat.
Examples
Vérification anti-abus indisponible
{ "type": "https://arnakoff.com/docs/erreurs/challenge_unavailable", "title": "Vérification anti-abus indisponible", "status": 503, "detail": "Le jeton anti-abus ne peut pas être vérifié pour le moment. Réessaie plus tard.", "instance": "tag:arnakoff.com,2026:request:7NQJ4ZWKX3C5RB2D6HVMTPLE9A", "code": "challenge_unavailable"}