ドキュメント/レート制限

レート制限

APIリクエストの上限、クレジットの消費、スロットリングを適切に処理する方法をご紹介します。

Markdownを表示 OpenAPI JSON

現在の上限

項目上限内容
APIキーのリクエスト60リクエスト/分、5,000リクエスト/日認証済みAPIキーのデフォルトのクォータです。
/api/batch1リクエストあたり最大500件のメール1リクエストあたりのメール件数の上限内でバッチを送信してください。
匿名チェッカーIPアドレスごとに1日5回アカウントのAPIキーを使わずに公開チェッカーを利用する場合に適用されます。
検証件数アカウントで利用可能なクレジット実行できる検証の件数はクレジットで決まります。
一括CSVアップロードファイル内のすべてのメール分のクレジットが必要アップロードには、検証するメールの件数に見合うクレジットが必要です。

リクエストのクォータとクレジットは別々の仕組みです。APIキーのデフォルトは1分あたり60リクエスト、1日あたり5,000リクエストです。これらのクォータは、認証済みの連携がAPIを呼び出せる速さを制御します。一方、実行できる検証の件数はアカウントのクレジットで決まります。

大量のリストを扱う場合、/api/batchは1回のリクエストで最大500件のメールを受け付けます。一括CSVアップロードはリクエスト数ではなくクレジットで管理されます。検証ジョブを実行する前に、アップロードしたファイル内のメール件数に見合うクレジットがアカウントに必要です。

公開の匿名チェッカーは、IPアドレスごとに1日5回までに制限されています。アカウント残高のルールについてはクレジットと利用状況をご覧ください。大量のインポートには一括検証をご利用ください。連携時の動作については、こちらをご確認ください:エラー処理、 クイックスタート、料金。

レート制限時のレスポンス

APIキーがリクエストのクォータを超えると、APIは429 Too Many Requestsレスポンスを返します。レスポンスにはRetry-Afterが含まれるため、クライアントは再試行までに待つべき時間を把握できます。

json
{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Please retry after the indicated delay.",
  "status_code": 429,
  "retry_after": 15
}

Retry-After ヘッダー

一方、Retry-Afterレスポンスヘッダーは、クォータを超えたAPIキーのリクエストを再試行するまでに待つ秒数を示します:

http
HTTP/1.1 429 Too Many Requests
Retry-After: 15
Content-Type: application/json

コードでのレート制限の処理

まずヘッダーを読み取り、示された秒数だけ待ってから再試行します。ヘッダーがない場合は、余裕を持たせた待機時間をフォールバックとして使用してください。

python
import requests, time

def verify_with_retry(email, api_key, max_retries=3):
    for attempt in range(max_retries):
        response = requests.post(
            "https://verimails.com/api/verify/single",
            headers={"Authorization": f"Bearer {api_key}"},
            json={"email": email}
        )

        if response.status_code == 200:
            return response.json()

        if response.status_code == 429:
            retry_after = int(response.headers.get("Retry-After", 15))
            print(f"Rate limited. Waiting {retry_after}s...")
            time.sleep(retry_after)
            continue

        response.raise_for_status()

    raise Exception("Max retries exceeded")

ベストプラクティス