APIドキュメント

MailBrew REST APIリファレンス

はじめに

MailBrewには2つの使い方があります。

SMTP
SMTPモード(メール送信テスト)

アプリのSMTP送信先をMailBrew(smtp.mailbrew.dev)に設定するだけ。送信したメールをダッシュボードの共有インボックスでリアルタイム確認できます。

SMTP設定へ →
Cloud API
Cloud APIモード(E2E・CIテスト)

APIでテスト用メールアドレスを発行し、実際にメールを受信。OTP抽出、リンク検証、メールアサーションなどをAPIで自動化できます。CI/CDパイプラインに組み込み可能。

Cloud API →

SMTP設定

アプリケーションの環境変数を以下のように設定してください。

ダッシュボードの「SMTP設定」で生成したSMTP認証情報を使用すると、宛先アドレスに関係なく送信メールが企業の共有インボックスに自動的に振り分けられます。テスト時に宛先を意識する必要がなくなります。

Laravel (.env)
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailbrew.dev
MAIL_PORT=1025
MAIL_USERNAME=mb_smtp_xxxxx
MAIL_PASSWORD=your_smtp_password
MAIL_ENCRYPTION=null

Node.js (Nodemailer) の場合:

const transporter = nodemailer.createTransport({
  host: 'smtp.mailbrew.dev',
  port: 1025,
  secure: false,
  auth: {
    user: 'mb_smtp_xxxxx',
    pass: 'your_smtp_password',
  },
});

Web UI

MailBrewに送信されたメールはWeb UIでリアルタイムに確認できます。HTMLメールのプレビュー、添付ファイルのダウンロード、全文検索が可能です。

https://mailbrew.dev

クラウドAPI

以下はMailBrewクラウドサービスのAPIエンドポイントです。APIキーによる認証が必要です。

SDK

公式SDKを使うとAPIを簡単に呼び出せます。

npm install @brewmail/sdk
const { BrewMail } = require('@brewmail/sdk');
const client = new BrewMail('mb_your_key_here');

メソッド一覧

アドレス管理
createAddress(options?)

一時メールアドレスを作成

const addr = await client.createAddress({ ttl: 3600 });
console.log(addr.address); // "[email protected]"
listAddresses()

アドレス一覧を取得

const addresses = await client.listAddresses();
deleteAddress(address)

アドレスを削除

await client.deleteAddress('[email protected]');
メール操作
waitForEmail(address, options?)

メール受信を待機(ロングポーリング)

const email = await client.waitForEmail(addr.address, { timeout: 30 });
listEmails(address)

メール一覧を取得

const emails = await client.listEmails(addr.address);
getEmail(address, emailId)

メール詳細を取得

const detail = await client.getEmail(addr.address, email.id);
データ抽出
extractOtp(address, emailId, options?)

メール本文からOTP/認証コードを抽出

const code = await client.extractOtp(addr.address, email.id);
// Custom pattern: { pattern: '\\d{4}' }
extractLinks(address, emailId, options?)

メール本文からリンクを抽出

const links = await client.extractLinks(addr.address, email.id);
// Filter: { pattern: 'verify' }
assertEmail(address, emailId, assertions)

メール内容のアサーション(件名・送信元・本文など)

const result = await client.assertEmail(addr.address, email.id, {
  subject_contains: 'Welcome',
  body_contains: 'verify',
});
console.log(result.passed); // true
便利メソッド
captureOtp(options?)

アドレス作成〜OTP抽出を一括で行う

const { address, waitAndExtract } = await client.captureOtp({ ttl: 120 });
// ... trigger email ...
const { code, email } = await waitAndExtract();
forwardEmail(address, emailId, to)

メールを別アドレスに転送

await client.forwardEmail(addr.address, email.id, '[email protected]');
Webhook
createWebhook(url, options?)

グローバルWebhookを作成

const wh = await client.createWebhook('https://example.com/hook', {
  events: ['email.received'],
});
listWebhooks()

Webhook一覧を取得

const webhooks = await client.listWebhooks();
deleteWebhook(id)

Webhookを削除

await client.deleteWebhook(wh.id);

認証

すべてのAPIリクエストにはAPIキーが必要です。X-API-Key ヘッダーに含めてください。

X-API-Key: mb_your_key_here

スコープ

APIキーにスコープが設定されている場合、該当する権限がないリクエストは403エラーになります。スコープ未設定のキーは全権限を持ちます。

addresses:read— アドレスの一覧・詳細取得
addresses:write— アドレスの作成
addresses:delete— アドレスの削除
emails:read— メールの一覧・詳細・OTP/リンク取得

アドレス形式

発行されるアドレスは企業のサブドメインを使用します。カスタムドメインが設定されている場合はそちらが使用されます。

{random}@{company-slug}.mailbrew.dev

ベースURL

https://mailbrew.dev/api/mailbrew

エンドポイント

POST
/api/mailbrew/addresses
addresses:write

アドレス発行 — 一時メールアドレスを生成します。ttl=0で常設(無期限)アドレスを作成できます。

パラメータ

ttlinteger
任意
有効期間(秒)。デフォルト3600。0で常設アドレス
webhook_urlstring
任意
メール受信時の通知先URL(アドレス単位)
local_partstring
任意
カスタムローカルパート

