EmailVerify LogoEmailVerify

API Reference

Complete email checker API reference. Endpoints, parameters, response codes for email verification and validation.

EmailVerify API 是一個 RESTful 服務,提供強大的電郵驗證功能。所有 API 請求應通過 HTTPS 進行。

基礎 URL

https://api.emailverify.ai/v1

認證

所有 API 請求都需要在 Authorization 標頭中使用 Bearer 令牌進行認證:

Authorization: Bearer YOUR_API_KEY

EmailVerify 儀表板 獲取您的 API 密鑰。

範例

curl -X POST https://api.emailverify.ai/v1/verify \
  -H "Authorization: Bearer bv_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"email": "test@example.com"}'

速率限制

方案每小時請求數每日請求數
Free1001,000
Starter1,00010,000
Professional10,000100,000
Enterprise自訂自訂

速率限制資訊包含在響應標頭中:

標頭說明
X-RateLimit-Limit允許的最大請求數
X-RateLimit-Remaining當前時段內剩餘請求數
X-RateLimit-Reset限制重置的 Unix 時間戳

當達到速率限制時,您會收到 429 Too Many Requests 響應:

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Please try again later.",
    "retry_after": 3600
  }
}

端點

單個電郵驗證

驗證單個電郵地址並返回詳細結果。

POST /verify

請求

{
  "email": "user@example.com",
  "smtp_check": true,
  "timeout": 5000
}

參數

參數類型必填預設值說明
emailstring-要驗證的電郵地址
smtp_checkbooleantrue執行 SMTP 郵箱驗證
timeoutinteger5000請求超時時間(毫秒,最大:30000)

響應

{
  "email": "user@example.com",
  "status": "valid",
  "result": {
    "deliverable": true,
    "valid_format": true,
    "valid_domain": true,
    "valid_mx": true,
    "disposable": false,
    "role": false,
    "catchall": false,
    "free": false,
    "smtp_valid": true
  },
  "score": 0.95,
  "reason": null,
  "credits_used": 1
}

響應欄位

欄位類型說明
emailstring已驗證的電郵地址
statusstring驗證狀態:validinvalidunknownaccept_all
resultobject詳細的驗證結果
scorenumber置信度分數(0.0 - 1.0)
reasonstring無效/未知狀態的原因(可為空)
credits_usedinteger消耗的積分數量

結果物件欄位

欄位類型說明
deliverableboolean電郵是否能接收訊息
valid_formatboolean電郵格式是否有效
valid_domainboolean域名是否存在
valid_mxboolean域名是否有 MX 記錄
disposableboolean是否為一次性電郵服務
roleboolean是否為角色型電郵(info@、support@)
catchallboolean域名是否接受所有電郵
freeboolean是否為免費電郵服務商
smtp_validbooleanSMTP 驗證是否通過

批量電郵驗證

提交多個電郵地址進行驗證。返回用於追蹤進度的任務 ID。

POST /verify/bulk

請求

{
  "emails": [
    "user1@example.com",
    "user2@example.com",
    "user3@example.com"
  ],
  "smtp_check": true,
  "webhook_url": "https://your-app.com/webhooks/emailverify"
}

參數

參數類型必填預設值說明
emailsarray-電郵地址陣列(最大:10,000)
smtp_checkbooleantrue執行 SMTP 驗證
webhook_urlstring-接收完成通知的 URL

響應

{
  "job_id": "job_abc123xyz",
  "status": "processing",
  "total": 3,
  "processed": 0,
  "valid": 0,
  "invalid": 0,
  "unknown": 0,
  "credits_used": 3,
  "created_at": "2025-01-15T10:30:00Z"
}

獲取批量任務狀態

檢查批量驗證任務的狀態。

GET /verify/bulk/{job_id}

響應(處理中)

{
  "job_id": "job_abc123xyz",
  "status": "processing",
  "total": 1000,
  "processed": 450,
  "valid": 380,
  "invalid": 50,
  "unknown": 20,
  "progress_percent": 45,
  "created_at": "2025-01-15T10:30:00Z"
}

響應(已完成)

{
  "job_id": "job_abc123xyz",
  "status": "completed",
  "total": 1000,
  "processed": 1000,
  "valid": 850,
  "invalid": 100,
  "unknown": 50,
  "progress_percent": 100,
  "created_at": "2025-01-15T10:30:00Z",
  "completed_at": "2025-01-15T10:35:00Z"
}

