Resend CLI インストールと使い方

Herve Kom

Herve Kom

17 3月 2026

Resend CLI インストールと使い方

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

Resend CLIは、開発者向けに構築されたメールプラットフォームであるResendの公式コマンドラインツールです。npm install -g resend-cliまたはbrew install resend/cli/resendでインストールし、resend loginで認証すると、任意のターミナルまたはCI/CDパイプラインからメールの送信、ドメインの管理、メールインフラの自動化を行うことができます。

Resendとは?

Resendは開発者向けのメールAPIです。ドメインを接続し、APIキーを取得すると、パスワードのリセット、注文確認、オンボーディングシーケンスなど、プログラムでトリガーされるあらゆる種類のトランザクションメールをアプリケーションから送信できます。

2026年3月13日、Resendの創業者Zeno RochaがResend CLIを出荷し、そのインフラをターミナルにもたらしました。CLIには13のリソースにわたる53のコマンドがあります。TypeScriptで書かれ、MITライセンスの下で完全にオープンソースであり、3つの異なる利用者層に対応しています。

💡
メールを送信するアプリを構築している場合、本番環境に到達する前にメールAPI呼び出しをテストする方法が必要です。Apidogは、追加のコードを書かずに、ResendのメールAPIを含むREST APIをテストするための無料の視覚的インターフェースを提供します。Resend OpenAPI仕様をインポートし、環境を設定し、整理されたテストスイートをすべて一箇所で実行できます。
ボタン

Resend CLIのインストール

CLIをインストールする方法は4つあります。ご自身の環境に合ったものを選んでください。

cURL経由(スタンドアロンバイナリ、Node.js不要)

curl -fsSL https://resend.com/install.sh | bash

これは、お使いのOS用の事前構築済みバイナリをダウンロードし、PATHに配置します。Node.jsは不要です。

npm経由

npm install -g resend-cli

Node.js 20以降が必要です。インストール後、動作を確認してください。

resend --version

Homebrew経由(macOSおよびLinux)

brew install resend/cli/resend

これはmacOSでの最もクリーンなオプションです。Homebrewが自動的にアップデートを処理します。

PowerShell経由(Windows)

irm https://resend.com/install.ps1 | iex

また、GitHubリリースページから.exeバイナリを直接ダウンロードすることもできます。

ローカル開発用

CLIに貢献したり、ソースからビルドしたりする場合は、Node.js 20+とpnpmが必要です。

git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build       # outputs ./dist/cli.cjs
pnpm build:bin   # native binary at ./dist/resend

アカウントの認証

resend loginを実行してCLIをResendアカウントに接続します。

resend login

これによりブラウザが開き、ResendダッシュボードでのAPIキー作成手順が案内され、認証情報が~/.config/resend/credentials.jsonに0600の制限された権限でローカルに保存されます。

非対話型環境(CI/CD、スクリプト)では、ブラウザフローをスキップして直接キーを渡します。

resend login --key re_xxxxxxxxxxxxx

一度保存されると、すべてのコマンドで再認証する必要はありません。CLIは以下の順序でAPIキーを解決します。

  1. --api-keyフラグ(すべてを上書き)
  2. RESEND_API_KEY環境変数
  3. 保存された認証情報ファイル

CIパイプラインでは、RESEND_API_KEYを秘密の環境変数として設定するのが標準的なアプローチです。

RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Build passed" --text "All tests green."

複数アカウントのサポート

複数のResend組織やチームで作業する場合でも、CLIはそれに対応します。ログアウトせずに保存されたプロファイルを切り替えることができます。

resend auth switch

または、単一のコマンドに特定のプロファイルを渡します。

resend <command> --profile production

最初のメールの送信

送信の主要コマンドはresend emails sendです。最低限、送信元アドレス(検証済みドメインからのもの)、受信者、件名、本文が必要です。

プレーンテキストメールを送信

resend emails send \
  --from "you@yourdomain.com" \
  --to recipient@example.com \
  --subject "Hello from the CLI" \
  --text "This is a test email sent from the Resend CLI."

HTMLメールを送信

resend emails send \
  --from "team@yourco.com" \
  --to user@example.com \
  --subject "Your order is confirmed" \
  --html "<h1>注文が確定しました</h1><p>ご購入ありがとうございます。</p>"

または、ローカルのHTMLファイルを指定します。

resend emails send \
  --from "team@yourco.com" \
  --to user@example.com \
  --subject "Welcome aboard" \
  --html-file ./templates/welcome.html

配信のスケジュール設定

CLIはISO 8601タイムスタンプとともに自然言語の日付を解析します。

resend emails send \
  --from "you@yourco.com" \
  --to user@example.com \
  --subject "Scheduled check-in" \
  --text "Just checking in." \
  --schedule "tomorrow at 9am"

「1時間後」、「来週月曜日の午後3時」、または完全なISOタイムスタンプのようなフレーズに対応します。

メールIDの取得

