White LabelブランディングAPI・MCPガイド

TrekMail REST APIまたはMCPツールを使い、ドメインごとのブランド情報、ロゴ、ダッシュボードとWebメールのホストを設定します。

記事の詳細

種類・難易度・対象プラン・最終更新の情報。

種類
リファレンス
難易度
中級
プラン
Pro · Agency · + White Label add-on
最終更新
2026年9月10日

ドメインごとのWhite Labelブランディングは、ダッシュボードを使わずにAPIとMCPから一貫して設定できます。エージェントは、ドメインのブランド名と色の設定、ロゴのアップロード、ブランド化されたダッシュボードとWebメールホストの有効化、作成すべきDNSレコードの取得、DNS検証の要求を行えます。これはダッシュボードのBrandingタブが保存するものと同じブランディングです。APIを使うと、エージェントやスクリプトにこの作業を任せられます。

ブランディングはドメインごとに設定されます(ドメインは数値idです)。ドメインは独自のブランド(custom)を持つ、アカウントのデフォルトを継承する(inherit)、またはオフにできます。APIは、そのドメインのブランド化されたホスト名とCNAMEレコードを返します。返されたレコードは必ず正確にコピーしてください。このガイドの例からホスト名やCNAMEターゲットを組み立てないでください。

アドオンの利用権限

すべてのメールプランには、30 日間のWhite Labelトライアルとプレビューが含まれます。この期間を使ってブランドを設定し、ブランド化されたホストを顧客に公開する前に動作を確認してください。

APIにはWhite Labelダッシュボードと同じ利用権限が適用されます。

  • 有効なトライアルまたは有料アドオン: 読み取りと書き込みのスコープを利用できます。有効にしたホストは、CNAMEが解決されSSL証明書が発行されると、pending_dnsからactiveに移行します。
  • 解約後の猶予期間: アカウント所有者は、表示されたhard_delete_at時刻まで読み取り専用アクセスを維持します。書き込みはブロックされ、委任された接続はWhite Labelへのアクセスを直ちに失います。
  • 有効な利用権限なし: White Labelスコープは認証情報の実効権限から削除され、MCPツールも読み込まれません。

保存済みトークンが以前White Labelスコープを持っていても、利用権限が無効になっている場合、APIは具体的な次の手順とともに403 scope_blocked_by_entitlementを返します。より広い権限のトークンを作成しても利用権限を回避できません。

必要なスコープ

ブランディングには専用のスコープがあります。これにより、通常のドメインを管理する自動化が、誤ってリセラーのIDを表示または変更することを防げます。

スコープ 対象
branding:read ドメインのブランド、アセット、ブランド化されたホスト、メールゾーンの状態、必要なDNSレコードを読み取る
branding:write ブランディングの変更、アセットのアップロードまたは削除、プレビューの要求、DNSの検証、ブランディングの消去

RESTエンドポイント

すべてのエンドポイントはhttps://trekmail.net/api/v1の下にあります。{id}は数値のドメインidです。