任務狀態值

狀態說明
pending任務已排隊
processing任務處理中
completed任務成功完成
failed任務失敗(查看錯誤欄位)

獲取批量任務結果

檢索已完成批量任務的驗證結果。

GET /verify/bulk/{job_id}/results

查詢參數

參數類型預設值說明
limitinteger100每頁結果數(最大:1000)
offsetinteger0起始位置
statusstring-按狀態篩選:validinvalidunknown

響應

{
  "job_id": "job_abc123xyz",
  "total": 1000,
  "limit": 100,
  "offset": 0,
  "results": [
    {
      "email": "user1@example.com",
      "status": "valid",
      "result": {
        "deliverable": true,
        "disposable": false,
        "role": false
      },
      "score": 0.95
    },
    {
      "email": "user2@example.com",
      "status": "invalid",
      "result": {
        "deliverable": false,
        "reason": "mailbox_not_found"
      },
      "score": 0.10
    }
  ]
}

檢查積分

獲取當前積分餘額和使用資訊。

GET /credits

響應

{
  "available": 9500,
  "used": 500,
  "total": 10000,
  "plan": "Professional",
  "resets_at": "2025-02-01T00:00:00Z",
  "rate_limit": {
    "requests_per_hour": 10000,
    "remaining": 9850
  }
}

Webhook

創建 Webhook

POST /webhooks
{
  "url": "https://your-app.com/webhooks/emailverify",
  "events": ["verification.completed", "bulk.completed"],
  "secret": "your-webhook-secret"
}

列出 Webhook

GET /webhooks

刪除 Webhook

DELETE /webhooks/{webhook_id}

Webhook 事件

事件說明
verification.completed單個電郵驗證完成
bulk.completed批量任務完成
bulk.failed批量任務失敗
credits.low積分低於閾值

Webhook 負載

{
  "event": "bulk.completed",
  "timestamp": "2025-01-15T10:35:00Z",
  "data": {
    "job_id": "job_abc123xyz",
    "status": "completed",
    "total": 1000,
    "valid": 850,
    "invalid": 100,
    "unknown": 50
  },
  "signature": "sha256=..."
}

驗證狀態

狀態含義建議操作
valid電郵存在且能接收訊息安全發送
invalid電郵不存在或無法接收從列表中移除
unknown無法確定有效性稍後重試或謹慎使用
accept_all域名接受所有電郵(全接收)監控退信情況

錯誤響應

所有錯誤遵循一致的格式:

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message",
    "details": "Additional context (optional)"
  }
}

HTTP 狀態碼

代碼說明
200成功
400錯誤請求 - 無效參數
401未授權 - 無效或缺少 API 密鑰
403禁止訪問 - 權限不足
404未找到 - 資源不存在
429請求過多 - 達到速率限制
500內部伺服器錯誤
503服務不可用

錯誤代碼

代碼HTTP 狀態說明
INVALID_API_KEY401API 密鑰無效或缺失
RATE_LIMIT_EXCEEDED429請求過多
INSUFFICIENT_CREDITS403積分不足
INVALID_EMAIL400電郵格式無效
INVALID_REQUEST400請求主體格式錯誤
JOB_NOT_FOUND404批量任務 ID 未找到
TIMEOUT504驗證超時

最佳實踐

1. 使用環境變數

切勿硬編碼 API 密鑰:

// 正確
const apiKey = process.env.EMAILVERIFY_API_KEY;

// 錯誤 - 不要這樣做
const apiKey = 'bv_live_xxx';

2. 處理速率限制

實作指數退避:

async function verifyWithRetry(email, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await verify(email);
    } catch (error) {
      if (error.code === 'RATE_LIMIT_EXCEEDED') {
        await sleep(Math.pow(2, i) * 1000);
        continue;
      }
      throw error;
    }
  }
}

3. 多個電郵使用批量端點

驗證超過 10 個電郵時,使用批量端點:

// 正確 - 單次 API 呼叫
const job = await client.verifyBulk(emails);

// 錯誤 - 多次個別呼叫
for (const email of emails) {
  await client.verify(email);
}

4. 為批量任務實作 Webhook

不要持續輪詢;使用 Webhook:

// 使用 webhook 提交
const job = await client.verifyBulk(emails, {
  webhookUrl: 'https://your-app.com/webhook',
});

SDK

使用我們的官方 SDK 以便更輕鬆整合:

下一步

On this page