パイプされると、CLIは自動的にJSON出力に切り替わります。jqを介してパイプし、後続の操作のためにメールIDを取得します。

EMAIL_ID=$(resend emails send \
  --from a@acme.com \
  --to b@acme.com \
  --subject "Test" \
  --text "Hi" | jq -r '.data.id')

echo "Sent email: $EMAIL_ID"

スケジュールされたメールのキャンセルまたは更新

resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "next Monday at 10am"

最近のメールを一覧表示

resend emails list

一度に最大100件のバッチ送信

メールオブジェクトの配列を含むJSONファイルを作成します。

[
  { "from": "you@yourco.com", "to": "alice@example.com", "subject": "Hi Alice", "text": "Hello!" },
  { "from": "you@yourco.com", "to": "bob@example.com", "subject": "Hi Bob", "text": "Hello!" }
]

次に、バッチを送信します。

resend emails send-batch --file emails.json

各バッチリクエストは、最大100通のメールを送信する場合でも、レート制限に対して1回のAPI呼び出しとしてカウントされます。

ドメインとAPIキーの管理

メールを送信する前に、検証済みのドメインが必要です。CLIは完全なドメインライフサイクルを案内します。

ドメインの追加

resend domains create --name yourdomain.com --region us-east-1

サポートされているリージョン:us-east-1eu-west-1sa-east-1ap-northeast-1。遅延を最小限に抑えるために、ユーザーに最も近いリージョンを選択してください。

DNSレコードの検証

ドメインを作成した後、Resendは追加するDNSレコード(SPF、DKIM、DMARC)を提供します。それらをDNSプロバイダーに追加したら、以下を実行します。

resend domains verify --id <domain-id>

「verified」が返されるまでステータスをポーリングします。

resend domains get --id <domain-id>

トラッキングとTLSの設定

resend domains configure --id <domain-id>  # 対話型設定

このコマンドを使用して、オープン追跡、クリック追跡、およびカスタムDKIMを有効にできます。

すべてのドメインを一覧表示

resend domains list

APIキーの管理

セキュリティのため、1つのキーをすべてで共有するのではなく、サービスまたは環境ごとにスコープ付きAPIキーを作成します。

resend api-keys create  # 対話型で、ドメインごとにスコープを設定可能
resend api-keys list
resend api-keys delete --id <key-id>

スコープ付きキーは、各統合が実行できることを制限します。1つのドメインにスコープされたキーは、他のドメインやアカウント設定にアクセスできません。

高度な機能:ブロードキャスト、Webhook、テンプレート

個別のメール送信だけでなく、Resend CLIはさらに3つの主要なユースケースを処理します。大量ブロードキャスト、Webhook管理、再利用可能なテンプレートです。

ブロードキャスト

ブロードキャストを使用すると、同じメールを多数の連絡先リストに送信できます。まず下書きを作成し、その後送信またはスケジュール設定します。

resend broadcasts create   # 対話型の下書き作成
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "next Monday at 10am"

Webhook

Webhookは、バウンス、オープン、クリック、スパムレポートなど、リアルタイムの配信イベントを提供します。CLIは完全なライフサイクルを処理します。

resend webhooks create   # 新しいエンドポイントを登録
resend webhooks list

ローカル開発では、webhooks listenコマンドを使用してWebhookイベントをlocalhostにプロキシします。

resend webhooks listen --forward-to http://localhost:3000/webhooks/resend

これにより、ngrokなどのトンネリングツールを設定する必要がなくなります。CLIは、email.sent、email.delivered、email.bounced、email.opened、email.clickedを含む17のイベントタイプをサポートしています。

テンプレート

テンプレートを使用すると、動的変数を含む再利用可能なHTMLメールを作成できます。

resend templates create  # 対話型テンプレートビルダー

変数は{{variable_name}}構文とフォールバック値を使用します。作成後、メール送信時にIDでテンプレートを参照します。

連絡先とオーディエンス

Resendには、マーケティングメール用の組み込みの連絡先管理機能があります。

resend contacts create --audience-id <id> --email user@example.com --first-name "Alice"
resend contacts list --audience-id <id>
resend contacts update --id <contact-id> --unsubscribed false

診断の実行

doctorコマンドは環境をチェックし、問題をフラグ立てします。

resend doctor

CLIのバージョン、APIキーの有効性、検証済みドメインを確認し、AIコーディングエージェント(Cursor、Claude Desktop、VS Code、OpenClaw)も検出します。

CI/CDパイプラインでのResend CLIの使用

CLIは自動化された環境でうまく動作するように構築されています。知っておくべきいくつかのパターンがあります。

機械可読な出力

出力をパイプするか--jsonを渡すと、CLIは構造化されたJSONに自動的に切り替わります。スピナーや対話型プロンプトはありません。

resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Done" --json

--quietフラグは、JSON以外のすべての出力を抑制します。

resend emails list --quiet | jq '.[0].id'

破壊的な操作の自動確認