レスポンス

{
  "data": {
    "id": 1,
    "address": "[email protected]",
    "webhook_url": null,
    "expires_at": "2026-03-29T13:00:00+00:00",
    "is_permanent": false,
    "created_at": "2026-03-29T12:00:00+00:00"
  }
}
GET
/api/mailbrew/addresses
addresses:read

アドレス一覧 — 自分のAPIキーで発行したアドレスの一覧を取得します。

レスポンス

{
  "data": [
    {
      "id": 1,
      "address": "[email protected]",
      "webhook_url": null,
      "expires_at": "2026-03-29T13:00:00+00:00",
      "is_permanent": false,
      "created_at": "2026-03-29T12:00:00+00:00"
    }
  ]
}
GET
/api/mailbrew/addresses/{address}
addresses:read

アドレス詳細 — アドレスの詳細を取得します。

レスポンス

{
  "data": {
    "id": 1,
    "address": "[email protected]",
    "webhook_url": null,
    "expires_at": "2026-03-29T13:00:00+00:00",
    "is_permanent": false,
    "created_at": "2026-03-29T12:00:00+00:00"
  }
}
GET
/api/mailbrew/addresses/{address}/emails
emails:read

メール一覧 — 指定アドレスに届いたメールの一覧を取得します。

レスポンス

{
  "data": [
    {
      "id": 1,
      "from_address": "[email protected]",
      "subject": "Your verification code",
      "text_body": "Your code is: 847291",
      "received_at": "2026-03-29T12:05:00+00:00"
    }
  ]
}
GET
/api/mailbrew/addresses/{address}/emails/{id}
emails:read

メール詳細 — 特定のメールの詳細を取得します。

レスポンス

{
  "data": {
    "id": 1,
    "from_address": "[email protected]",
    "subject": "Your verification code",
    "text_body": "Your code is: 847291",
    "html_body": "<p>Your code is: <b>847291</b></p>",
    "received_at": "2026-03-29T12:05:00+00:00"
  }
}
GET
/api/mailbrew/addresses/{address}/emails/{id}/otp
emails:read

OTP抽出 — メール本文から認証コード(OTP)を自動抽出します。E2Eテストに最適。

パラメータ

patternstring
任意
カスタム正規表現パターン

レスポンス

{
  "data": {
    "code": "847291",
    "email_id": 1,
    "source": "text_body"
  }
}
GET
/api/mailbrew/addresses/{address}/emails/{id}/links
emails:read

リンク抽出 — メール本文からリンク(URL)を自動抽出します。招待リンクやパスワードリセットリンクの取得に最適。

パラメータ

patternstring
任意
ドメインフィルタ用の正規表現パターン

レスポンス

{
  "data": {
    "links": [
      "https://example.com/verify?token=abc123",
      "https://example.com/unsubscribe"
    ],
    "email_id": 1,
    "source": "text_body"
  }
}
POST
/api/mailbrew/addresses/{address}/emails/{id}/assert
emails:read

メールアサーション — メールの内容を検証します。件名、送信元、宛先、本文の部分一致など、複数条件を同時にチェック。

パラメータ

subjectstring
任意
件名の完全一致
subject_containsstring
任意
件名の部分一致
fromstring
任意
送信元アドレスの完全一致
tostring
任意
宛先アドレスに含まれるか
body_containsstring
任意
本文の部分一致

レスポンス

{
  "data": {
    "passed": true,
    "email_id": 1,
    "results": [
      { "field": "subject", "passed": true, "expected": "Welcome", "actual": "Welcome" },
      { "field": "body_contains", "passed": true, "expected": "verify" }
    ]
  }
}
POST
/api/mailbrew/addresses/{address}/emails/{id}/forward
emails:read

メール転送 — 受信メールを別のメールアドレスに転送します。

パラメータ

tostring
必須
転送先メールアドレス

レスポンス

{ "success": true }
DELETE
/api/mailbrew/addresses/{address}
addresses:delete

アドレス削除 — アドレスを削除します。

レスポンス

204 No Content
GET
/api/mailbrew/webhooks

Webhook一覧 — グローバルWebhookの一覧を取得します。

レスポンス

{
  "data": [
    {
      "id": 1,
      "url": "https://example.com/hook",
      "events": ["email.received"],
      "is_active": true
    }
  ]
}
POST
/api/mailbrew/webhooks

Webhook登録 — グローバルWebhookを登録します。全アドレスのメール受信を通知。

パラメータ

urlstring
必須
Webhook URL
eventsarray
任意
イベント配列。未指定で全イベント

レスポンス

{
  "data": {
    "id": 1,
    "url": "https://example.com/hook",
    "secret": "abc123...",
    "events": ["email.received"],
    "is_active": true
  }
}

コード例

const { BrewMail } = require('@brewmail/sdk');
const client = new BrewMail('mb_your_key_here');

// E2E test: create address, wait for email, extract OTP
const { address, waitAndExtract } = await client.captureOtp({ ttl: 120 });

// ... trigger email send to `address` ...

const { code, email } = await waitAndExtract();
console.log(code); // "847291"