Funkční návody pro vývojáře a tvůrce automatizací. Každý příspěvek obsahuje konkrétní konfiguraci, workflow nebo skript pro API Cold Leads a uvádí platné limity a cenu v kreditech. API vyžaduje tajný klíč z tarifu Business.
Adresy, identifikátory a výsledky v příkladech jsou ilustrativní. Doména example.com je vyhrazená pro dokumentaci, takže skutečná kontrola těchto adres vrátí invalid.
Vývojáři, kteří používají AI asistenty v Cursoru, Claude Desktop nebo Windsurfu5 min čtení
Kopírování adres mezi asistentem, CRM a ověřovacím nástrojem je pomalé a náchylné k chybám a asistent, kterého požádáte o kontakty, si nějaké klidně vymyslí.
Po připojení může asistent spravovat vlastní kontakty, importovat strukturované řádky, číst synchronizované konverzace, spravovat šablony a koncepty kampaní a připravit webový formulář. Odesílání vyžaduje výslovné potvrzení uživatele a podléhá ochraně souhlasu, odhlášení, DNC a limitům Cold Leads.
Co získáte: Asistent propojený s vašimi kontakty, e-mailovou schránkou a návrhy kampaní přes MCP nebo Node SDK.
Volat ověřovací API pro každý řádek zvlášť je pomalé a naráží na limity požadavků, zatímco hromadné API potřebuje úlohu, smyčku dotazů na stav a spolehlivý způsob, jak výsledky přiřadit zpět ke správným řádkům.
Jedno workflow vezme až 5 000 řádků, které ještě nemají výsledek, pošle jejich unikátní adresy jako jednu hromadnou úlohu Cold Leads, každých 5 sekund se dotáže na její stav, stáhne výsledky, každý řádek nasměruje podle stavu a do listu zapíše stav, skóre, důvod a další krok. Pro dalších 5 000 ho spusťte znovu.
Co získáte: Čtyři vyplněné sloupce v každém řádku (verify_status, verify_score, verify_reason, next_step) a workflow, které můžete spouštět znovu, dokud nebude hotový celý list.
Adresy, které nikdo nezkontroloval, jdou rovnou do rozesílané kampaně. Neplatné se vracejí jako nedoručitelné a každý bounce jde na vrub schránkám, ze kterých kampaň odchází.
Mezi trigger a Instantly vložte kontrolu Cold Leads: jeden HTTP požadavek na lead, filtr, který propustí jen výsledky se stavem valid, a druhý HTTP požadavek, který lead přidá do vaší kampaně přes Instantly API v2.
Co získáte: Běžící scénář v Make: nový lead, ověření v Cold Leads, filtr, lead přidaný do kampaně v Instantly. Leady, které filtrem neprojdou, tam skončí nebo jdou do listu ke kontrole.
Modul Cold Leads, Body content
{
"email": "{{map the e-mail field of the trigger here}}",
"timeout_ms": 10000
}
Kontrola jedné adresy na požadavek je pomalá a naráží na limit požadavků. Naivní hromadná smyčka může otevřít víc úloh, než účet povoluje, po pádu zaplatit dvakrát nebo potichu vynechat řádky, jejichž výsledky se nikdy nevrátily.
Sloupec normalizujte a odstraňte z něj duplicity, posílejte hromadné úlohy až po 5 000 adresách, držte otevřených nejvýš pět, dotazujte se na každou úlohu až do jejího konce, přečkejte limity požadavků, při vyčerpání kreditů čistě skončete a uložte id úloh, aby druhé spuštění navázalo, místo aby platilo znovu.
Co získáte: Vaše CSV se třemi novými sloupci (verify_status, verify_score, verify_reason) a malý soubor .jobs.json, díky kterému lze běh po přerušení obnovit.
verify_csv.py
"""Verify a large CSV with the Cold Leads bulk API (Python 3.9+, httpx).
pip install httpx
export COLDLEADS_API_KEY=sk_...
python verify_csv.py leads.csv leads_verified.csv --column email
Addresses are normalised and de-duplicated, sent in jobs of up to 5,000 with at most
5 jobs open at a time, and every job is polled until it is done. The output is the
input CSV plus verify_status, verify_score and verify_reason. Job ids are saved next
to the output file, so a second run resumes the same jobs instead of paying twice.
Kód pro ověřování je plný parametrů a hodnot stavu specifických pro dodavatele. Výměna endpointu bez jejich převodu potichu změní, na které adresy pipeline posílá.
Každý parametr a každé pole odpovědi převeďte na protějšek v Cold Leads, to, co Cold Leads nenahrazuje (data o lidech, vyhledávání podle domény), ponechte, kde je, a použijte malý adaptér, aby stávající kód zachoval svou podobu.
Co získáte: Převodní tabulka pole po poli, adaptér v Pythonu, který z Cold Leads vrací pole ve stylu Hunteru, a tabulka nákladů na Cold Leads pro 1 000, 10 000 a 50 000 ověření měsíčně.
hunter_adapter.py
# pip install httpx
# Drop-in helpers for code written against Hunter's email-verifier and email-finder.
# They call Cold Leads and return Hunter-style fields, plus the raw Cold Leads answer.
import os
import httpx
cold = httpx.Client(
base_url="https://coldleads.app/api/v1",
headers={"x-api-key": os.environ["COLDLEADS_API_KEY"]}, # the key goes in a header, never in the URL
Agent, který potřebuje ověřování e-mailů, by nikdy neměl mít u sebe platební kartu ani si sám sjednat předplatné. Poslat člověka, aby se zaregistroval, vybral tarif a zkopíroval klíč, úlohu přeruší a klíče vkládané do chatů unikají.
Agent bez klíče zavolá jeden endpoint a dostane odkaz na Stripe Checkout pro svého vlastníka a k tomu tajný claim token. Vlastník si tarif prohlédne a rozhodne. Po zaplacení si agent s claim tokenem vyzvedne API klíč právě jednou, dotazováním na stav nebo po podepsaném callbacku.
Co získáte: Funkční tajný API klíč k novému účtu vlastníka s tarifem Business, doručený agentovi jednou, a e-mail vlastníkovi s odkazem pro otevření webové aplikace Cold Leads.
Některé poštovní servery přijímají poštu pro jakoukoli adresu na své doméně, takže kontrola schránky nerozliší skutečného člověka od vymyšleného jména. Jiné servery odpovídají jen dočasně nebo nejsou dosažitelné vůbec a samotné označení valid může zakrýt, že se schránka nikdy nekontrolovala.
Pochopte SMTP dialog, který ověřovač vede, a co která odpověď znamená, a pak čtěte stav, skóre a kódy důvodu, které Cold Leads vrací, včetně případů, kdy test schránky neproběhl.
Co získáte: Rozhodovací tabulka, která každému kódu důvodu Cold Leads přiřadí akci, a skript, který ji použije na jednu adresu.
Dvě SMTP relace (ilustrace)
# Session 1: is the address accepted?
S: 220 mx1.example.com ESMTP
C: EHLO verifier.example.net
S: 250-mx1.example.com
S: 250 SIZE 52428800
C: MAIL FROM:<check@verifier.example.net>
S: 250 2.1.0 Sender OK
C: RCPT TO:<anna@example.com>
S: 250 2.1.5 Recipient OK <- accepted (a 550 here would mean: rejected)
C: QUIT <- no DATA command: nothing is delivered
Kontakty přicházejí z formulářů, importů a ručního zadávání s překlepy, mrtvými doménami nebo úplně bez adresy a nikdo je nekontroluje, dokud se e-maily z kampaně nezačnou vracet jako nedoručitelné.
Zkontrolujte každý kontakt při jeho vytvoření: akcí Custom code ve workflow HubSpotu nebo malým přijímačem webhooků pro Pipedrive. Kontakt s e-mailem se ověří; kontakt bez e-mailu, ale se jménem a webem firmy dostane navrženou adresu, jasně označenou jako odhad.
Co získáte: Vlastnosti kontaktu v HubSpotu nebo pole osoby v Pipedrive, které ukazují stav, skóre a důvod z Cold Leads, nebo navrženou adresu s její metodou a mírou jistoty.
Custom code (Node.js)
// HubSpot workflow, Custom code action (Node.js)
// Secret: COLDLEADS_API_KEY (your Cold Leads secret key, sk_...)
// Properties to include in code: email, firstname, lastname, website
// Data outputs (add them in the action): verify_status, verify_reason, suggested_email, find_method (String);
// verify_score, find_confidence (Number); mailbox_checked (Boolean)
const axios = require("axios");
const coldleads = axios.create({
baseURL: "https://coldleads.app/api/v1",
headers: { "x-api-key": process.env.COLDLEADS_API_KEY },
Agent, po kterém chcete kontaktní údaje, bude hádat a uhodnutá adresa vypadá přesně jako skutečná. Bez ověřovacího nástroje nepozná rozdíl ani agent, ani člověk, který čte jeho výstup.
Dejte agentovi tři úzce vymezené nástroje nad API Cold Leads: hledání ve vlastním CRM uživatele, ověření adresy a odhad adresy ze jména a domény s poctivým označením metody. Chyby se vracejí jako data, takže agent může reagovat, místo aby spadl.
Co získáte: Sdílený API klient, třídy nástrojů pro CrewAI a pro LangChain a minimální crew a agent, které je používají.
coldleads_tools.py
# coldleads_tools.py - shared by the CrewAI and LangChain examples (pip install httpx)
import json
import os
import httpx
VERIFY_DESC = (
"Verify one e-mail address with Cold Leads (costs 1 credit). Returns status valid, risky or invalid, "
"a score from 0 to 100 and reason codes. The last reason says what was checked: ok means a mail server "
"accepted the mailbox, smtp_unreachable means the mailbox itself was not checked, catch_all means the "
Exportovat list do ověřovacího nástroje a vkládat výsledky zpět je zdlouhavé. Naivní vlastní funkce volá API znovu, a znovu utratí kredit, pokaždé, když Sheets vzorec spustí znovu.
Dvě vlastní funkce volají API Cold Leads přes UrlFetchApp, klíč čtou z vlastností skriptu a každou odpověď drží v cache skriptu až šest hodin, takže opakované spuštění stejného vzorce za stejný vstup další kredit neutratí.
Co získáte: Tři buňky s výsledkem na řádek: stav, skóre a důvod z =VERIFY_EMAIL, nebo adresa, metoda a míra jistoty z =FIND_EMAIL.
Code.gs
// Cold Leads custom functions for Google Sheets (Extensions → Apps Script, paste into Code.gs).
// Key: Project Settings → Script Properties → Add script property COLDLEADS_API_KEY = sk_...
const COLDLEADS_API = 'https://coldleads.app/api/v1';
const CACHE_SECONDS = 21600; // 6 hours, the longest CacheService keeps an entry
/**
* Verifies an e-mail address with Cold Leads. Fills three cells: status, score, last reason code.
* Costs 1 Cold Leads credit unless the same address was answered from this script's cache.
*
* @param {string} email The address, for example A2.