SendGrid APIの使い方を解説|メール送信の実装手順・制限・料金まで

会員登録の完了メール、パスワードリセット、注文確認メール。システムから自動送信されるメールは、止まった瞬間に問い合わせが殺到する「止められない機能」です。だからこそ、自前のメールサーバーではなくSendGrid APIのようなメール配信APIを使う選択が主流になりました。
ところが、いざ実装を始めると想定外の壁にぶつかります。「APIは200系を返しているのに、メールが届かない」「1リクエストで何件まで送れるのか分からない」「無料で始められると聞いていたのに、料金が発生した」。SendGrid APIは非常に強力ですが、送信できる状態にするまでの前提条件と、本番運用で効いてくる制限値を理解していないと、リリース直前に手戻りが発生します。
さらに2026年3月31日をもって、SendGridの日本国内向けのFreeプランは提供終了となりました。「1日100通まで無期限で無料」という前提の情報は、現時点では当てはまりません。
この記事では、SendGrid APIの全体像から、APIキーの発行・送信ドメイン認証・言語別の実装サンプル、personalizationsを使った大量送信の設計、制限値とエラーの切り分け、Event Webhookによる配信結果の取り込み、そして2026年時点の料金体系までを、公式ドキュメントで確認できる一次情報にもとづいて整理します。実装前に読んでおけば、後戻りのない設計判断ができるはずです。

