デプロイせずに Webhook をデバッグ: 10 秒で起動できる一時的な受信トレイ
使い捨て Webhook URL を作成し、任意のサービスにその URL を指定し、すべてのペイロードを検査します。 トンネル、サーバー、Zapier アカウントはありません。
支払いが成功したときに Stripe が何を送信するかを確認したいとします。 または、誰かがプル リクエストを開いたときに GitHub が送信するもの。 標準的なアプローチ: ローカルサーバーを起動し、ngrok をインストールし、トンネルを設定し、ターミナルウィンドウを開いたままにして、セッションが継続されることを望みます。 テストの途中で期限切れになることはありません。 さらに悪いことに、中途半端なハンドラーをステージングにデプロイし、待っている間にログを追跡します。
どちらのワークフローも、実際の質問が単純である場合、インフラストラクチャで時間を無駄にします: *ペイロードはどのようなものですか? *
Botoi の Webhook 受信箱は、受信ペイロードをキャプチャして 24 時間保存する使い捨て URL を提供します。 3 つの API 呼び出し。 アカウントもトンネルもサーバーもありません。
3ステップのワークフロー
- 受信箱を作成する 固有の受信 URL を取得するには
- Webhook ソースを指定する そのURLで
- ペイロードをリストする 届いたものを検査する
各ステップは単一です curl 指示。
ステップ 1: 受信トレイを作成する
curl -X POST https://api.botoi.com/v1/webhook/inbox/create
応答:
{
"success": true,
"data": {
"inbox_id": "a1b2c3d4",
"url": "https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive",
"expires_in": 86400
}
}
を保存します。 inbox_id そして url 価値観。 受信トレイは 24 時間 (86,400 秒) 存続し、その後
URL と保存されているすべてのペイロードが削除されます。
ステップ 2: Webhook を受信トレイに送信する
Webhook プロバイダーに次の場所を指定します。 url ステップ 1 から。受信トレイは任意の JSON 本文を受け入れます。
curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive \\
-H "Content-Type: application/json" \\
-d '{
"event": "payment_intent.succeeded",
"amount": 4999,
"currency": "usd",
"customer_email": "buyer@example.com"
}'
応答:
{
"success": true,
"data": {
"received": true,
"payload_id": "e5f6g7h8"
}
}
ステップ 3: ペイロードを検査する
curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/list
応答:
{
"success": true,
"data": {
"inbox_id": "a1b2c3d4",
"payloads": [
{
"id": "e5f6g7h8",
"received_at": "2026-03-26T10:00:00Z",
"body": {
"event": "payment_intent.succeeded",
"amount": 4999,
"currency": "usd",
"customer_email": "buyer@example.com"
}
}
],
"count": 1
}
}
すべてのペイロードはタイムスタンプと一意の ID とともに保存されます。 リストのエンドポイントは何度でも呼び出すことができます 24 時間以内に。
実際の例: Stripe Webhook のデバッグ
Stripe のテスト モードを使用すると、ダッシュボードからイベントをトリガーできます。 それらを受信するためにサーバーを立ち上げる代わりに、 Stripe で受信トレイの URL を指定します。
1. 受信箱を作成する
INBOX=\$(curl -s -X POST https://api.botoi.com/v1/webhook/inbox/create)
INBOX_ID=\$(echo \$INBOX | jq -r '.data.inbox_id')
INBOX_URL=\$(echo \$INBOX | jq -r '.data.url')
echo "Inbox URL: \$INBOX_URL"
2. URLをStripeに追加します
に行く Stripe ダッシュボード > 開発者 > Webhook。
「エンドポイントの追加」をクリックして、 INBOX_URL。 気になるイベントを選択し、
好き payment_intent.succeeded そして invoice.payment_failed。
3. テスト イベントをトリガーする
Stripe ダッシュボードで [テスト Webhook を送信] をクリックします。 次に、到着したものを検査します。
curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" | jq '.data.payloads'
これで、すべてのネストされたオブジェクト、フィールド名、タイプを含む、Stripe が送信する正確なペイロードが得られました。 これを使用すると、スキーマを推測するのではなく、自信を持ってハンドラーを作成できます。
実際の例: GitHub Webhook 統合のテスト
GitHub リポジトリ Webhook は次のようなイベントで起動します。 push、 pull_request、 そして issues。
コードをローカルで実行せずにキャプチャする方法は次のとおりです。
1. 受信トレイを作成し、GitHub を設定する
# Create the inbox
INBOX=\$(curl -s -X POST https://api.botoi.com/v1/webhook/inbox/create)
INBOX_URL=\$(echo \$INBOX | jq -r '.data.url')
INBOX_ID=\$(echo \$INBOX | jq -r '.data.inbox_id')
# Add webhook to your repo via GitHub API
curl -X POST \\
-H "Authorization: token \$GITHUB_TOKEN" \\
-H "Content-Type: application/json" \\
"https://api.github.com/repos/your-org/your-repo/hooks" \\
-d "{
\\"config\\": {
\\"url\\": \\"\$INBOX_URL\\",
\\"content_type\\": \\"json\\"
},
\\"events\\": [\\"pull_request\\"]
}"
2. プル リクエストを開き、受信箱を確認します。
curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" \\
| jq '.data.payloads[0].body | {action, number: .pull_request.number, title: .pull_request.title}'
出力(例):
{
"action": "opened",
"number": 42,
"title": "Add rate limiting to /api/orders"
}
次のようなフィールドを含む、GitHub が送信する正確な構造を確認できます。 action、
sender、 repository、そして完全な pull_request 物体。
これは、GitHub のドキュメントを読んで、各イベント タイプにどのフィールドが設定されているかを推測するよりも高速です。
自動化: テスト スクリプト
この bash スクリプトは、受信トレイを作成し、テスト ペイロードを送信して取得し、ラウンド トリップを検証します。
名前を付けて保存 test-webhook.sh それを実行して、統合がエンドツーエンドで機能することを確認します。
#!/bin/bash
set -euo pipefail
API="https://api.botoi.com/v1/webhook/inbox"
echo "Creating inbox..."
INBOX=\$(curl -s -X POST "\$API/create")
INBOX_ID=\$(echo "\$INBOX" | jq -r '.data.inbox_id')
INBOX_URL=\$(echo "\$INBOX" | jq -r '.data.url')
echo "Inbox ID: \$INBOX_ID"
echo "Receive URL: \$INBOX_URL"
echo ""
echo "Sending test payload..."
SEND=\$(curl -s -X POST "\$INBOX_URL" \\
-H "Content-Type: application/json" \\
-d '{
"event": "order.created",
"order_id": "ord_98765",
"total": 129.99,
"items": [
{"sku": "WIDGET-A", "qty": 2},
{"sku": "GADGET-B", "qty": 1}
]
}')
PAYLOAD_ID=\$(echo "\$SEND" | jq -r '.data.payload_id')
echo "Payload ID: \$PAYLOAD_ID"
echo ""
echo "Retrieving payloads..."
LIST=\$(curl -s -X POST "\$API/\$INBOX_ID/list")
COUNT=\$(echo "\$LIST" | jq -r '.data.count')
if [ "\$COUNT" -ge 1 ]; then
echo "Success: \$COUNT payload(s) received"
echo "\$LIST" | jq '.data.payloads[0].body'
else
echo "Error: no payloads found"
exit 1
fi
期待される出力:
Creating inbox...
Inbox ID: a1b2c3d4
Receive URL: https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive
Sending test payload...
Payload ID: e5f6g7h8
Retrieving payloads...
Success: 1 payload(s) received
{
"event": "order.created",
"order_id": "ord_98765",
"total": 129.99,
"items": [
{"sku": "WIDGET-A", "qty": 2},
{"sku": "GADGET-B", "qty": 1}
]
}
比較: botoi 受信トレイと代替手段
| 特徴 | ボトイ受信箱 | ングロク | webhook.site | リクエストビン |
|---|---|---|---|---|
| セットアップ時間 | 1 つのカールコマンド | CLI + 認証をインストールする | ブラウザを開く | ブラウザを開く |
| ローカルサーバーが必要です | いいえ | はい | いいえ | いいえ |
| アカウントが必要です | いいえ | はい (無料利用枠) | いいえ(限定的) | はい |
| プログラムによるアクセス | 完全な API | API(有料) | API(有料) | API(有料) |
| CI/CD フレンドリー | はい; カール + jq | 可能; 複雑な | いいえ | いいえ |
| TTL | 24時間 | セッションベース | さまざま | 48時間 |
| プロセスは実行を継続します | いいえ | はい | いいえ | いいえ |
| 無料 | はい | 限定 | 限定 | いいえ |
Botoi 受信トレイの主な利点は、すべてが API を通じて行われることです。 受信箱を作成したり、テストを送信したりできます ペイロードを取得し、ブラウザを開かずにシェル スクリプト、CI パイプライン、統合テスト内の結果を取得します。 またはバックグラウンドプロセスを生きたままにします。
これをいつ使用するか
- 新しい Webhook プロバイダーを検討しています。 ハンドラー コードを作成する前に、実際のペイロードをキャプチャして理解する データの形状、フィールド名、およびエッジケース。
- CI での統合テスト。 テスト スイートで受信トレイを起動し、Webhook をトリガーし、リストをポーリングします。 エンドポイントを取得し、ペイロードの内容をアサートします。
- 壊れたハンドラーをデバッグしています。 実稼働 Webhook URL を受信トレイ URL と一時的に交換して、 障害の原因となる正確なペイロードをキャプチャします。
- ペアプログラミングまたはデモ。 受信トレイ ID をチームメイトと共有します。 どちらもペイロードを送信でき、 さまざまなマシンからの結果を検査します。
受信トレイは設計上使い捨てです。 必要なときに作成し、セッションで使用し、期限切れにします。 クリーンアップも、エンドポイントの残留も、驚くような請求もありません。
FAQ
- Webhook 受信トレイはどれくらいの期間存続しますか?
- 各受信トレイは 24 時間後に期限切れになります。 受信ボックス URL、受信したすべてのペイロード、メタデータは有効期限が切れると削除されます。 必要なときにいつでも新しい受信トレイを作成できます。
- 受信トレイを作成するには API キーが必要ですか?
- いいえ。無料枠では、IP ベースのレート制限により、1 分あたり 5 リクエストの匿名アクセスが許可されます。 サインアップせずに数秒でテストを開始できます。
- Webhook ペイロードにサイズ制限はありますか?
- 受信エンドポイントは、有効な JSON 本文を受け入れます。 標準の Cloudflare Workers リクエストサイズ制限が適用されます (ほとんどのプランでは 100 MB)。
- これを非 JSON Webhook で使用できますか?
- 受信エンドポイントは JSON 本文を必要とします。 Webhook ソースがフォームエンコードされたデータまたは XML を送信する場合、ペイロードを受信ボックス URL に転送する前に、ペイロードを JSON に変換するための小さなプロキシが必要になります。
- これはngrokとどう違うのですか?
- ngrok は、実行中のローカル サーバーへのトンネルを作成します。 Botoi Webhook 受信箱は、後で取得できるようにペイロードを保存するホスト型エンドポイントです。 ローカル サーバーは必要なく、CLI をインストールしたり、プロセスを維持したりする必要はありません。
botoiで開発を始めよう
150以上のAPIエンドポイント。検索、テキスト処理、画像生成、開発者ユーティリティに対応。無料プラン、クレジットカード不要。