// post /v1/bulk/verifier
Bulk Email Verifier API
نظّف قوائم البريد الكبيرة وقيّمها عبر مسار تحقق واحد غير متزامن مصمم للمرسلين على نطاق واسع.
Email addressesحتى 20,000 صف
curl -X POST "https://api.tomba.io/v1/bulk/verifier" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Email Verifier job","list":"richard@piedpiper.com\njohn@example.com","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'const res = await fetch("https://api.tomba.io/v1/bulk/verifier", {
method: "POST",
headers: {
"X-Tomba-Key": process.env.TOMBA_API_KEY,
"X-Tomba-Secret": process.env.TOMBA_SECRET_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Email Verifier job",
"list": "richard@piedpiper.com\njohn@example.com",
"launch": true,
"webhook_url": "https://hooks.example.com/tomba"
})
});
const { data } = await res.json(); // { id }import os, requests
res = requests.post(
"https://api.tomba.io/v1/bulk/verifier",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
json={
"name": "Email Verifier job",
"list": "richard@piedpiper.com\njohn@example.com",
"launch": True,
"webhook_url": "https://hooks.example.com/tomba"
},
)
job_id = res.json()["data"]["id"]// 01 · الطلب
Email Verifier مجمّع هو طلب HTTPS واحد
أرسل المعاملات مع مفتاحك وسرّك. كل SDK وCLI وخادم MCP ينفّذون هذا الاستدعاء نفسه.
- type
- verifier
- list | data | file
- Email addresses
- launch
- القيمة true تبدأ المهمة فورًا
- webhook_url
- يستقبل حدثًا موقّعًا عند انتهاء المهمة
- rows
- حتى 20,000 لكل مهمة
curl -X POST "https://api.tomba.io/v1/bulk/verifier" \
-H "X-Tomba-Key: $TOMBA_API_KEY" \
-H "X-Tomba-Secret: $TOMBA_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Email Verifier job","list":"richard@piedpiper.com\njohn@example.com","launch":true,"webhook_url":"https://hooks.example.com/tomba"}'const res = await fetch("https://api.tomba.io/v1/bulk/verifier", {
method: "POST",
headers: {
"X-Tomba-Key": process.env.TOMBA_API_KEY,
"X-Tomba-Secret": process.env.TOMBA_SECRET_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Email Verifier job",
"list": "richard@piedpiper.com\njohn@example.com",
"launch": true,
"webhook_url": "https://hooks.example.com/tomba"
})
});
const { data } = await res.json(); // { id }import os, requests
res = requests.post(
"https://api.tomba.io/v1/bulk/verifier",
headers={
"X-Tomba-Key": os.environ["TOMBA_API_KEY"],
"X-Tomba-Secret": os.environ["TOMBA_SECRET_KEY"],
},
json={
"name": "Email Verifier job",
"list": "richard@piedpiper.com\njohn@example.com",
"launch": True,
"webhook_url": "https://hooks.example.com/tomba"
},
)
job_id = res.json()["data"]["id"]// 02 · الاستجابة
ما يُعاد إليك
JSON، متطابقة في كل لغة. الحقول التي لا تعرفها Tomba تكون null، ولا تُخمَّن أبدًا.
GET
/email-verifierdata.email.resultstring- deliverable, risky or undeliverable; empty for a disposable domain
data.email.statusstring- valid, accept_all, invalid, unknown or disposable (compare case-insensitively: a live check can return Valid)
data.email.scoreinteger- Confidence: 99 for valid, 77 or more for accept_all, 2 for disposable
data.email.smtp_providerstring | null- Mail provider from the MX records, such as Google
data.email.mx.recordsarray | null- The domain's MX hosts
data.email.mx_check, data.email.smtp_checkboolean- The domain has MX records (smtp_check is the same check; status says whether the mailbox exists)
data.email.accept_all, data.email.greylisted, data.email.blockboolean- Catch-all domain, check deferred, check refused by the server
data.email.disposable, data.email.webmail, data.email.gibberish, data.email.regexboolean- Disposable or webmail domain, random-looking address, valid syntax
data.sources[]array- Where the address was found
data.phone_data[]array | null- Phone numbers, when you send enrich_mobile
POST /bulk/verifier
201 Created
{
"data": {
"id": 1042
}
}كل صف، كما يعيده GET /email-verifier
200 OK
{
"data": {
"email": {
"email": "richard@piedpiper.com",
"result": "deliverable",
"status": "valid",
"score": 99,
"smtp_provider": "Google",
"mx": {
"records": [
"aspmx.l.google.com",
"alt1.aspmx.l.google.com"
]
},
"mx_check": true,
"smtp_server": true,
"smtp_check": true,
"accept_all": false,
"greylisted": false,
"block": false,
"gibberish": false,
"disposable": false,
"webmail": false,
"regex": true,
"whois": {
"registrar_name": null,
"referral_url": null,
"created_date": null
}
},
"sources": [
{
"uri": "https://piedpiper.com/blog/engineering",
"website_url": "piedpiper.com",
"extracted_on": "2024-06-01T09:14:07+01:00",
"last_seen_on": "2025-01-10T17:02:44+01:00",
"still_on_page": true
}
],
"phone_data": null
}
}// 03 · التكلفة والحدود
تكلفة الاستدعاء
لا يُخصم الاستدعاء إلا وفق الشرط أدناه. تعتمد حدود المعدّل على خطتك.
// التكلفة
1 verification credit per row, except disposable addresses. Plus 5 search credits per row with phone data.
Charged once, at the first download; later downloads are free
- Jobs created: 15 per day for each type
- Running jobs: 2 per type
- Downloads: 25 per day for each job
- Request size: 4 MB (CSV, list or rows)
أنشئ عملية مجمّعة برفع قائمة عناوين بريد، ثم شغّل العملية. يتحقق API من كل العناوين بشكل غير متزامن بفحوصات متعددة الطبقات. استخدم Webhooks أو الاستعلام الدوري لمتابعة التقدم.
You can verify up to 100,000 email addresses per bulk operation. For larger lists, create multiple bulk operations.
يخضع كل عنوان للتحقق من الصياغة وفحص سجلات MX والتحقق عبر SMTP واكتشاف البريد المؤقت واكتشاف catch-all وتقييم قابلية التسليم.
إذا ارتد ارتدادًا صارمًا عنوانٌ أعاده Tomba على أنه valid، يُستردّ الرصيد بموجب ضمان جودة البيانات (نتيجة التحقق deliverable أو درجة البحث 60 أو أكثر، مع الإرسال خلال 30 يومًا من نطاق يملك SPF وDKIM وDMARC).
تعتمد السرعة على حجم القائمة ومدى سرعة استجابة كل خادم بريد. استعلم عن حالة المهمة أو اضبط Webhook لتُبلَّغ عند انتهائها.
تتضمن كل نتيجة البريد وحالة التحقق (valid وinvalid وaccept_all وunknown) ودرجة الثقة ومؤشر البريد المؤقت ومزوّد SMTP وسجلات MX.
بعد اكتمال المعالجة، استخدم نقطة نهاية التنزيل للحصول على النتائج بصيغة CSV أو JSON. تتضمن النتائج كل بيانات التحقق لكل عنوان.
نعم، اضبط رابط webhook لتتلقى إشعارات عند اكتمال التحقق المجمّع أو عند حدوث أخطاء أثناء المعالجة.
قد تكون نطاقات accept-all صالحة لكنها أكثر خطورة. أعطِ الأولوية لدرجات الثقة الأعلى وفكّر في استراتيجيات إرسال مقسّمة لهذه السجلات.
تحقق من القوائم قرب موعد الإرسال، واستبعد العناوين غير الصالحة والمؤقتة، وأعد التحقق من القوائم القديمة دوريًا للحفاظ على قابلية التسليم.