目次
- 1 SendGrid APIとは?2026年時点で押さえておくべき前提
- 2 SendGrid APIでメールを送信するまでの5ステップ
- 3 言語別のSendGrid API実装サンプル
- 4 personalizationsを理解すれば大量送信でつまずかない
- 5 SendGrid APIの制限値とエラーの切り分け方
- 6 Event Webhookで配信結果をシステムに取り込む
- 7 SendGrid APIの料金と本番運用コストの試算
- 8 SendGrid API導入前に確認したい4つの注意点
- 9 メール配信APIで確実に届けるならメール配信システムを活用する
- 10 まとめ:SendGrid API実装の前にやるべきこと
- 11 FAQ
SendGrid APIとは?2026年時点で押さえておくべき前提
SendGrid APIとは、米Twilio Inc.が提供するクラウド型メール配信サービス「SendGrid」を、自社システムから呼び出すためのインターフェースです。日本国内では正規代理店である株式会社構造計画研究所が販売とサポートを担っており、日本語ドキュメントも同社から提供されています。
結論から言えば、SendGrid APIは「HTTPSで叩くWeb API」と「従来型のSMTPリレー」の2系統で構成されています。 どちらを選ぶかで実装の難易度も、使える機能も変わります。まずはこの全体像を正確に把握しましょう。
Web API v3とSMTPリレーの違いと使い分け
SendGridがトランザクションメール向けに提供している送信方法は、Web APIとSMTPの2種類です。両者は通信方式が根本的に異なるため、認証方法もカスタマイズ方法も別物になります。
Web API v3はRESTfulなAPIで、JSON形式のボディをPOSTするだけでメール送信が完了します。SMTPの複雑な仕様を意識する必要がなく、SendGridの各種機能をフルに活用できるため、アプリケーションからのメール送信では公式にもWeb APIの利用が推奨されています。
一方のSMTPリレーは、既存システムのSMTP接続先を差し替えるだけで導入できるのが最大の利点です。アプリケーション側のコードをほとんど変更せずに、送信基盤だけをクラウドへ移せます。レガシーシステムの移行では現実的な選択肢になります。
| 比較項目 | Web API v3 | SMTPリレー |
|---|---|---|
| 通信方式 | HTTPS(REST) | SMTP |
| 認証 | APIキー(Bearer) | SMTP認証(ユーザ名/パスワード) |
| 実装コスト | ライブラリ利用で低い | 接続先の変更のみで済む場合が多い |
| 既存システムの改修 | 送信処理の書き換えが必要 | 設定変更のみで済むケースが多い |
| 1リクエストの宛先数 | 最大1,000宛先 | コネクションを維持した連続送信が可能 |
| ファイアウォール | 443番ポートで完結 | 25・587・465番など、利用するポートの開放が必要 |
| 推奨される場面 | 新規実装・機能をフル活用したい場合 | 既存システムの送信基盤だけ移したい場合 |
なお、SendGridの送信方法にはもうひとつ「マーケティングキャンペーン機能」があります。これは管理画面から宛先リストをアップロードして一斉配信する機能で、API連携とは別枠の料金が発生します。宛先の追加は2,000件までが無料枠で、それを超えると10,000件あたり月額1,500円(税抜)が加算されます。API経由の送信通数とは別枠で課金される点に注意してください(2026年8月時点)。
Freeプラン終了で「無料で試す」前提が変わった
2026年時点で最も重要な変更点が、Freeプランの提供終了です。
かつては「1日100通まで無期限で無料」という条件があり、検証環境や小規模サービスの送信基盤として広く使われてきました。しかし日本国内向けのFreeプランは2026年3月31日をもって終了し、現在提供されているのは60日間の無料トライアルのみです。
トライアル中はEssentialsプラン相当の機能を試せますが、「送信できるのは1日100通まで」「Event WebhookのPOST先は1つまで」といった制限があります。さらに重要なのは、トライアル期間が終了しても自動的に有料プランへ移行するわけではないという点です。公式FAQには、期間終了後はメール送信ができなくなると明記されています。
つまり、検証を始めた時点で「60日後に送信が止まる」というタイムリミットが動き出します。PoCで採用を決めたあと、本契約の稟議が通る前にトライアルが切れて開発が止まる、という事態も想定されます。導入検討の初期段階で、契約手続きにかかる社内リードタイムを逆算しておいてください。
また、SendGridは法人向けサービスであり、個人での利用は受け付けていません。個人開発や副業案件での利用を想定している場合は、別のサービスもあわせて検討する必要があります。
SendGrid APIでメールを送信するまでの5ステップ
ここからは実際の実装手順です。SendGrid APIで最初の1通を送るまでに必要な作業は、大きく5つに分解できます。
特につまずきやすいのがSTEP 3の送信ドメイン認証です。ここを飛ばすとAPIリクエスト自体が拒否されるため、順番どおりに進めてください。
STEP 1:アカウントを作成し、トライアル条件を確認する
まず構造計画研究所のサイトからアカウントを作成します。クレジットカードの登録やソフトウェアのインストールは不要で、独自ドメインの利用も可能です。
このタイミングで、1日100通という送信上限と60日間という期限を必ずチームで共有しておきましょう。負荷試験を計画している場合、100通の上限に即座に到達して検証が止まります。
STEP 2:APIキーを発行し、権限を最小限に絞る
管理画面の「Settings > API Keys」から「Create API Key」を選択し、APIキーを発行します。
ここで重要なのが権限設定です。Full Accessを選べば確かに動きますが、メール送信しか行わないアプリケーションにアカウント設定の変更権限まで渡す必要はありません。Custom Accessを選択し、Mail Sendのみを有効にするのが原則です。
発行されたAPIキーはSG.で始まる文字列で、画面に一度しか表示されません。この場でパスワードマネージャや秘匿情報管理サービスへ保存してください。
そしてもうひとつ。APIキーをソースコードに直書きしたままリポジトリへコミットしてしまう事故は珍しくありません。環境変数やシークレット管理サービスから読み込む実装にしておきましょう。
# 環境変数への設定例(Bash)
export SENDGRID_API_KEY='SG.xxxxxxxxxxxxxxxxxxxxxx'
STEP 3:Domain Authenticationを設定する
SendGrid APIで最も見落とされやすいのが、この送信ドメイン認証です。
公式ドキュメントには、送信元に指定するドメインまたはメールアドレスで、事前にDomain AuthenticationもしくはSingle Sender Verificationを設定しておく必要があると明記されています。設定が完了していない場合、メールは送信できません。
Domain Authenticationでは、自社ドメインのDNSにSendGridが指定するCNAMEレコードを登録します。これによりSPFとDKIMが有効になり、送信元IPアドレスの逆引き設定も適切に行われます。
DNSの変更は情報システム部門やドメイン管理会社への申請が必要なケースが多く、ここだけで数日かかることも珍しくありません。開発着手と同時にDNS申請を出しておくと、スケジュールの遅延を防げます。
なお、Googleの「メール送信者のガイドライン」では、2024年2月1日以降、Gmailアカウント宛にメールを送信するすべての送信者にSPFまたはDKIMの設定が求められています。さらに、Gmail宛に1日あたり5,000件を超えるメールを送信する送信者は、DMARCの設定やワンクリックでの登録解除といった追加要件の対象となります。Yahoo! JAPANも同様の送信者ガイドラインを公開しています。
送信通数の多寡にかかわらず、送信ドメイン認証は省略できない工程だと考えてください。DMARCまで対応するなら、SPF・DKIMを設定したうえで、自社ドメインのDMARCポリシーをnoneから段階的に引き上げていく運用が現実的です。
STEP 4:cURLで最小構成のリクエストを送る
認証設定が終わったら、まずはライブラリを使わずcURLで動作確認します。アプリケーションに組み込む前に「SendGrid側の設定が正しいか」だけを切り分けるためです。
v3のメール送信エンドポイントはhttps://api.sendgrid.com/v3/mail/sendで、POSTメソッドを使います。
curl -X POST https://api.sendgrid.com/v3/mail/send \
-H "Authorization: Bearer $SENDGRID_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"personalizations": [
{ "to": [{ "email": "user@example.jp", "name": "山田 太郎" }] }
],
"from": { "email": "noreply@example.com", "name": "サービス名" },
"subject": "会員登録が完了しました",
"content": [
{ "type": "text/plain", "value": "ご登録ありがとうございます。" }
]
}'リクエストが受理されると、ボディが空の202 Acceptedが返ります。ここでエラーになる場合は、APIキーの権限か送信ドメイン認証のいずれかが原因である可能性が高いと考えて切り分けてください。
STEP 5:配信ログで実際の到達状況を確認する
cURLが通ったら、管理画面のActivity FeedやEmail Logsで配信ステータスを確認します。
ここで確認したいのは「Delivered(宛先サーバーに受理された)」かどうかです。APIが202を返したことと、宛先メールボックスに届いたことはまったく別の事象だからです。この点は後述する「202が返っても届いたわけではない」で詳しく解説します。
言語別のSendGrid API実装サンプル
SendGridは、C#・Go・Java・Node.js・PHP・Python・Rubyの7言語向けに公式ライブラリを提供しています。ライブラリの利用は必須ではありませんが、リトライやエラーハンドリングの実装が簡潔になるため、特別な理由がなければ公式ライブラリを使うのが無難です。
ここでは代表的な3言語のサンプルを掲載します。いずれも環境変数からAPIキーを読み込む前提で記述しています。
Node.jsでの実装例
@sendgrid/mailパッケージを利用します。
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: 'user@example.jp',
from: { email: 'noreply@example.com', name: 'サービス名' },
subject: 'パスワード再設定のご案内',
text: '以下のURLから再設定を行ってください。',
html: '<p>以下のURLから再設定を行ってください。</p>',
};
(async () => {
try {
const [response] = await sgMail.send(msg);
console.log(response.statusCode); // 202
} catch (error) {
// レスポンスボディにパラメータ単位のエラーが入る
console.error(error.response?.body);
}
})();エラー時はerror.response.bodyにパラメータレベルのエラー内容が格納されます。ログにはステータスコードだけでなく、このボディも必ず出力しておきましょう。原因究明の速度がまったく変わります。
Pythonでの実装例
sendgridパッケージを利用します。
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
message = Mail(
from_email=('noreply@example.com', 'サービス名'),
to_emails='user@example.jp',
subject='ご注文ありがとうございます',
plain_text_content='ご注文を承りました。',
)
try:
sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
print(response.status_code) # 202
except Exception as e:
print(e)PHPでの実装例
Composerでsendgrid/sendgridを導入します。
<?php
require 'vendor/autoload.php';
$email = new \SendGrid\Mail\Mail();
$email->setFrom("noreply@example.com", "サービス名");
$email->setSubject("お問い合わせを受け付けました");
$email->addTo("user@example.jp", "山田 太郎");
$email->addContent("text/plain", "お問い合わせありがとうございます。");
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
$response = $sendgrid->send($email);
echo $response->statusCode();
} catch (Exception $e) {
echo 'Caught exception: '. $e->getMessage();
}公式ライブラリを使わない場合の注意点
言語やフレームワークの制約でHTTPクライアントから直接叩く場合は、次の3点に注意してください。
- 文字コード: 日本語を含む場合はUTF-8で統一する。
fromフィールドはUnicodeエンコードに対応していないため、送信元アドレスにマルチバイト文字を含めない - タイムアウト: 接続タイムアウトと読み取りタイムアウトを明示的に設定する。設定しないとアプリケーションのスレッドが枯渇する原因になる
- リトライ: 5xx系のみリトライ対象とし、4xx系はリトライしない。パラメータ不正を何度投げても結果は変わらない
personalizationsを理解すれば大量送信でつまずかない
SendGrid APIの設計思想を理解するうえで、最も重要なのがpersonalizationsパラメータです。ここを理解しないまま実装すると、「受信者全員のメールアドレスがToに並んで見えてしまった」という事故につながります。これは個人情報の漏えいにあたり、謝罪や再発防止策の公表が必要になる重大なインシデントです。
personalizationsの基本構造
personalizationsは配列で、封筒に例えると分かりやすい構造をしています。配列の要素ひとつが、1通のメール(1つの封筒)に対応します。
同じ本文を100人に個別送信したい場合は、personalizations配列に100個の要素を並べます。逆に、toに100件のアドレスを並べてしまうと、受信者全員に他の宛先が見えてしまいます。
{
"personalizations": [
{
"to": [{ "email": "a@example.jp" }],
"substitutions": { "%name%": "山田様" }
},
{
"to": [{ "email": "b@example.jp" }],
"substitutions": { "%name%": "佐藤様" }
}
],
"from": { "email": "noreply@example.com" },
"subject": "%name% へのお知らせ",
"content": [{ "type": "text/plain", "value": "%name%、いつもご利用ありがとうございます。" }]
}fromやsubjectはルートレベルにもpersonalizations内にも定義でき、personalizations内の指定がルートレベルの指定を上書きします。宛先ごとに件名を変えたい場合は、この上書きの仕組みを利用します。
1リクエスト1,000宛先の壁とバッチ設計
公式ドキュメントでは、指定可能な宛先数は1,000件以内と定められています。これはto・cc・bccで指定したすべての宛先を、personalizations配列を横断してカウントした数です。
1,000件を超える場合は、リクエストを分割する必要があります。ここで実装上の判断が求められます。
たとえば5万件へ配信するなら、1,000件ずつ50リクエストに分割する設計になります。Mail Sendエンドポイント自体には呼び出し回数の制限が設けられていないため、並列度を上げて送ることも可能です。ただし、無制限に並列化するとアプリケーション側のコネクション枯渇やメモリ逼迫を招きます。
実務では、分割したバッチ単位で「送信済みかどうか」を永続化しておく設計を推奨します。50リクエスト中30リクエスト目でアプリケーションが落ちたとき、どこから再開すべきかを判断できなければ、二重送信か送信漏れのどちらかが発生するためです。
差し込みとDynamic Templates
宛名の差し込みには、シンプルなsubstitutionsのほか、管理画面でテンプレートを管理できるDynamic Templatesが利用できます。
Dynamic Templatesを使う場合は、リクエストにtemplate_idとdynamic_template_dataを指定します。本文をコードから切り離せるため、文面の修正をデプロイなしで行えるのが利点です。マーケティング部門が文面を管理する体制であれば、こちらを選ぶ価値があります。
一方で、テンプレートIDの管理が甘いと、ステージング環境から本番用テンプレートを参照して誤配信する事故が起こります。環境ごとにテンプレートIDを環境変数で切り替える設計にしてください。
送信予約とカテゴリ
send_atパラメータを指定すれば、UNIXタイムスタンプで送信予約が可能です。
公式には、混雑を避けた時刻を指定することでdeferral(遅延)率が下がる可能性があるという案内もあります。多くのメールは毎時00分や30分に集中するため、たとえば10時53分のような中途半端な時刻を指定するほうが有利に働くという考え方です。
またcategoriesを付与しておくと、後述する配信レポートで「パスワードリセット」「注文確認」といった用途別に配信結果を分析できます。運用開始後に付け足すのは面倒なので、最初から設計に組み込んでおきましょう。
SendGrid APIの制限値とエラーの切り分け方
本番運用に入る前に、必ず確認しておきたいのが制限値です。開発環境では問題なく動いていたのに、本番の実データで初めてエラーになる項目が含まれています。
押さえておくべき制限値の一覧
公式ドキュメントで公開されている、v3 Mail Sendエンドポイントの主な制限は次のとおりです(2026年8月時点)。
| 項目 | 制限値 | 補足 |
|---|---|---|
| メール全体のサイズ | 30MB以内 | ヘッダ・本文・添付ファイルの合計 |
| 添付ファイルサイズ | 10MBを超えないことを推奨 | 全体サイズの上限に依存 |
| 1リクエストの宛先数 | 1,000件以内 | to・cc・bccの合計、personalizations横断 |
| personalizations要素数 | 1,000件以内 | 超える場合はリクエストを分割 |
| custom argumentsの長さ | 10,000バイト以内 | メタデータの付与時に注意 |
| fromフィールド | Unicode非対応 | 送信元アドレスにマルチバイト文字は使えない |
| Mail Sendの呼び出し回数 | 制限は設けられていない | 他のエンドポイントには呼び出し制限あり |
| 送信元の認証 | 必須 | Domain AuthenticationまたはSingle Sender Verificationの設定が前提 |
添付ファイルはメールに添付される際にBase64エンコードされ、データ量がおよそ1.33倍に増加します。手元のファイルサイズがそのまま上限判定に使われるわけではなく、たとえば8MBのPDFはエンコード後におよそ10.6MB相当になります。「手元のファイルは上限より小さいから大丈夫」という見積もりでエラーになるのは典型的な失敗パターンです。公式にも、添付ファイルは10MBを超えないことが推奨されています。
なお、Mail Sendエンドポイント以外のWeb APIには一定時間あたりの呼び出し回数制限が設けられており、しきい値に達すると429が返ります。レスポンスヘッダに残り回数が返るため、サプレッションリストの取得などをバッチで大量に回す場合は、ヘッダを見て制御する実装が必要です。
主要なステータスコードと切り分け
エラー時のレスポンスには、エラーコード・理由・メッセージが含まれます。よく遭遇するものを整理します。
| コード | 意味 | 主な原因と対処 |
|---|---|---|
| 202 | 受理 | 正常。ただし到達を保証するものではない |
| 400 | リクエスト不正 | JSON構文、必須パラメータ、宛先数超過などを確認 |
| 401 | 認証エラー | APIキーの誤り、Bearer指定の記述ミス |
| 403 | 権限エラー | APIキーの権限不足、送信ドメイン未認証 |
| 413 | ペイロード過大 | 添付を含む全体サイズが30MBを超過 |
| 429 | 呼び出し制限 | Mail Send以外のAPIで発生。バックオフして再試行 |
401と403の切り分けは頻出です。401はそもそも認証情報が通っていない状態、403は認証は通ったが実行権限がない状態です。 APIキーをCustom Accessで発行してMail Sendの権限を付け忘れると403になります。
202が返っても「届いた」わけではない
これはSendGrid APIに限らずメール配信API全般に共通する話ですが、実装者が最も誤解しやすいポイントです。
202 Acceptedは「SendGridがリクエストを受理し、これから送信処理を行う」という意味にすぎません。宛先のメールサーバーが受け取ったかどうか、迷惑メールフォルダに入っていないかどうかは、この時点では一切分かりません。
したがって、アプリケーション側で「メール送信済み」というステータスを202だけで確定させる設計は危険です。ユーザーから「メールが届かない」と問い合わせが来たとき、管理画面のログにはBounceやDroppedと記録されているのに、自社DBには「送信成功」と残っている、という食い違いが起こります。
正確な配信結果を把握するには、次章で解説するEvent Webhookの実装が事実上必須になります。
リトライ設計と冪等性
タイムアウトが発生したとき、リクエストがSendGridに届いていたかどうかはクライアント側から判別できません。安易にリトライすれば二重送信になります。
対策としては、送信処理ごとに自社側で一意のキー(注文IDなど)を採番し、custom_argsに格納したうえで、送信履歴テーブルで送信済み判定を行う方法が現実的です。パスワードリセットメールが2通届く程度なら軽微ですが、決済完了メールの二重送信は問い合わせに直結します。
Event Webhookで配信結果をシステムに取り込む
Event Webhookは、メールの配信状況をSendGrid側からアプリケーションのエンドポイントへPOSTしてもらう仕組みです。到達率を管理したいなら、実装は避けて通れません。
取得できるイベントと設計の考え方
取得できるイベントは、配信系(processed・delivered・deferred・bounce・dropped)と、エンゲージメント系(open・click・spamreport・unsubscribe)に大別されます。
重要なのは、これらのイベントが必ずしも送信順に届くとは限らないという点です。ネットワーク遅延やリトライにより、deliveredより先に別のイベントが到着することもあります。イベントごとに付与されるタイムスタンプを見て状態遷移を判定する実装にしてください。
また、POST先の登録数にはプランごとの上限があります。Essentialsプランでは2つまで、Proプランでは5つまでです。無料トライアル中は1つに制限されるため、複数環境で並行検証する場合は制約になります。
受信エンドポイント設計の3つの注意点
Webhookの受信側は、以下を満たす設計にしておきましょう。
- 即座に200を返す: 受信後すぐにキューへ積み、重い処理は非同期で行う。同期処理にすると再送が積み上がる
- 署名検証を行う: エンドポイントは公開URLになるため、正当なリクエストかを検証する仕組みを入れる
- 冪等に処理する: 同一イベントが複数回届く可能性を前提に、イベントIDで重複排除する
バウンスとサプレッションの扱い
SendGridでは、配信停止されたアドレスや存在しないアドレスへのメールは、送信前に自動的に破棄される仕組みが備わっています。エラーアドレスへ送り続けてIPレピュテーションを損なうリスクを抑えられる設計です。
ただし、自社DB側のメールアドレス状態を更新しなければ、アプリケーションは「送っているつもり」のまま動き続けます。ハードバウンスが返ったアドレスは自社側でも配信停止フラグを立てる。この同期処理まで実装して、初めて運用が完成します。
モニタリングすべき指標の代表が迷惑メール報告率です。Googleの送信者ガイドラインでは、Gmail宛に1日あたり5,000件を超えるメールを送信する送信者に対し、迷惑メール率を0.10%未満に維持し、0.30%以上には到達しないよう求めています。バウンス率についても、上昇はリスト品質が劣化しているサインです。Event Webhookで取得したデータをもとに、これらの指標を継続的に監視する体制を整えてください。
SendGrid APIの料金と本番運用コストの試算
実装の目処が立ったら、次はコスト設計です。2026年時点の日本国内向けプランは、EssentialsとProの2系統に整理されています。
料金プランの全体像
構造計画研究所が公開している国内向けプランは以下のとおりです(金額はすべて税抜)。
| プラン | 基本使用料(月額) | 月間上限通数 | 上限超過時 |
|---|---|---|---|
| Essentials 50K | 3,000円 | 5万通 | 0.200円/通 |
| Essentials 100K | 5,400円 | 10万通 | 0.132円/通 |
| Pro 100K | 14,000円 | 10万通 | 0.165円/通 |
| Pro 300K | 37,500円 | 30万通 | 0.137円/通 |
| Pro 700K | 75,000円 | 70万通 | 0.117円/通 |
| Pro 1.5M | 125,000円 | 150万通 | 0.089円/通 |
| Pro 2.5M | 165,000円 | 250万通 | 0.071円/通 |
※2026年8月時点、構造計画研究所の公式サイト掲載情報にもとづきます。表示価格はすべて税抜です。最新の料金は公式サイトをご確認ください。
EssentialsとProの違いは通数だけではありません。固定IPアドレス、サブユーザ機能、SSO、メールのテスト機能はProプラン限定です。 公式FAQでも、到達性やメンテナンス性の観点からProプランが推奨されています。
Essentials 100KとPro 100Kは上限通数が同じ10万通でありながら、月額は5,400円と14,000円で大きく開きます。この差額は、固定IPアドレス・サブユーザ・SSO・請求書払いといったPro限定の機能に対する対価だと理解すると判断しやすくなります。
上限超過時のコスト試算
見落としやすいのが、上限超過時の従量課金です。具体例で計算してみます。
Essentials 50Kプラン(上限5万通)を契約し、システムからの通知メールが増加して当月8万通を送信したケースで考えます(Web API経由の送信のみを想定し、マーケティングキャンペーン機能の利用料は含みません)。
- 基本使用料:3,000円
- 超過分:3万通 × 0.200円 = 6,000円
- 合計:9,000円(税抜)
同じ8万通でも、最初からEssentials 100Kプラン(上限10万通)を契約していれば5,400円で収まります。つまり、超過を前提とした運用は割高になりやすい構造です。
さらに基本使用料は各月1日0時時点のプランに応じて発生し、未使用分の繰り越しはできません。月末に大量配信を予定しているなら、月初のうちにプランを上げておく必要があります。
見落としやすい追加コスト
基本料金以外にも、次のような費用が発生する可能性があります。
- マーケティングキャンペーンの宛先追加: 無料枠2,000件を超えると10,000件あたり月額1,500円
- 固定IPアドレスの追加: Proプランで1つあたり月額4,300円
- Activity Feedの保存期間延長: プランに応じて月額750円〜37,500円
- Email Address Validation APIの追加利用: Proの無料枠2,500件を超えた分は従量課金
特にActivity Feedの保存期間は要注意です。「先月の配信ログを確認したい」という問い合わせに答えられるかどうかは、この設定次第で変わります。障害調査の必要性が高いシステムでは、事前にコストへ織り込んでおきましょう。
SendGrid API導入前に確認したい4つの注意点
機能面では優れたサービスですが、国内で運用する際には固有の論点があります。導入判断の前に確認しておきたい点を整理します。
管理画面とサポートが日本語前提ではない
SendGridの管理画面は日本語化されていません。日本語のドキュメントは構造計画研究所から提供されていますが、画面上の項目名やエラーメッセージは英語表記です。英語のUIに不慣れなメンバーが日常的に操作する運用を想定するなら、社内マニュアルの整備といった教育コストを見込んでおきましょう。
サポートについても、日本語対応は正規代理店経由で契約した場合に限られます。問い合わせ手段はWebフォームが基本で、電話でのサポートは提供されていません。受付時間も平日の日中に限られるため、夜間や休日にリリース作業を予定している場合は、時間外のトラブルにどう対応するかをあらかじめ決めておく必要があります。
法人契約が前提となる
前述のとおり、SendGridは法人向けサービスであり、個人での利用は受け付けていません。フリーランスの受託開発などで顧客名義での契約が難しい場合は、契約形態を事前に確認しておく必要があります。
トライアル終了とともに送信が止まる
60日間の無料トライアルは自動的に有料プランへ移行しません。切り替えを忘れれば、本番システムのメール送信がある日突然停止します。
契約管理の担当者が退職・異動した後にこの期限が到来するのが最悪のパターンです。カレンダーへの登録と、複数名での期限共有を徹底してください。
国内キャリア宛の到達率をどう検証するか
海外発のサービスは、グローバルでの配信実績が豊富である一方、日本国内のキャリアメール(NTTドコモ、au、ソフトバンクなど)への到達性については、自社の送信条件で検証しておくのが確実です。
導入前の評価では、主要ISPとキャリアのテストアドレスを用意し、実際に受信ボックスへ入るかを確認しましょう。「送信できた」ではなく「受信できた」を基準に評価することが重要です。
SendGrid APIと国産サービスの比較軸
代替を検討する場合、判断軸は次のように整理できます。国産のメール配信APIであるblastengineと比較すると、想定される利用シーンの違いが見えてきます。
| 比較軸 | SendGrid | blastengine |
|---|---|---|
| 提供元 | Twilio Inc.(国内の販売・サポートは構造計画研究所) | 株式会社ラクスライトクラウド |
| 送信方法 | Web API・SMTPリレー | API連携・SMTPリレー |
| 初期費用 | 0円 | 0円 |
| 月間10万通の場合 | Essentials 100K:5,400円 | 100,000通:16,000円 |
| 月間100万通の場合 | Pro 1.5M:125,000円(上限150万通) | 1,000,000通:80,000円 |
| 管理画面の表示言語 | 英語 | 日本語 |
| 問い合わせ窓口 | Webフォーム(電話窓口なし) | 電話・メール |
| 契約形態 | 法人向け(個人利用は不可) | 法人向け(個人事業主:可) |
※両サービスの料金・仕様は、2026年8月時点で各社が公開している情報にもとづきます。SendGridの表示価格は税抜です。プランごとの上限通数や含まれる機能(固定IPアドレスの有無など)が異なるため、金額のみでの単純比較はできません。実際の検討時は、自社の送信要件に照らして各社の公式サイトで最新条件をご確認ください。
実装の手間という観点では、blastengineのAPIも構成は近いものです。ログインIDとAPIキーからトークンを生成し、エンドポイントへPOSTするだけで送信できます。
# トークン生成:sha256(ログインID + APIキー)を小文字化してBase64エンコード
curl -X POST https://app.engn.jp/api/v1/deliveries/transaction \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${YOUR_BEARER_TOKEN}" \
-d '{
"from": { "email": "noreply@example.com", "name": "サービス名" },
"to": "user@example.jp",
"subject": "会員登録が完了しました",
"text_part": "ご登録ありがとうございます。"
}'レスポンスとして配信ID(delivery_id)が返り、このIDで管理画面の配信ログを絞り込めます。既存のSendGrid実装からの移行でも、リクエスト構造の差分は限定的です。
メール配信APIで確実に届けるならメール配信システムを活用する
SendGrid APIに限らず、メール配信APIを導入する目的は「システムからのメールを、確実に、遅延なく届けること」に尽きます。自前のメールサーバーを構築・運用する選択肢もありますが、IPレピュテーションの管理やバウンス処理、送信ドメイン認証への追随まで含めると、専門のサービスを使うほうが合理的です。
メール配信システムを使うメリット
システムからのメール送信を専用サービスに任せることで、エンジニアはアプリケーション開発そのものに集中できます。特にトランザクションメールでは、次のような効果が期待できます。
- メールサーバーの構築・保守・監視といった運用工数から解放される
- IPレピュテーションの維持を任せられ、迷惑メール判定のリスクを下げられる
- SPF/DKIM/DMARCなどの送信ドメイン認証に標準対応し、ガイドライン改定にも追随しやすい
自社でメールサーバーを運用する場合、送信ドメイン認証の仕様変更や大手プロバイダのガイドライン更新のたびに調査と対応が発生します。その工数を丸ごと削減できる点が、メール配信システムを利用する最大の価値です。
おすすめのメール配信システム「blastengine」