スクリプトで確認プロンプトをスキップするには、--yesを使用します。

resend api-keys delete --id <key-id> --yes

GitHub Actionsの例

- name: Send deployment notification
  env:
    RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
  run: |
    resend emails send \
      --from deploys@yourco.com \
      --to team@yourco.com \
      --subject "Deploy to production: ${{ github.sha }}" \
      --text "Deployed commit ${{ github.sha }} to production."

レート制限

Resend APIのレート制限は、チームのすべてのAPIキーで共有され、1秒あたり2リクエストです。バッチ送信を行う場合、個別の送信をループする代わりにsend-batch(1回の呼び出しで最大100通のメール)を使用してください。

ApidogでメールAPIをテストする

Resend CLIは、対話的な使用や簡単なスクリプトに最適です。ただし、ResendのREST APIを直接呼び出すバックエンドを構築している場合、アプリケーションコードを書く前にこれらのエンドポイントを探索してテストする方法が必要です。

Apidogがそれに対応します。これは無料のAPIクライアントで、HTTPリクエストの送信、応答の検査、テストケースの整理、異なるAPIキーと構成の環境設定を可能にします。

Apidogが典型的なResend統合ワークフローにどのように適合するかを以下に示します。

Resend API仕様のインポート。 Resendはresend.com/docsでAPIリファレンスドキュメントを提供しています。API仕様をApidogにインポートして、リクエスト/レスポンススキーマを含むすべてのエンドポイントの整理されたビューを取得できます。

環境の設定。 Apidogで、開発用と本番用の環境を作成します。RESEND_API_KEYを環境変数として保存し、リクエストで{{RESEND_API_KEY}}として参照します。ワンクリックで環境を切り替えることができます。

送信ロジックのテスト。 アプリケーションからメールを送信するコードを書く前に、Apidogで正確なペイロードを使用してPOST /emailsエンドポイントを実行します。応答を確認し、メールIDが正しく返されることを確認し、エッジケース(フィールドの欠落、無効なアドレスなど)の動作を検証します。

テストの自動化。 Apidogのテストランナーを使用すると、API呼び出しを連結し、応答値をアサートできます。テストメールを送信し、IDで取得し、そのステータスを検証するテストを、テストコードを書かずに設定できます。

これにより、本番環境で統合バグが発生する前にキャッチできます。ローカル開発用のResend CLIと組み合わせることで、迅速なターミナルツールと徹底的なAPIテスト環境の両方を利用できます。

Resendの料金

CLI自体は無料でオープンソースです。料金はResendプラットフォームに適用されます。

プラン料金月間メール数日次制限ログ保持期間
無料月額$03,000100/日1日
プロ月額$2050,000制限なし3日間
スケール月額$90100,000制限なし7日間
エンタープライズカスタムカスタムカスタムカスタム

無料プランについて知っておくべき点がいくつかあります。

専用IPは、月額30ドルのScaleプランのアドオンで、1日あたり500通以上のメールを送信する場合に利用できます。

ボタン

よくある質問

Resend CLIをインストールするにはNode.jsが必要ですか?

cURLまたはHomebrewでのインストール方法では必要ありません。これらは事前に構築されたスタンドアロンバイナリをダウンロードします。npmでのインストールにはNode.js 20以降が必要です。

なぜどのメールアドレスからも送信できないのですか?

Resendは検証済みのドメインを必要とします。ドメインを所有し、Resendが提供するDNSレコード(SPF、DKIM、DMARC)を追加し、検証ステップを通過する必要があります。Gmailのような無料のメールプロバイダーは送信元アドレスとしてサポートされていません。

無料プランでどのメールアドレスにも送信できますか?

はい。無料プランは受信者を制限しません。月間3,000通、1日100通の上限があります。

自然言語によるスケジュール設定はどのように機能しますか?

CLIは「明日の午前9時」、「2時間後」、「来週金曜日の午後3時」、または標準的なISO 8601タイムスタンプなどのフレーズを解析します。特に指定がない限り、時刻はシステムのローカルタイムゾーンで解釈されます。

出力がパイプされるとどうなりますか?

CLIはパイプされていることを検出し、スピナーやプロンプトなしで自動的にJSON専用出力に切り替わります。明示的に--jsonを渡す必要はありません。

複数のResendアカウントでCLIを使用できますか?

はい。resend loginを複数回実行して異なるプロファイルを保存し、resend auth switchでそれらを切り替えるか、任意のコマンドで--profile <名前>を渡して特定のプロファイルを使用できます。

Resend CLIはオープンソースですか?

はい、MITライセンスの下でgithub.com/resend/resend-cliでホストされています。

--quiet--jsonの違いは何ですか?

どちらもJSON出力を生成します。--jsonはJSON出力を強制します。--quietはスピナーや進行状況インジケーターを抑制し、これもJSONモードを意味します。実際には出力形式に関して同じように動作しますが、--quietはさらにデータ以外のすべての出力を削除します。

追加リソース

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる