API
Dokumentace API
Na této stránce
Ověření totožnosti
Potřebujete kredity: 20 měsíčně, které zahrnuje aktivní účet Pro, nebo kredity zakoupené na stránce vašeho účtu. Účet, který nemá ani jedno, obdrží 403 pro_required.
Tento klíč se zobrazí pouze jednou. Bezpečně jej uložte na svém serveru.
V účtu vytvoř API klíč a zkopíruj jednou zobrazenou hodnotu. Nastav NOCALL_API_KEY jako tajný údaj na serveru. Používej HTTPS; nikdy nedávej klíč do kódu prohlížeče, repozitářů, snímků ani logů.
Pošli celý klíč v Authorization: Bearer s jednou mezerou za Bearer. Nepoužívej X-API-Key ani klíč v URL.
Na /v1/data/* + /v2/* platný klíč nahrazuje důkaz ByteGuard prohlížeče. Stále se kontroluje vypršení, odvolání, předplatné, kredity a limity. Nezpřístupní jiné cesty. openapi.json a products jsou veřejné.
Authorization: Bearer <NOCALL_API_KEY>První dotaz
Všech 44 toolů je dostupných přes API: zavolejte POST /v2/<tool-id>, nebo POST /v2/tools s polem tool v těle. Každý tool má vlastní tělo JSON, popsané v jeho návodu. data.result obsahuje výsledek toolu. Používejte identifikátory z tabulky.
Pro každou novou operaci vygenerujte nový Idempotency-Key. Ponechte jej pouze pro opakování stejné operace se stejnými daty.
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"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/tools',
method='POST',
data=json.dumps({'tool': 'who-calls', 'phone': '+12025550123', 'country': 'US'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/tools', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ tool: 'who-calls', phone: '+12025550123', country: 'US' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);API v2 · tools
Všech 44 toolů je dostupných přes API: zavolejte POST /v2/<tool-id>, nebo POST /v2/tools s polem tool v těle. Každý tool má vlastní tělo JSON, popsané v jeho návodu. data.result obsahuje výsledek toolu. Používejte identifikátory z tabulky.
| tool | Účel | POST | Smyšlený příklad |
|---|---|---|---|
| who-calls | Kdo mi volá? | /v2/who-calls | {"phone":"+12025550123","country":"US"} |
| phone-exposure | Uniklo moje číslo? | /v2/phone-exposure | {"phone":"+12025550123","country":"US"} |
| phone-intelligence | Telefonní inteligence | /v2/phone-intelligence | {"phone":"+12025550123","country":"US"} |
| phone-risk | Riziko telefonu | /v2/phone-risk | {"phone":"+12025550123","country":"US"} |
| carrier-lookup | Vyhledat operátora | /v2/carrier-lookup | {"phone":"+12025550123","country":"US"} |
| verified-business | Reverzní hledání ověřené firmy | /v2/verified-business | {"phone":"+12025550123","country":"US"} |
| phone-formats | Formáty telefonních čísel | /v2/phone-formats | {"phone":"+34912345678","country":"ES"} |
| callback-cost | Kolik stojí zavolat zpět? | /v2/callback-cost | {"phone":"806123456","country":"ES"} |
| prefix-origin | Odkud je tato předvolba? | /v2/prefix-origin | {"phone":"910","country":"ES"} |
| number-validator | Ověření a formátování telefonního čísla | /v2/number-validator | {"phone":"+12025550123","country":"US"} |
| line-type | Je to mobil, nebo pevná linka? | /v2/line-type | {"phone":"+34600111222","country":"ES"} |
| premium-rate | Je to placená linka? | /v2/premium-rate | {"phone":"806","country":"ES"} |
| wangiri | Kontrola wangiri: je tento zmeškaný hovor podvod? | /v2/wangiri | {"phone":"+216","country":"ES"} |
| commercial-400 | Je tento prodejní hovor legální? | /v2/commercial-400 | {"phone":"+34400000000","country":"ES"} |
| number-research | Prozkoumat číslo s AI | /v2/number-research | {"phone":"+12025550123","country":"US","language":"en"} |
| dial-code | Chtějí po vás vytočit kód? | /v2/dial-code | {"code":"**21*+34600000000#","country":"ES"} |
| call-scam-check | Je tento hovor podvod? | /v2/call-scam-check | {"answers":{"impersonation":true,"sms_code":true,"pressure":true},"country":"ES"} |
| sms-check | Zkontrolovat, zda je SMS podvodná | /v2/sms-check | {"message":"Your parcel is held. Pay the fee at https://example.invalid/pay","sender":"Correos","language":"en","country":"GB"} |
| sms-brand | Je SMS od známé značky pravá? | /v2/sms-brand | {"brand":"correos","link":"https://correos-envio.example.invalid/pago","country":"ES"} |
| sms-sender | Kdo mi poslal tuto SMS? | /v2/sms-sender | {"sender":"Correos","country":"ES"} |
| sms-code | Chtějí po vás kód z SMS? | /v2/sms-code | {"unrequested":true,"asked":true,"sensitive":true,"shared":false} |
| sms-report | Kde nahlásit podvodnou SMS | /v2/sms-report | {"sender":"Correos","tapped":false,"gaveData":false,"country":"ES"} |
| sms-campaigns | Podvodné SMS kampaně | /v2/sms-campaigns | {} |
| sms-redact | Odstraňte své údaje ze 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-number | Mám zavolat na číslo ze zprávy? | /v2/callback-number | {"text":"Your account is locked. Call us now on 0909 879 0000 or +216 71 123 456","country":"GB"} |
| prefix-directory | Předvolby | /v2/prefix-directory | {"country":"ES","serviceClass":"premium","page":1,"limit":3} |
| operator-directory | Operátoři | /v2/operator-directory | {"country":"ES","operator":"Movistar"} |
| calling-codes | Mezinárodní předvolby | /v2/calling-codes | {"query":"216","language":"en"} |
| spam-directory | Spamová čísla | /v2/spam-directory | {"country":"US","category":"SCAM","page":1,"limit":20} |
| trends | Přehledy | /v2/trends | {"country":"ES"} |
| smishing | Co je smishing? | /v2/smishing | {"message":"CORREOS: su paquete está retenido. Pague urgente las tasas en https://correos-entrega.info/pago","country":"ES"} |
| link-check | Zkontrolovat odkaz | /v2/link-check | {"url":"http://192.168.1.1/login","country":"ES"} |
| safety-tools | Bezpečnostní nástroje | /v2/safety-tools | {"text":"URGENTE: su cuenta BBVA ha sido bloqueada, verifique en https://bbva-seguro.com/login","mode":"email","country":"ES"} |
| sms-filter | Filtr SMS spamu | /v2/sms-filter | {"country":"ES"} |
| qr-check | Je tento QR kód bezpečný? | /v2/qr-check | {"payload":"BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471","country":"ES"} |
| email-headers | Je tento e-mail pravý? | /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-lookup | Záznamy MX domény | /v2/mx-lookup | {"domain":"example.com"} |
| spf-check | Zkontrolovat SPF | /v2/spf-check | {"domain":"example.com"} |
| dmarc-check | Zkontrolovat DMARC | /v2/dmarc-check | {"domain":"example.com"} |
| dkim-check | Zkontrolovat DKIM | /v2/dkim-check | {"domain":"example.com","selector":"s1"} |
| email-verify | Zkontrolovat e-mailovou adresu | /v2/email-verify | {"email":"[email protected]"} |
| website-age | Jak starý je tento web? | /v2/website-age | {"url":"https://www.example.com/login","country":"ES"} |
| domain-popularity | Popularita domény | /v2/domain-popularity | {"url":"https://shop.example.com/cart","country":"ES"} |
| website-legit | Je tento web důvěryhodný? | /v2/website-legit | {"url":"https://[email protected]/login","country":"ES"} |
Dostupné endpointy
Zobrazujeme jen ověřená nebo veřejná technická fakta. Soukromé identity a ochranné signály zůstávají skryté.
API v1 · phone je povinný: řetězec do 64 znaků, ideálně E.164. country je podporovaný dvoupísmenný kód země; nepovinný, výchozí ES. Content-Type musí být application/json.
| HTTP | URL | Účel | Požadavky |
|---|---|---|---|
| POST | /v2/tools | Použít přes API | Authorization: Bearer · Pro |
| GET | /v2/tools | Katalog produktů NoCall | Authorization: Bearer · Pro |
| GET | /v2/openapi.json | OpenAPI 3.1 | — |
| POST | /v2/who-calls | Kdo mi volá? | Authorization: Bearer · Pro |
| POST | /v2/phone-exposure | Uniklo moje číslo? | Authorization: Bearer · Pro |
| POST | /v2/phone-intelligence | Telefonní inteligence | Authorization: Bearer · Pro |
| POST | /v2/phone-risk | Riziko telefonu | Authorization: Bearer · Pro |
| POST | /v2/carrier-lookup | Vyhledat operátora | Authorization: Bearer · Pro |
| POST | /v2/verified-business | Reverzní hledání ověřené firmy | Authorization: Bearer · Pro |
| POST | /v2/phone-formats | Formáty telefonních čísel | Authorization: Bearer · Pro |
| POST | /v2/callback-cost | Kolik stojí zavolat zpět? | Authorization: Bearer · Pro |
| POST | /v2/prefix-origin | Odkud je tato předvolba? | Authorization: Bearer · Pro |
| POST | /v2/number-validator | Ověření a formátování telefonního čísla | Authorization: Bearer · Pro |
| POST | /v2/line-type | Je to mobil, nebo pevná linka? | Authorization: Bearer · Pro |
| POST | /v2/premium-rate | Je to placená linka? | Authorization: Bearer · Pro |
| POST | /v2/wangiri | Kontrola wangiri: je tento zmeškaný hovor podvod? | Authorization: Bearer · Pro |
| POST | /v2/commercial-400 | Je tento prodejní hovor legální? | Authorization: Bearer · Pro |
| POST | /v2/number-research | Prozkoumat číslo s AI | Authorization: Bearer · Pro |
| POST | /v2/dial-code | Chtějí po vás vytočit kód? | Authorization: Bearer · Pro |
| POST | /v2/call-scam-check | Je tento hovor podvod? | Authorization: Bearer · Pro |
| POST | /v2/sms-check | Zkontrolovat, zda je SMS podvodná | Authorization: Bearer · Pro |
| POST | /v2/sms-brand | Je SMS od známé značky pravá? | Authorization: Bearer · Pro |
| POST | /v2/sms-sender | Kdo mi poslal tuto SMS? | Authorization: Bearer · Pro |
| POST | /v2/sms-code | Chtějí po vás kód z SMS? | Authorization: Bearer · Pro |
| POST | /v2/sms-report | Kde nahlásit podvodnou SMS | Authorization: Bearer · Pro |
| POST | /v2/sms-campaigns | Podvodné SMS kampaně | Authorization: Bearer · Pro |
| POST | /v2/sms-redact | Odstraňte své údaje ze SMS | Authorization: Bearer · Pro |
| POST | /v2/callback-number | Mám zavolat na číslo ze zprávy? | Authorization: Bearer · Pro |
| POST | /v2/prefix-directory | Předvolby | Authorization: Bearer · Pro |
| POST | /v2/operator-directory | Operátoři | Authorization: Bearer · Pro |
| POST | /v2/calling-codes | Mezinárodní předvolby | Authorization: Bearer · Pro |
| POST | /v2/spam-directory | Spamová čísla | Authorization: Bearer · Pro |
| POST | /v2/trends | Přehledy | Authorization: Bearer · Pro |
| POST | /v2/smishing | Co je smishing? | Authorization: Bearer · Pro |
| POST | /v2/link-check | Zkontrolovat odkaz | Authorization: Bearer · Pro |
| POST | /v2/safety-tools | Bezpečnostní nástroje | Authorization: Bearer · Pro |
| POST | /v2/sms-filter | Filtr SMS spamu | Authorization: Bearer · Pro |
| POST | /v2/qr-check | Je tento QR kód bezpečný? | Authorization: Bearer · Pro |
| POST | /v2/email-headers | Je tento e-mail pravý? | Authorization: Bearer · Pro |
| POST | /v2/mx-lookup | Záznamy MX domény | Authorization: Bearer · Pro |
| POST | /v2/spf-check | Zkontrolovat SPF | Authorization: Bearer · Pro |
| POST | /v2/dmarc-check | Zkontrolovat DMARC | Authorization: Bearer · Pro |
| POST | /v2/dkim-check | Zkontrolovat DKIM | Authorization: Bearer · Pro |
| POST | /v2/email-verify | Zkontrolovat e-mailovou adresu | Authorization: Bearer · Pro |
| POST | /v2/website-age | Jak starý je tento web? | Authorization: Bearer · Pro |
| POST | /v2/domain-popularity | Popularita domény | Authorization: Bearer · Pro |
| POST | /v2/website-legit | Je tento web důvěryhodný? | Authorization: Bearer · Pro |
| GET | /v1/data/account | Klíč API a kredity | Authorization: Bearer |
| POST | /v1/data/phone-lookups | Telefonní inteligence | Authorization: Bearer · Pro |
| POST | /v1/data/phone-risk-checks | Riziko telefonu | Authorization: Bearer · Pro |
| POST | /v1/data/carrier-lookups | Vyhledat operátora | Authorization: Bearer · Pro |
| POST | /v1/data/reverse-phone-lookups | Reverzní hledání ověřené firmy | Authorization: Bearer |
| POST | /v1/data/phone-exposure-checks | Uniklo moje číslo? | Authorization: Bearer · Pro |
| POST | /v1/data/bulk-lookups | Hromadné hledání čísel | Authorization: Bearer |
| GET | /v1/data/products | Katalog produktů NoCall | — |
| GET | /v1/data/openapi.json | OpenAPI 3.1 | — |
Odpovědi
Smyšlený příklad, nikoli skutečný dotaz. Nevolejte ani neotevírejte jeho odkazy.
data obsahuje výsledek; meta zahrnuje requestId, unitsCharged a případné využití. Fiktivní ukázka zobrazuje zůstatek po dotazu. Platný výsledek bez dat také stojí 1 kredit; chyby validace, poskytovatele a čtení zůstatku jsou zdarma. Chybějící data nedokazují bezpečnost čísla. Úplná schémata jsou v OpenAPI.
{
"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
}
}
}| tool | data.result |
|---|---|
| who-calls | phoneNumber, found, updatedAt, risk, reportCount, categories, verified, carrier, verifiedBusiness |
| phone-exposure | atRisk |
| phone-intelligence | phoneNumber, found, updatedAt, risk, reportCount, categories, verified, carrier, verifiedBusiness, commentCount, aiRiskLevel, prefixRisk |
| phone-risk | phoneNumber, found, updatedAt, risk, signals |
| carrier-lookup | phoneNumber, found, updatedAt, carrier |
| verified-business | phoneNumber, found, updatedAt, verifiedBusiness |
| phone-formats | e164, national, international, callingCode, country, valid |
| callback-cost | tier, scope, callingCode, registry |
| prefix-origin | kind, planLoaded, numberType, foreignCode, national, row, complete, rows, factsType |
| number-validator | valid, possible, country, callingCode, type, e164 |
| line-type | e164, valid, type, lineKind |
| premium-rate | category, callbackRisk, prefix, callingCode, source |
| wangiri | verdict, code, nanpArea, entry |
| commercial-400 | verdict, prefix |
| number-research | answer, sources, countryCode, language, cached |
| dial-code | code, kind, action, service, forwardsTo, calls, risk, undo, operator |
| call-scam-check | verdict, signals, actions, reportChannel |
| sms-check | verdict, confidence, reason |
| sms-brand | verdict, host, brand, officialDomains, sightings |
| sms-sender | kind, tooLong, brand, lookalike, digits, code |
| sms-code | verdict, severity, serviceRecoverySteps, stepCodes |
| sms-report | channel, verified, stepCodes, reportFields |
| sms-campaigns | totalCampaigns, totalSightings, topBrands, topDomains |
| sms-redact | text, counts, total |
| callback-number | numbers, signals, attention |
| prefix-directory | countryCode, callingCode, planVersion, total, page, limit, hasMore, rows |
| operator-directory | operators, specialPrefixes |
| calling-codes | rows, total |
| spam-directory | view, totals, categories, topReported, category, total, page, limit, hasMore, rows |
| trends | totals, activity24h, verification, freshness, categoryDistribution, phoneTypes, topOperators, growthTimeline, topPrefixes, searchTrends, communityDistribution, impersonationRanking, aiBreakdown |
| smishing | verdict, score, attention, signals, hosts, linkFlags, brand, brandSlug |
| link-check | host, hostAscii, official, brand, hosts, linkFlags, signals, attention |
| safety-tools | attention, signals, hosts, linkFlags |
| sms-filter | country, version, updatedAt, source, counts |
| qr-check | payload, signals, attention, hosts, linkFlags, link, numbers |
| email-headers | fromDomain, fromDomainAscii, displayName, replyToDomain, returnPathDomain, senderDomain, subject, auth, authenticated, brand, official, freeMail, signals, attention |
| mx-lookup | domain, domainAscii, found, records, nullMx, implicitMx, acceptsMail, provider, signals, attention |
| spf-check | domain, domainAscii, found, record, recordCount, terms, allResult, lookups, includes, signals, valid, attention |
| dmarc-check | domain, domainAscii, found, record, foundAt, inherited, policy, subdomainPolicy, effectivePolicy, percentage, alignment, reports, signals, valid, attention |
| dkim-check | domain, domainAscii, selectorGiven, selectorsTried, keys, signals, attention |
| email-verify | domain, domainAscii, status, syntaxValid, acceptsMail, mx, disposable, role, freeMail, suggestion, signals, attention |
| website-age | domain, domainAscii, rdapAvailable, found, registeredDomain, registered, updated, expires, ageDays, registrar, status, campaigns, signals, attention |
| domain-popularity | domain, domainAscii, ranked, rank, rankedDomain, refSubnets, refIps, listSize, updated, source |
| website-legit | domain, domainAscii, verdict, official, brand, ageDays, registered, ranked, rank, campaigns, signals, linkFlags, attention, checks |
Kredity a limity
S Pro máte každý měsíc 20 kreditů zdarma
Každé volání API stojí 1 kredit. Nejprve se čerpají měsíční.
Obnovení deaktivuje předchozí klíče. Zůstatek kreditů se nezmění.
curl 'https://api.nocall.io/v1/data/account' \
--header "Authorization: Bearer $NOCALL_API_KEY"Opakování a hromadné dotazy
Pro každou novou operaci vygenerujte nový Idempotency-Key. Ponechte jej pouze pro opakování stejné operace se stejnými daty.
Idempotency-Key je pro jednotlivé dotazy volitelný, pro dávky povinný: 8–128 znaků (písmena, číslice, tečky, pomlčky, podtržítka či dvojtečky). Při opakování zachovej stejný identifikátor, cestu, API klíč a tělo. Přehraná odpověď se znovu neúčtuje. Po nejasné odpovědi ověř zůstatek.
Dávka přijme nejvýše 50 vstupů. product vybírá operaci z ukázky. Před spuštěním musí zůstatek stačit na všechny platné vstupy; účtují se jen dokončené platné výsledky. Souběžné požadavky sdílejí zůstatek: dojde-li před konečným odečtem, požadavek vrátí 429 bez účtování.
8–128 ASCII: A–Z a–z 0–9 . _ : -
TTL: 24 hphone-lookup
phone-risk
carrier-lookup
reverse-phone-lookup
phone-exposureREQUEST_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"}]}'Řešení potíží
| HTTP | Jak chápat výsledek |
|---|---|
| 401 | Chybí klíč, formát Bearer je chybný nebo klíč vypršel či byl odvolán. Ověř hlavičku nebo vytvoř v účtu nový klíč. |
| 403 | Potřebujete kredity: 20 měsíčně, které zahrnuje aktivní účet Pro, nebo kredity zakoupené na stránce vašeho účtu. Účet, který nemá ani jedno, obdrží 403 pro_required. |
| 400 / 422 | Ověř JSON, phone, country a Idempotency-Key. Validační chyby nespotřebují kredity. |
| 409 | Klíč idempotence byl použit s jiným tělem nebo se požadavek ještě zpracovává. Pro stejnou operaci zachovej tělo a počkej. |
| 429 | Kredity došly nebo byl dosažen limit požadavků. Ověř /account a X-RateLimit-Remaining. Respektuj Retry-After, pokud je uveden. ai_busy znamená, že AI je vytížená: požadavek se neúčtuje; zkus to znovu po Retry-After. |
| 500 / 503 | Služba či poskytovatel nejsou dostupní nebo je beta vypnutá. Počkej a opakuj se stejným Idempotency-Key; vyhni se okamžitým opakovacím smyčkám. tool_warming znamená, že se tool teprve spouští: požadavek se neúčtuje; zkus to znovu po Retry-After. |