エンドポイント メソッド スコープ 機能
/api/v1/domains/{id}/branding GET branding:read モード、アドオンの状態、ブランドフィールド、メールゾーンの状態、ホスト、作成するCNAMEレコード、CNAMEターゲットを含む完全なブランディング状態を読み取る
/api/v1/domains/{id}/branding PATCH branding:write モード、名前、色、ホストとメールゾーンの切り替え、送信者/サポート、スコープを部分マージで更新する
/api/v1/domains/{id}/branding/logo/{slot} PUT branding:write base64からロゴをアップロードする(slot = lightdarkfavicon
/api/v1/domains/{id}/branding/logo/{slot} DELETE branding:write ロゴスロットを削除する
/api/v1/domains/{id}/branding/verify-dns POST branding:write 有効なブランド化ホストのDNS検証をキューに入れる
/api/v1/domains/{id}/branding/preview POST branding:write ブランド化された画面の 72 時間有効なプレビューURLを作成する
/api/v1/domains/{id}/branding?scope=domain|all DELETE branding:write このドメインまたはアカウント全体のブランディングを消去する

verify-dnspreviewを除くすべてのエンドポイントは、GETと同じブランディングペイロードを返すため、1回のリクエストで新しい状態を確認できます。

ブランディングペイロード

{
  "data": {
    "mode": "custom",
    "white_label_addon_active": true,
    "brand": {
      "id": 42,
      "name": "Northwind Mail",
      "primary_color": "#2563eb",
      "accent_color": "#10b981",
      "logo_url": "https://trekmail.net/storage/branding/42/light.png",
      "logo_dark_url": "https://trekmail.net/storage/branding/42/dark.png",
      "favicon_url": "https://trekmail.net/storage/branding/42/favicon.png",
      "support_email": "support@northwind.com",
      "support_url": "https://help.northwind.com",
      "sender_email": "noreply@northwind.com"
    },
    "mail_zone": {
      "enabled": true,
      "domain": "northwind.com",
      "dns_status": "pending_dns",
      "client_hosts_status": "pending_dns",
      "records": [
        { "type": "TXT", "name": "spf.northwind.com", "value": "v=spf1 include:spf.trekmail.net -all" },
        { "type": "CNAME", "name": "imap.northwind.com", "value": "imap.trekmail.net" },
        { "type": "CNAME", "name": "dav.northwind.com", "value": "trekmail.net" }
      ],
      "dav_url": "https://trekmail.net/dav/files/account/",
      "dav_ready": false,
      "cert_expires_at": null,
      "checked_at": "2026-08-29T06:20:11+00:00"
    },
    "hosts": [
      { "kind": "dashboard", "hostname": "dashboard.northwind.com", "subdomain_label": "dashboard", "enabled": true, "status": "pending_dns" },
      { "kind": "webmail", "hostname": "mail.northwind.com", "subdomain_label": "mail", "enabled": true, "status": "pending_dns" }
    ],
    "dns_records": [
      { "type": "CNAME", "name": "<returned dashboard host>", "value": "<returned CNAME target>", "proxied": false },
      { "type": "CNAME", "name": "<returned webmail host>", "value": "<returned CNAME target>", "proxied": false }
    ],
    "cname_target": "<returned CNAME target>"
  }
}

modeoffの場合、brandmail_zonenullです。mail_zone.enabledは保存された意図です。2つの状態フィールドを使って、保留中、アクティブ、失敗、クリーンアップの各状態を区別してください。ホストのstatusは、DNSとSSLがまだ保留中か、ホストがアクティブかを示します。例のプレースホルダー値は意図的なものです。公開する値は、返されたdns_recordscname_targetだけです。

mail_zoneはブランド独自のメールホスト名を表します(下記参照)。dns_statusはメールDNSの状態、client_hosts_statusはクライアントホストと証明書の状態を表し、どちらもoffpending_dnsactivefailedのいずれかです。recordsにはプロバイダーが公開する必要のあるDNSレコードが含まれます。dav_urlは常に安全に使用できます。ブランド化されたDAV証明書と制限付きWebルートの準備ができるまでTrekMail上に留まります。dav_readytrueになった場合のみ切り替えてください。その後、cert_expires_atにブランド化されたメールアプリホストの最も早い証明書有効期限が表示されます。

現在のブランディングを読み取る

curl -s "https://trekmail.net/api/v1/domains/123/branding" \
  -H "Authorization: Bearer tm_live_your_token"

ブランドを設定する(部分マージ)

PATCH部分マージです。省略したフィールドはすべて保持されるため、変更する内容だけを送信してください。

curl -s -X PATCH "https://trekmail.net/api/v1/domains/123/branding" \
  -H "Authorization: Bearer tm_live_your_token" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: brand-123-initial" \
  -d '{
    "mode": "custom",
    "name": "Northwind Mail",
    "primary_color": "#2563eb",
    "accent_color": "#10b981",
    "dashboard_enabled": true,
    "dashboard_label": "dashboard",
    "webmail_enabled": true,
    "webmail_label": "mail",
    "mail_zone_enabled": true,
    "support_email": "support@northwind.com",
    "support_url": "https://help.northwind.com",
    "sender_email": "noreply@northwind.com"
  }'

リクエスト本文のフィールドは次のとおりです。

