概要をお探しですか? メールアドレス検証APIと登録フォーム向けのメールアドレスのバリデーションAPIのページ(英語)をご覧ください。

メールアドレス検証APIのドキュメント

メールアドレスの検証、一括チェック、キャッチオールドメインやSEGの背後にあるアドレスの詳細チェックを行えます。すべてのエンドポイントはJSONを使い、APIキーで認証します。料金がかかるのは成功したチェックだけです。

はじめに

Giggal.aiのAPIでは、メールアドレスの検証、1ジョブあたり最大50,000件の一括チェック、キャッチオールドメインやSEGの背後にあるアドレスの詳細チェックを行えます。JSONを使うシンプルなREST APIです。成功したチェックごとに、アカウントのクレジットを使います。

ベースURL
https://api.giggal.ai/v1
APIキーの作成

APIキーはGiggal.aiのダッシュボードで作成します。サイドバーのDeveloper APIタブを開き、Create API Keyをクリックしてください。各キーはアカウントにひも付き、使用量をキーごとに記録します。キーはいつでも無効にできます。

Developer APIタブを開く
レスポンスの構造

すべてのレスポンスは同じJSON構造です。

// Success
{ "success": true, "data": { ... }, "meta": { ... } }

// Error
{ "success": false, "error": "Human-readable error message" }
クイックスタート:cURLでメールアドレスを1件チェックする
curl -X POST https://api.giggal.ai/v1/verify \
  -H "Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"email":"info@giggal.ai"}'

認証

すべてのリクエストで、次のどちらかのヘッダーにAPIキーを入れて送ってください。どちらでも動作します。

方法1:Bearerトークン
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx
方法2:X-API-Keyヘッダー
X-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx

キーがない、無効、または無効化されている場合は、HTTP 401エラーになります。APIキーをクライアント側のコードに置かないでください。API呼び出しはご自身のバックエンドから送ってください。

冪等性(一括チェックとキャッチオールドメインのチェック)

POST /v1/verify-batchとPOST /v1/catchallでは、Idempotency-Keyヘッダーを送ってください。同じキーで再試行すると、最初のレスポンスが返ります。ジョブが重複せず、クレジットが二重に差し引かれることもありません。

Idempotency-Key: 2026-07-24-list-batch-42

1件ずつのチェック

このグループには1個のエンドポイントがあります。

POST/v1/verify

メールアドレスを1件チェックする

メールアドレスを1件、同期的にチェックします。1クレジットを使います。ドメインがキャッチオールドメインの場合は、同じリクエストの中で詳細チェックを行い、レスポンスにcatch_all_scoreとcatch_all_verdictが入ります。

認証
api_key_auth
リクエストボディ
email
必須
string
チェックしたいメールアドレス。

一括チェック

このグループには3個のエンドポイントがあります。

POST/v1/verify-batch

一括チェックを開始する

1ジョブあたり最大50,000件のメールアドレスを送れます。処理は非同期です。進行状況はGET /v1/jobs/:jobIdで確認してください。Idempotency-Keyヘッダーを送ると、二重課金なしでジョブの作成を再試行できます。

認証
api_key_auth
リクエストボディ
emails
必須
string[]
チェックしたいメールアドレスのリスト。1ジョブあたり最大50,000件です。重複したアドレスと形式が正しくないアドレスは、サーバーが除外します。
name
string
ジョブのわかりやすい名前(任意)。ダッシュボードに表示されます。
GET/v1/jobs/:jobId

一括チェックのジョブの状況を確認する

進行状況を確認するときに呼び出します。ステータスはprocessingからcompleted(またはfailed)に変わります。推奨する間隔は10〜15秒ごとです。小さなリスト(メールアドレス50件未満)は、通常30秒以内に終わります。

認証
api_key_auth
パスパラメーターとクエリパラメーター
jobId
必須
string
POST /v1/verify-batchが返したジョブID。
GET/v1/jobs/:jobId/results

一括チェックのジョブの結果を取得する

ステータスがcompletedになったら、メールアドレスごとの結果を取得します。結果はページに分かれています。クエリパラメーターのpageとlimitを指定してください。結果は48時間保存されます(ジョブのresultsExpiresAtを参照)。

認証
api_key_auth
パスパラメーターとクエリパラメーター
jobId
必須
string
ジョブID。
page
integer
ページ番号。初期値は1です。
limit
integer
1ページあたりの結果数。初期値は25、最大500です。

キャッチオールドメインのチェック

このグループには4個のエンドポイントがあります。

POST/v1/catchall

キャッチオールドメインのチェックを開始する

完了した一括チェックのジョブに対して、キャッチオールドメインの詳細チェックを実行します。元のジョブでキャッチオールドメインと判定されたアドレスだけを再チェックします。1件あたり1クレジットを使います(レスポンスのcreditsRequiredを参照)。

認証
api_key_auth
リクエストボディ
jobId
必須
string
完了した一括チェックのジョブID。そのジョブのキャッチオールドメインのアドレスだけを詳細にチェックします。
name
string
タスクのわかりやすい名前(任意)。
GET/v1/catchall/:taskId

キャッチオールドメインのタスクの状況を確認する

進行状況とverdictCountsの最新の件数を確認するときに呼び出します。キャッチオールドメインのタスクは、アドレスの件数に応じて、通常数秒から数分で終わります。

認証
api_key_auth
パスパラメーターとクエリパラメーター
taskId
必須
string
POST /v1/catchallが返したタスクID。
GET/v1/catchall/:taskId/results

キャッチオールドメインのタスクの結果を取得する

メールアドレスごとの結果を、ページに分けて取得します。スコアの内訳(ドメインからのシグナルとドメインの経過年数)も含まれます。

認証
api_key_auth
パスパラメーターとクエリパラメーター
taskId
必須
string
タスクID。
page
integer
ページ番号。初期値は1です。
limit
integer
1ページあたりの結果数。初期値は25、最大500です。
verdict
string
結果で絞り込みます:valid | invalid。
GET/v1/catchall/:taskId/download

キャッチオールドメインの結果をCSVでダウンロードする

完了したキャッチオールドメインのタスクの全結果を、Email、Score、Verdictの列を持つCSVファイルでダウンロードします。Content-Typeはtext/csvです。

認証
api_key_auth
パスパラメーターとクエリパラメーター
taskId
必須
string
タスクID。
verdict
string
結果で絞り込みます:valid | invalid。

アカウント

このグループには1個のエンドポイントがあります。

GET/v1/credits

クレジット残高を確認する

アカウントの残高を表示します。使えるクレジット、予約済みのクレジット(実行中のジョブのために確保した分)、アカウント開設からの合計です。結果がunknownのチェックのクレジットは自動で返却され、ここにも記録されます。

認証
api_key_auth

エラーと制限

ステータス意味
200 OKリクエストが成功しました(同期チェック、またはステータスや結果の取得)。
202 Accepted非同期のジョブまたはタスクが作成され、キューに入りました。
400 Bad Requestパラメーターがない、または無効です(メールアドレスの形式が正しくない、emailsのリストが空、jobIdがない)。
401 UnauthorizedAPIキーがない、無効、または無効化されています。
402 Payment Requiredこの操作に必要なクレジットが足りません。
404 Not FoundこのジョブIDまたはタスクIDは、お使いのアカウントに存在しません。
409 Conflictジョブが必要な状態になっていません(例:ジョブの完了前に結果を要求した)。
410 Goneジョブの結果が48時間の保存期間を過ぎています。
429 Too Many Requestsリクエストの上限を超えました。少し待ってから再試行してください。
500 / 502 / 503サーバー、またはその背後の検証サービスが一時的に利用できません。

リクエストの上限

すべてのレスポンスにRateLimit-Limit、RateLimit-Remaining、RateLimit-Resetのヘッダー(RFCの表記)が入ります。これを使ってリクエストの間隔を調整できます。RateLimit-Resetは、現在の時間枠がリセットされるまでの秒数です。

区分上限
すべてのエンドポイント(初期値)300リクエスト / 15分
ジョブの作成(POST /v1/verify-batch、POST /v1/catchall)30リクエスト / 15分
ジョブの確認(GET /v1/jobs/:id、GET /v1/jobs/:id/results)600リクエスト / 15分
一括チェックの1ジョブあたりの最大メールアドレス数50,000
結果の保存期間48時間

ジョブは作成するよりも確認する回数の方が多いため、上限を3つに分けています。ジョブの実行中は、数秒ごとに状況を確認することもあります。600 / 15 min(1分あたり約40回)の上限なら、サーバーに過度な負担をかけずに、余裕を持って確認できます。

もっと高い上限が必要ですか?

確認済みの連携パートナーには、上限の引き上げを日常的に行っています。

お問い合わせ

429レスポンスの構造

上限に達すると、APIは次のボディとともにHTTP 429エラーを返します。

{
  "success": false,
  "message": "Developer API rate limit exceeded"
}

再試行する前に、RateLimit-Resetヘッダーに書かれた秒数(時間枠がリセットされるまでの時間)だけ待ってください。

APIをつなぐ準備はできましたか?

APIキーは数秒で作成できます。無料のお試しクレジットが付いているので、支払いの前にすべてを最初から最後まで試せます。