blastengine(ブラストエンジン)は、お客様のシステムとSMTPリレーやAPIで連携することで、トランザクションメールや一斉配信を簡単に実現できる国産のメール配信サービスです。運用・メンテナンスはblastengine側で行うため、常に高いIPレピュテーションを維持し、エンジニアを煩雑なメールサーバー管理業務から解放します。
- 99%以上の高いメール到達率: 国内キャリア・ISPへの個別送信ロジックで確実に届ける
- API連携・SMTPリレー: 既存システムへの組み込みが容易で、最短当日から利用開始可能
- SPF/DKIM/DMARC対応: 最新のメール認証技術に標準対応し、なりすまし・迷惑メール判定を回避
- バウンスメール自動対応: エラーメール管理を自動化し、運用負荷を大幅に削減
- 配信ログ管理: 詳細な配信ステータスを確認でき、エラー解析がスムーズ
- 日本語テクニカルサポート: 電話・メールでの問い合わせに対応
初期費用無料、月額3,000円から利用でき、1,500万通/時の配信速度で大量配信にも対応します。管理画面もドキュメントも日本語のため、開発だけでなく運用フェーズまで含めて導入コストを抑えられます。メールアドレスの入力のみで無料トライアルが可能ですので、まずは気軽にお試しください。
ブラストエンジン公式サイト:https://blastengine
まとめ:SendGrid API実装の前にやるべきこと
SendGrid APIは、Web APIとSMTPリレーの両方に対応した実績あるメール配信APIです。公式ライブラリが7言語向けに提供されており、実装そのもののハードルは高くありません。
一方で、送信ドメイン認証を設定しなければ1通も送れないこと、1リクエストあたり1,000宛先という制限があること、202が返っても到達を意味しないこと、そして2026年3月にFreeプランが終了し60日間のトライアルのみになったことは、実装前に必ず押さえておくべき前提です。
最後に、着手前のチェックリストを整理します。
- 送信ドメイン認証(Domain Authentication)のDNS申請を先に出す
- APIキーはCustom Accessで発行し、Mail Sendのみを許可する
- 想定送信通数から料金プランを試算し、超過課金の有無を確認する
- Event Webhookの受信エンドポイントを設計に組み込む
- 無料トライアルの期限をカレンダーに登録し、複数名で共有する
- 主要ISP・キャリア宛のテスト配信で「受信できるか」を検証する
そのうえで、日本語での管理画面やサポート体制、国内キャリアへの到達性を重視するなら、国産のメール配信APIを比較検討する価値があります。まずは自社の送信要件(月間通数・宛先の分布・必要なログ保持期間)を数値で整理することから始めてください。
※本記事の内容は2026年8月時点の公開情報にもとづきます。料金・仕様は変更される場合がありますので、最新情報は各サービスの公式サイトをご確認ください。 ※記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。
FAQ
- SendGrid APIは無料で使えますか?
- A:日本国内向けのFreeプランは2026年3月31日をもって提供終了しました。現在は60日間の無料トライアルのみが提供されており、期間中は1日100通までの送信制限があります。トライアル終了後は自動で有料プランに移行せず、メール送信ができなくなるため、継続利用には自身でのプラン変更が必要です。
- SendGrid APIで1度に何件まで送信できますか?
- A:v3 Mail Sendエンドポイントでは、1リクエストあたり最大1,000宛先までです。これはto・cc・bccで指定したすべての宛先を、personalizations配列を横断してカウントした数になります。1,000件を超える場合はリクエストを分割してください。
- APIは成功したのにメールが届きません。原因は何ですか?
- A:202はSendGridがリクエストを受理した状態を示すもので、宛先への到達を保証するものではありません。管理画面のActivity FeedやEmail Logsで、bounceやdroppedになっていないかを確認してください。恒久的な原因究明にはEvent Webhookの実装が有効です。
- Web APIとSMTPリレーはどちらを選ぶべきですか?
- A:新規実装であればWeb APIが推奨されます。JSONをPOSTするだけで送信でき、SendGridの機能をフル活用できるためです。既存システムの送信基盤だけを差し替えたい場合は、接続先の変更で済むSMTPリレーが現実的な選択肢になります。
- SendGrid APIは個人でも契約できますか?
- A:SendGridは法人向けサービスのため、個人での利用は受け付けていません。個人開発やフリーランスでの利用を想定している場合は、契約形態を確認したうえで他のメール配信サービスも比較検討してください。