フィールド 説明
mode offinherit(アカウントのデフォルトを使用)、custom(ドメイン固有のブランド)のいずれか。ブランディングが現在オフの場合、再度有効にするにはmode必ず指定してください。
name サイドバー、ログイン画面、ページタイトル、メール署名に表示されるブランド名。
primary_color / accent_color 16進カラーコード(#2563eb)。
dashboard_enabled / dashboard_label ダッシュボードホストの切り替えとサブドメインラベル。
webmail_enabled / webmail_label Webメールホストの切り替えとサブドメインラベル。
mail_zone_enabled ブランド独自のドメインでメールアプリとDAV同期を提供し、顧客にimap.northwind.comdav.northwind.comなどの名前を表示します。ゾーンは単一ドメインではなくブランドに属するため、mode=customまたはscope=account_defaultが必要です。inheritドメインに対して送信すると422 inherited_brandが返されます。プロビジョニングを追跡して残りのレコードを公開するには、mail_zone.dns_statusmail_zone.client_hosts_statusmail_zone.dav_readymail_zone.recordsを確認してください。
support_email ブランド化されたトランザクションメールのReply-To/サポートアドレス。
support_url ヘルプセンターのURL。ブランド化されたメールのフッターに「ヘルプが必要ですか?」リンクを追加します。
sender_email ブランド化されたトランザクションメールに表示されるFromアドレス。アカウント上で検証済みのDKIMキーを持つドメインのアドレスでなければ、更新は拒否されます。
scope domain(このドメインのみ、デフォルト)、account_default(新しいドメインのアカウントデフォルトにも設定)、all(既存のすべてのドメインにも適用)のいずれか。

ロゴをアップロードする

ロゴはbase64で送信します。slotlightdarkfaviconのいずれかです。すべてのスロットでPNGとJPGを利用でき、faviconではICOも利用できます。最大1 MBです。セキュリティ上の理由からSVGは拒否されます。デフォルトのscope=domaincustomモードのドメインだけを変更し、継承されたプロファイルには追従しません。inheritドメインから共有プロファイルを意図的に変更するには、scope=account_defaultを指定し、制約のないbranding:writeトークンを使用してください。ドメイン制約付きトークンではアカウントのデフォルトを変更できません。

curl -s -X PUT "https://trekmail.net/api/v1/domains/123/branding/logo/light" \
  -H "Authorization: Bearer tm_live_your_token" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: brand-123-logo-light" \
  -d "{\"content_base64\":\"$(base64 -w0 logo-light.png)\"}"

DELETEでスロットを削除します。

curl -s -X DELETE "https://trekmail.net/api/v1/domains/123/branding/logo/dark" \
  -H "Authorization: Bearer tm_live_your_token" \
  -H "Idempotency-Key: brand-123-logo-dark-remove"

どちらも、更新されたlogo_url / logo_dark_url / favicon_urlを含むブランディングペイロードを返します。PUTではJSON本文、DELETEではクエリパラメーターでscopeを指定できます。継承プロファイルに暗黙的なドメインスコープの変更を行うと、422 inherited_brandが返されます。

DNSを検証する

CNAMEレコードを作成したら(下記のフローを参照)、検証をキューに入れます。

curl -s -X POST "https://trekmail.net/api/v1/domains/123/branding/verify-dns" \
  -H "Authorization: Bearer tm_live_your_token" \
  -H "Idempotency-Key: brand-123-verify"
{ "data": { "status": "queued", "hosts": 2 } }

これはバックグラウンドで実行されます。GET /brandingを再度読み取り、ホストのstatusactiveに変わるのを確認してください。White Labelが失効している場合、リクエストは再有効化のヒントとともに403 scope_blocked_by_entitlementを返します。

ブランドのメールゾーンがある場合は同時に再確認されるため、mail_zone.dns_statusmail_zone.client_hosts_statusも同じ呼び出しで更新されます。ゾーンのためにこの呼び出しを実行する必要はありません。待機中のゾーンは定期的に再確認され、レコードが解決してから数分以内に有効になります。verify-dnsは次回の定期確認を待たず、今すぐ確認するよう要求するだけです。

ブランド独自ドメインでのメール

mail_zone_enabledを使うと、顧客のメールアプリとDAV同期クライアントにリセラーの名前を表示できます。有効にしてから、mail_zone.recordsで返されたすべてのレコードを公開してください。SPF TXTレコードに加え、IMAPとDAVのCNAMEレコードが含まれます。レスポンスに含まれる正確な名前とターゲットが正式な値です。

返されたレコードがCNAMEを要求している場合はAレコードではなくCNAMEを使い、Cloudflareのクラウドをグレーのままにしてください。メールとDAVクライアントは直接接続する必要があります。DNSプロキシは証明書の検証やブラウザ以外のプロトコルを妨げることがあります。レスポンスには公開すべきすべてのレコードが示されるため、推測したメールレコードを追加しないでください。

レコードが解決されると、TrekMailは証明書を発行してホスト名を有効にします。mail_zone.client_hosts_statusactiveに、mail_zone.dav_readytrueになるまで確認してください。返されたdav_urlを引き続き使用してください。DAVを安全に提供できるようになった後でのみ、プラットフォームのアドレスからブランド化されたアドレスに変わります。ホストの状態がfailedの場合はDNS検証を再度実行し、失敗が続く場合はサポートチケットを開いてください。

ライブプレビューを作成する

POST /branding/previewは 72 時間有効なURLを作成し、DNSが有効になる前にブランド化された画面を確認できます。

curl -s -X POST "https://trekmail.net/api/v1/domains/123/branding/preview" \
  -H "Authorization: Bearer tm_live_your_token" \
  -H "Idempotency-Key: brand-123-preview"

レスポンスには 72 時間後に期限切れとなるプレビューURLが含まれます。ブランディングがオフまたは未設定でプレビューするブランドがない場合は、422 no_brandが返されます。

ブランディングを削除する

curl -s -X DELETE "https://trekmail.net/api/v1/domains/123/branding?scope=domain" \
  -H "Authorization: Bearer tm_live_your_token" \
  -H "Idempotency-Key: brand-123-remove"

scope=domainはこのドメインだけを消去し、scope=allはアカウント全体のブランディングを消去します。ブランディングペイロードを返します。

MCPツール

20個のツールを含むwhite_labelツールセットのうち、7個がブランディングに対応します。接続に実効的なブランディングスコープがあり、White Labelが利用可能な場合にのみ登録されます。読み取りツールにはbranding:read、その他の6個にはbranding:writeが必要です。ローカルでホストされるMCPサーバーでは、管理者が書き込み操作を許可する必要がある場合もあります。

ツール 説明
get_domain_branding モード、アドオンの状態、ブランドフィールド、ホスト、作成するdns_recordsmail_zoneなど、ドメインの完全なブランディング状態を読み取る
set_domain_branding ブランドを部分マージで設定する: モード、名前、色、ダッシュボード/Webメール/メールゾーンの切り替えとラベル、サポート/送信者、スコープ
set_domain_brand_logo base64のロゴをlightdarkfaviconスロットにアップロードする
verify_domain_branding_dns 有効なブランド化ホストのDNS検証をキューに入れる
create_branding_preview ブランド化された画面のプレビューURLを作成する
remove_domain_brand_logo ロゴスロットを削除する
remove_domain_branding ドメインまたはアカウント全体のブランディングを消去する

get_domain_brandingは読み取り専用です。所有者による解約後の猶予期間中は引き続き利用できますが、6個の書き込みツールはすべて表示されなくなります。White Labelの利用権限がなければ、これらのツールはtools/listに一切表示されません。

自律的なエンドツーエンドフロー

ドメインのDNSがCloudflareにある場合、エージェントは人の操作なしで、ブランディングのないドメインを稼働中のブランド化ホストにできます。既存のCloudflare DNSツール(apply_cloudflare_dns)で、get_domain_brandingが返すCNAMEを書き込めるためです。

  1. ブランドを設定します。 set_domain_branding(mode=custom, name, primary_color, accent_color, dashboard_enabled=true, webmail_enabled=true)
  2. ロゴをアップロードします(任意)。set_domain_brand_logo(slot="light", content_base64=…)を実行し、darkfaviconについて繰り返します。
  3. DNSレコードを読み取ります。 get_domain_branding → 返されたdns_records配列をコピーします。値を推測したり生成したりしないでください。
  4. CNAMEを書き込みます。 プロキシをオフにしてレコードを公開します。Cloudflareではグレーのクラウドに設定し、DNSとSSLの検証が動作するようにします。
  5. 検証します。 verify_domain_branding_dns
  6. ポーリングします。 各ホストのstatusactiveになるまでget_domain_brandingを再度呼び出します。
  7. プレビューします(任意)。顧客をブランド化ドメインに誘導する前に、create_branding_previewでライブデモURLを作成します。

実行例(MCP)

set_domain_branding(
  domain_id=123,
  mode="custom",
  name="Northwind Mail",
  primary_color="#2563eb",
  accent_color="#10b981",
  dashboard_enabled=true,
  webmail_enabled=true,
  support_email="support@northwind.com",
  sender_email="noreply@northwind.com"
)

set_domain_brand_logo(domain_id=123, slot="light", content_base64="iVBORw0KGgo…")
set_domain_brand_logo(domain_id=123, slot="dark", content_base64="iVBORw0KGgo…")

get_domain_branding(domain_id=123)
# → Copy the returned dns_records exactly. Do not substitute an example host or target.

apply_cloudflare_dns(domain_ids=[123])   # writes the CNAMEs, proxy off

verify_domain_branding_dns(domain_id=123)

# poll until active
get_domain_branding(domain_id=123)
# → hosts[].status: "active"

create_branding_preview(domain_id=123)   # optional live demo

エージェントにブランド化されたホスト名と最終的なホスト状態を報告させ、単にpending_dnsのままではなく、実際に稼働したことを確認してください。

注意点

  • 利用権限によってAPIとMCPの利用可否が決まります。 書き込みには有効なトライアルまたは有料アドオンが必要です。解約後、所有者には読み取り専用の復旧期間が与えられますが、他のユーザーはこれらのツールを直ちに失います。
  • PATCHは部分マージです。 省略したフィールドは保持されます。アクセントカラーだけを変更するには{"accent_color":"#10b981"}を送信します。名前、ロゴ、切り替えを再送信する必要はありません。
  • オフから再度有効にするにはmodeが必要です。 ブランディングが現在offの場合、modeを省略したPATCHでは有効になりません。mode=custom(またはinherit)を指定してください。
  • sender_emailには検証済みDKIMドメインが必要です。 設定するFromアドレスは、アカウントですでにDKIMキーがプロビジョニングされているドメイン上にある必要があります。そうでなければ更新は拒否されます。カスタム送信者を設定する前に、ドメインのDKIM(retry_domain_dkim / get_dns_check)を検証してください。
  • ロゴはbase64、≤1 MB、SVGは不可です。 PNGまたはJPG(faviconではICOも可)をcontent_base64として送信します。SVGは拒否されます。大きなソースファイルは先に圧縮してください。
  • 返されたCNAMEレコードをプロキシしないでください。 Cloudflareのオレンジ色のクラウドや別のCDNプロキシは、DNSとSSLの検証を妨げます。返されたとおりにdns_recordsを公開し、proxied:falseに設定してください。
  • 書き込み操作には適切なアクセス権が必要です。 get_domain_branding以外のすべてのツールはデータを変更します。必要な書き込みスコープを使用し、ローカルMCPの管理者が書き込みを保護している場合は書き込みを有効にしてください。

関連記事

ワークフローの続きとなる関連ガイドに移動します。

TrekMail の運用と保護に必要な技術を使用します。確認すると、Cookie ポリシーに記載された限定的な分析と広告測定も許可されます。

TrekMail にサインイン

ダッシュボード、メールボックス、DNS にアクセスできます。

または

12 文字 パスワードが一致

または

再設定メールを送信しました

このメールアドレスのアカウントが存在する場合、パスワード再設定の手順をお送りしました。

続行すると、TrekMail の 利用規約 および プライバシーポリシーに同意したものとみなされます.