Sur cette page

API

Référence API

API · ProBêta
Clé API et crédits
Sur cette page

Authentification

Attention

Vous avez besoin de crédits : les 20 par mois inclus avec un compte Pro actif, ou des crédits achetés sur la page de votre compte. Un compte qui n’a ni les uns ni les autres reçoit 403 pro_required.

Important

Cette clé n’est affichée qu’une fois. Conservez-la en sécurité sur votre serveur.

Créez une API key dans votre compte et copiez la valeur affichée une seule fois. Configurez NOCALL_API_KEY comme secret sur votre serveur. Utilisez HTTPS ; ne mettez jamais la clé dans le code du navigateur, les dépôts, captures ou journaux.

Envoyez la clé complète dans Authorization: Bearer, avec un espace après Bearer. N’utilisez pas X-API-Key et ne placez pas la clé dans l’URL.

Sur /v1/data/* + /v2/*, une clé valide remplace la preuve ByteGuard du navigateur. Expiration, révocation, abonnement, crédits et limites restent contrôlés. Elle n’autorise pas les autres routes. openapi.json et products sont publics.

HTTP
Authorization: Bearer <NOCALL_API_KEY>

Votre première requête

Les 44 tools sont tous disponibles via l’API : appelez POST /v2/<tool-id>, ou POST /v2/tools avec le champ tool dans le corps. Chaque tool a son propre corps JSON, documenté dans son guide. data.result contient le résultat du tool. Utilisez les identifiants du tableau.

Générez une nouvelle Idempotency-Key pour chaque nouvelle opération. Conservez cette clé uniquement pour réessayer la même opération avec les mêmes données.

bash
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/tools' \
  --header "Authorization: Bearer $NOCALL_API_KEY" \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $REQUEST_ID" \
  --data '{"tool":"who-calls","phone":"+12025550123","country":"US"}'

API v2 · tools

Les 44 tools sont tous disponibles via l’API : appelez POST /v2/<tool-id>, ou POST /v2/tools avec le champ tool dans le corps. Chaque tool a son propre corps JSON, documenté dans son guide. data.result contient le résultat du tool. Utilisez les identifiants du tableau.

toolObjectifPOSTExemple fictif
who-callsQui m’appelle ?/v2/who-calls{"phone":"+12025550123","country":"US"}
phone-exposureMon numéro a-t-il fuité ?/v2/phone-exposure{"phone":"+12025550123","country":"US"}
phone-intelligenceRenseignement téléphonique/v2/phone-intelligence{"phone":"+12025550123","country":"US"}
phone-riskRisque téléphonique/v2/phone-risk{"phone":"+12025550123","country":"US"}
carrier-lookupRecherche opérateur/v2/carrier-lookup{"phone":"+12025550123","country":"US"}
verified-businessRecherche inversée d’entreprise vérifiée/v2/verified-business{"phone":"+12025550123","country":"US"}
phone-formatsFormats de téléphone/v2/phone-formats{"phone":"+34912345678","country":"ES"}
callback-costCombien coûte un rappel ?/v2/callback-cost{"phone":"806123456","country":"ES"}
prefix-originD’où vient cet indicatif ?/v2/prefix-origin{"phone":"910","country":"ES"}
number-validatorValider et formater un numéro de téléphone/v2/number-validator{"phone":"+12025550123","country":"US"}
line-typeMobile ou fixe ?/v2/line-type{"phone":"+34600111222","country":"ES"}
premium-rateEst-ce un numéro surtaxé ?/v2/premium-rate{"phone":"806","country":"ES"}
wangiriVérificateur wangiri : cet appel manqué est-il une arnaque ?/v2/wangiri{"phone":"+216","country":"ES"}
commercial-400Cet appel de démarchage est-il légal ?/v2/commercial-400{"phone":"+34400000000","country":"ES"}
number-researchAnalyser un numéro avec l’IA/v2/number-research{"phone":"+12025550123","country":"US","language":"en"}
dial-codeOn vous demande de composer un code ?/v2/dial-code{"code":"**21*+34600000000#","country":"ES"}
call-scam-checkCet appel est-il une arnaque ?/v2/call-scam-check{"answers":{"impersonation":true,"sms_code":true,"pressure":true},"country":"ES"}
sms-checkVérifier si un SMS est une arnaque/v2/sms-check{"message":"Your parcel is held. Pay the fee at https://example.invalid/pay","sender":"Correos","language":"en","country":"GB"}
sms-brandCe SMS d’une marque est-il authentique ?/v2/sms-brand{"brand":"correos","link":"https://correos-envio.example.invalid/pago","country":"ES"}
sms-senderQui m’a envoyé ce SMS ?/v2/sms-sender{"sender":"Correos","country":"ES"}
sms-codeOn vous demande un code reçu par SMS ?/v2/sms-code{"unrequested":true,"asked":true,"sensitive":true,"shared":false}
sms-reportOù signaler un SMS frauduleux/v2/sms-report{"sender":"Correos","tapped":false,"gaveData":false,"country":"ES"}
sms-campaignsCampagnes de SMS frauduleux/v2/sms-campaigns{}
sms-redactRetirez vos données d’un SMS/v2/sms-redact{"message":"BBVA: su tarjeta 4111 1111 1111 1111 ha sido bloqueada. Llame al +34 612 34 56 78 o entre en https://bbva-seguro.com/login"}
callback-numberFaut-il appeler le numéro de ce message ?/v2/callback-number{"text":"Your account is locked. Call us now on 0909 879 0000 or +216 71 123 456","country":"GB"}
prefix-directoryIndicatifs/v2/prefix-directory{"country":"ES","serviceClass":"premium","page":1,"limit":3}
operator-directoryOpérateurs/v2/operator-directory{"country":"ES","operator":"Movistar"}
calling-codesIndicatifs internationaux/v2/calling-codes{"query":"216","language":"en"}
spam-directoryNuméros spam/v2/spam-directory{"country":"US","category":"SCAM","page":1,"limit":20}
trendsAnalyses/v2/trends{"country":"ES"}
smishingQu’est-ce que le smishing ?/v2/smishing{"message":"CORREOS: su paquete está retenido. Pague urgente las tasas en https://correos-entrega.info/pago","country":"ES"}
link-checkVérifier un lien/v2/link-check{"url":"http://192.168.1.1/login","country":"ES"}
safety-toolsOutils de sécurité/v2/safety-tools{"text":"URGENTE: su cuenta BBVA ha sido bloqueada, verifique en https://bbva-seguro.com/login","mode":"email","country":"ES"}
sms-filterFiltre anti-spam SMS/v2/sms-filter{"country":"ES"}
qr-checkCe QR code est-il sûr ?/v2/qr-check{"payload":"BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471","country":"ES"}
email-headersCet e-mail est-il authentique ?/v2/email-headers{"headers":"Delivered-To: [email protected]\nReceived: from mail.bank.example (mail.bank.example [192.0.2.10]) by mx.google.com with ESMTPS id x1 for <[email protected]>; Tue, 27 Oct 2026 09:00:00 -0700\nAuthentication-Results: mx.google.com; dkim=pass [email protected] header.s=s1; spf=pass (google.com: domain of [email protected] designates 192.0.2.10 as permitted sender) [email protected]; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bank.example\nFrom: \"Bank Alerts\" <[email protected]>\nReply-To: [email protected]\nSubject: Your statement is ready\nMessage-ID: <[email protected]>","country":"ES"}
mx-lookupEnregistrements MX d’un domaine/v2/mx-lookup{"domain":"example.com"}
spf-checkVérifier le SPF/v2/spf-check{"domain":"example.com"}
dmarc-checkVérifier le DMARC/v2/dmarc-check{"domain":"example.com"}
dkim-checkVérifier le DKIM/v2/dkim-check{"domain":"example.com","selector":"s1"}
email-verifyVérifier une adresse e-mail/v2/email-verify{"email":"[email protected]"}
website-ageQuel âge a ce site ?/v2/website-age{"url":"https://www.example.com/login","country":"ES"}
domain-popularityPopularité d’un domaine/v2/domain-popularity{"url":"https://shop.example.com/cart","country":"ES"}
website-legitCe site est-il fiable ?/v2/website-legit{"url":"https://[email protected]/login","country":"ES"}

Endpoints disponibles

Seules les données techniques vérifiées ou publiques sont affichées. Les identités privées et signaux de protection restent masqués.

API v1 · phone est obligatoire : une chaîne de 64 caractères maximum, de préférence au format E.164. country est un code pays pris en charge à deux lettres, facultatif, avec ES par défaut. Content-Type doit être application/json.

HTTPURLObjectifPrérequis
POST/v2/toolsUtiliser avec l’APIAuthorization: Bearer · Pro
GET/v2/toolsCatalogue de produits NoCallAuthorization: Bearer · Pro
GET/v2/openapi.jsonOpenAPI 3.1—
POST/v2/who-callsQui m’appelle ?Authorization: Bearer · Pro
POST/v2/phone-exposureMon numéro a-t-il fuité ?Authorization: Bearer · Pro
POST/v2/phone-intelligenceRenseignement téléphoniqueAuthorization: Bearer · Pro
POST/v2/phone-riskRisque téléphoniqueAuthorization: Bearer · Pro
POST/v2/carrier-lookupRecherche opérateurAuthorization: Bearer · Pro
POST/v2/verified-businessRecherche inversée d’entreprise vérifiéeAuthorization: Bearer · Pro
POST/v2/phone-formatsFormats de téléphoneAuthorization: Bearer · Pro
POST/v2/callback-costCombien coûte un rappel ?Authorization: Bearer · Pro
POST/v2/prefix-originD’où vient cet indicatif ?Authorization: Bearer · Pro
POST/v2/number-validatorValider et formater un numéro de téléphoneAuthorization: Bearer · Pro
POST/v2/line-typeMobile ou fixe ?Authorization: Bearer · Pro
POST/v2/premium-rateEst-ce un numéro surtaxé ?Authorization: Bearer · Pro
POST/v2/wangiriVérificateur wangiri : cet appel manqué est-il une arnaque ?Authorization: Bearer · Pro
POST/v2/commercial-400Cet appel de démarchage est-il légal ?Authorization: Bearer · Pro
POST/v2/number-researchAnalyser un numéro avec l’IAAuthorization: Bearer · Pro
POST/v2/dial-codeOn vous demande de composer un code ?Authorization: Bearer · Pro
POST/v2/call-scam-checkCet appel est-il une arnaque ?Authorization: Bearer · Pro
POST/v2/sms-checkVérifier si un SMS est une arnaqueAuthorization: Bearer · Pro
POST/v2/sms-brandCe SMS d’une marque est-il authentique ?Authorization: Bearer · Pro
POST/v2/sms-senderQui m’a envoyé ce SMS ?Authorization: Bearer · Pro
POST/v2/sms-codeOn vous demande un code reçu par SMS ?Authorization: Bearer · Pro
POST/v2/sms-reportOù signaler un SMS frauduleuxAuthorization: Bearer · Pro
POST/v2/sms-campaignsCampagnes de SMS frauduleuxAuthorization: Bearer · Pro
POST/v2/sms-redactRetirez vos données d’un SMSAuthorization: Bearer · Pro
POST/v2/callback-numberFaut-il appeler le numéro de ce message ?Authorization: Bearer · Pro
POST/v2/prefix-directoryIndicatifsAuthorization: Bearer · Pro
POST/v2/operator-directoryOpérateursAuthorization: Bearer · Pro
POST/v2/calling-codesIndicatifs internationauxAuthorization: Bearer · Pro
POST/v2/spam-directoryNuméros spamAuthorization: Bearer · Pro
POST/v2/trendsAnalysesAuthorization: Bearer · Pro
POST/v2/smishingQu’est-ce que le smishing ?Authorization: Bearer · Pro
POST/v2/link-checkVérifier un lienAuthorization: Bearer · Pro
POST/v2/safety-toolsOutils de sécuritéAuthorization: Bearer · Pro
POST/v2/sms-filterFiltre anti-spam SMSAuthorization: Bearer · Pro
POST/v2/qr-checkCe QR code est-il sûr ?Authorization: Bearer · Pro
POST/v2/email-headersCet e-mail est-il authentique ?Authorization: Bearer · Pro
POST/v2/mx-lookupEnregistrements MX d’un domaineAuthorization: Bearer · Pro
POST/v2/spf-checkVérifier le SPFAuthorization: Bearer · Pro
POST/v2/dmarc-checkVérifier le DMARCAuthorization: Bearer · Pro
POST/v2/dkim-checkVérifier le DKIMAuthorization: Bearer · Pro
POST/v2/email-verifyVérifier une adresse e-mailAuthorization: Bearer · Pro
POST/v2/website-ageQuel âge a ce site ?Authorization: Bearer · Pro
POST/v2/domain-popularityPopularité d’un domaineAuthorization: Bearer · Pro
POST/v2/website-legitCe site est-il fiable ?Authorization: Bearer · Pro
GET/v1/data/accountClé API et créditsAuthorization: Bearer
POST/v1/data/phone-lookupsRenseignement téléphoniqueAuthorization: Bearer · Pro
POST/v1/data/phone-risk-checksRisque téléphoniqueAuthorization: Bearer · Pro
POST/v1/data/carrier-lookupsRecherche opérateurAuthorization: Bearer · Pro
POST/v1/data/reverse-phone-lookupsRecherche inversée d’entreprise vérifiéeAuthorization: Bearer
POST/v1/data/phone-exposure-checksMon numéro a-t-il fuité ?Authorization: Bearer · Pro
POST/v1/data/bulk-lookupsRecherches téléphoniques en masseAuthorization: Bearer
GET/v1/data/productsCatalogue de produits NoCall—
GET/v1/data/openapi.jsonOpenAPI 3.1—

Réponses

Remarque

Exemple inventé, pas une recherche réelle. N’appelez pas et n’ouvrez pas ses liens.

data contient le résultat ; meta fournit requestId, unitsCharged et l’utilisation si applicable. L’extrait fictif montre le solde après une requête. Un résultat valide sans données coûte aussi 1 crédit ; les erreurs de validation ou de fournisseur et la lecture du solde ne sont pas facturées. L’absence de données ne prouve pas qu’un numéro est sûr. Les schémas complets figurent dans OpenAPI.

JSON · who-calls
{
  "data": {
    "tool": "who-calls",
    "result": {
      "phoneNumber": "+12025550123",
      "found": true,
      "updatedAt": "2026-10-01T09:30:00.000Z",
      "risk": {
        "score": 72,
        "level": "high"
      },
      "reportCount": 14,
      "categories": [
        "TELEMARKETING"
      ],
      "verified": false,
      "carrier": null,
      "verifiedBusiness": null
    }
  },
  "meta": {
    "requestId": "req_example",
    "unitsCharged": 1,
    "usage": {
      "periodStart": "2026-10-01",
      "unitLimit": 20,
      "unitsUsed": 3,
      "unitsRemaining": 17
    }
  }
}
tooldata.result
who-callsphoneNumber, found, updatedAt, risk, reportCount, categories, verified, carrier, verifiedBusiness
phone-exposureatRisk
phone-intelligencephoneNumber, found, updatedAt, risk, reportCount, categories, verified, carrier, verifiedBusiness, commentCount, aiRiskLevel, prefixRisk
phone-riskphoneNumber, found, updatedAt, risk, signals
carrier-lookupphoneNumber, found, updatedAt, carrier
verified-businessphoneNumber, found, updatedAt, verifiedBusiness
phone-formatse164, national, international, callingCode, country, valid
callback-costtier, scope, callingCode, registry
prefix-originkind, planLoaded, numberType, foreignCode, national, row, complete, rows, factsType
number-validatorvalid, possible, country, callingCode, type, e164
line-typee164, valid, type, lineKind
premium-ratecategory, callbackRisk, prefix, callingCode, source
wangiriverdict, code, nanpArea, entry
commercial-400verdict, prefix
number-researchanswer, sources, countryCode, language, cached
dial-codecode, kind, action, service, forwardsTo, calls, risk, undo, operator
call-scam-checkverdict, signals, actions, reportChannel
sms-checkverdict, confidence, reason
sms-brandverdict, host, brand, officialDomains, sightings
sms-senderkind, tooLong, brand, lookalike, digits, code
sms-codeverdict, severity, serviceRecoverySteps, stepCodes
sms-reportchannel, verified, stepCodes, reportFields
sms-campaignstotalCampaigns, totalSightings, topBrands, topDomains
sms-redacttext, counts, total
callback-numbernumbers, signals, attention
prefix-directorycountryCode, callingCode, planVersion, total, page, limit, hasMore, rows
operator-directoryoperators, specialPrefixes
calling-codesrows, total
spam-directoryview, totals, categories, topReported, category, total, page, limit, hasMore, rows
trendstotals, activity24h, verification, freshness, categoryDistribution, phoneTypes, topOperators, growthTimeline, topPrefixes, searchTrends, communityDistribution, impersonationRanking, aiBreakdown
smishingverdict, score, attention, signals, hosts, linkFlags, brand, brandSlug
link-checkhost, hostAscii, official, brand, hosts, linkFlags, signals, attention
safety-toolsattention, signals, hosts, linkFlags
sms-filtercountry, version, updatedAt, source, counts
qr-checkpayload, signals, attention, hosts, linkFlags, link, numbers
email-headersfromDomain, fromDomainAscii, displayName, replyToDomain, returnPathDomain, senderDomain, subject, auth, authenticated, brand, official, freeMail, signals, attention
mx-lookupdomain, domainAscii, found, records, nullMx, implicitMx, acceptsMail, provider, signals, attention
spf-checkdomain, domainAscii, found, record, recordCount, terms, allResult, lookups, includes, signals, valid, attention
dmarc-checkdomain, domainAscii, found, record, foundAt, inherited, policy, subdomainPolicy, effectivePolicy, percentage, alignment, reports, signals, valid, attention
dkim-checkdomain, domainAscii, selectorGiven, selectorsTried, keys, signals, attention
email-verifydomain, domainAscii, status, syntaxValid, acceptsMail, mx, disposable, role, freeMail, suggestion, signals, attention
website-agedomain, domainAscii, rdapAvailable, found, registeredDomain, registered, updated, expires, ageDays, registrar, status, campaigns, signals, attention
domain-popularitydomain, domainAscii, ranked, rank, rankedDomain, refSubnets, refIps, listSize, updated, source
website-legitdomain, domainAscii, verdict, official, brand, ageDays, registered, ranked, rank, campaigns, signals, linkFlags, attention, checks

Crédits et limites

Remarque

Avec Pro, vous avez 20 crédits gratuits chaque mois

Chaque appel à l'API coûte 1 crédit. Les crédits mensuels sont utilisés en premier.

La régénération désactive vos anciennes clés. Votre solde de crédits est conservé.

cURL
curl 'https://api.nocall.io/v1/data/account' \
  --header "Authorization: Bearer $NOCALL_API_KEY"

Nouvelles tentatives et lots

Générez une nouvelle Idempotency-Key pour chaque nouvelle opération. Conservez cette clé uniquement pour réessayer la même opération avec les mêmes données.

Idempotency-Key est facultatif pour une requête individuelle et obligatoire pour un lot : 8 à 128 caractères (lettres, chiffres, points, tirets, traits de soulignement ou deux-points). Pour réessayer, gardez la même clé, route, API key et le même corps. Une réponse rejouée n’est pas refacturée. Vérifiez le solde après une réponse ambiguë.

Un lot accepte jusqu’à 50 entrées. product choisit une opération de l’exemple. Le solde doit couvrir toutes les entrées valides avant de commencer ; seuls les résultats valides terminés sont facturés. Les requêtes simultanées partagent le solde : s’il est épuisé avant le débit final, la requête renvoie 429 sans être facturée.

Idempotency-Key
8–128 ASCII: A–Z a–z 0–9 . _ : -
TTL: 24 h
product
phone-lookup
phone-risk
carrier-lookup
reverse-phone-lookup
phone-exposure
cURL
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v1/data/bulk-lookups' \
  --header "Authorization: Bearer $NOCALL_API_KEY" \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $REQUEST_ID" \
  --data '{"product":"phone-risk","inputs":[{"phone":"+12025550123","country":"US"}]}'

Résoudre un problème

HTTPInterpréter le résultat
401Clé absente, format Bearer incorrect, clé expirée ou révoquée. Vérifiez le header ou créez une nouvelle clé dans votre compte.
403Vous avez besoin de crédits : les 20 par mois inclus avec un compte Pro actif, ou des crédits achetés sur la page de votre compte. Un compte qui n’a ni les uns ni les autres reçoit 403 pro_required.
400 / 422Vérifiez JSON, phone, country et Idempotency-Key. Les erreurs de validation ne consomment pas de crédits.
409La clé d’idempotence a été utilisée avec un autre corps ou la requête est en cours. Pour réessayer la même opération, conservez son corps et attendez.
429Crédits épuisés ou limite de requêtes atteinte. Consultez /account et X-RateLimit-Remaining. Respectez Retry-After s’il est présent. ai_busy signifie que l’IA est occupée : la requête n’est pas facturée ; réessayez après Retry-After.
500 / 503Service ou fournisseur indisponible, ou bêta désactivée. Attendez et réessayez avec la même Idempotency-Key ; évitez les tentatives immédiates en boucle. tool_warming signifie que le tool est encore en démarrage : la requête n’est pas facturée ; réessayez après Retry-After.