APIによるメール移行の管理ガイド
TrekMail APIでメール移行を管理します。接続テスト、インポート開始、進行状況の監視、キャンセル、再試行、移行ジョブの削除方法を解説します。
記事の詳細
種類・難易度・対象プラン・最終更新の情報。
▼
記事の詳細
種類・難易度・対象プラン・最終更新の情報。
- 種類
- リファレンス
- 難易度
- 中級
- プラン
- Starter · Pro · Agency
- 最終更新
- 2026年9月9日
Migration APIを使うと、統合やエージェントを通じて任意のIMAPプロバイダーからTrekMailメールボックスへメールをインポートできます。接続のテスト、インポートの開始、フォルダーごとの進行状況の監視、実行中ジョブのキャンセル、失敗したジョブの再試行、古いレコードの削除が可能です。
始める前に
- Starter以上のプランが必要です。Nanoプランには移行ツールが含まれません。
- ProとAgencyでは、APIを介して移行の開始、キャンセル、再試行、削除ができます(
migrations:read+migrations:write)。StarterではAPIから移行を読み取り、ダッシュボードから新しい移行を実行できます。 - 一つのアカウントで同時に実行できる移行は一件だけです。現在の移行が完了してから新しい移行を開始するか、先に現在の移行をキャンセルしてください。
スコープ
| スコープ | 機能 | プラン |
|---|---|---|
migrations:read |
移行の一覧表示、移行の詳細表示 | Starter · Pro · Agency |
migrations:write |
接続のテスト、開始、キャンセル、再試行、削除 | Pro · Agency |
エンドポイント
接続をテストする
POST /api/v1/migrations/test-connection
Scope: migrations:write
IMAP認証情報を検証し、メッセージ数を含む移行元フォルダーの一覧を返します。移行を開始する前にこれを使用して接続を確認し、インポートするフォルダーをユーザーが選べるようにしてください。
リクエスト本文:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
source_host |
string | はい | IMAPサーバーのホスト名(例:imap.gmail.com) |
source_port |
integer | はい | IMAPポート(SSLでは通常993) |
source_security |
string | はい | ssl、tls、noneのいずれか |
source_email |
string | はい | 移行元サーバー上のメールアドレス |
source_username |
string | いいえ | メールアドレスと異なる場合のユーザー名 |
source_password |
string | はい | パスワードまたはアプリパスワード |
レスポンス(成功):
{
"success": true,
"folders": {
"INBOX": 1234,
"Sent": 567,
"Drafts": 12,
"Work": 89
}
}
レスポンス(失敗): 422。エラーコードはconnection_failedです。
移行の一覧を取得する
GET /api/v1/migrations
Scope: migrations:read
アカウントの移行ジョブをページ分割した一覧で返します。
クエリパラメーター:
| パラメーター | 型 | 説明 |
|---|---|---|
status |
string | 状態で絞り込み(pending、validating、planning、processing、completed、failed、cancelled) |
mailbox_id |
integer | 移行先メールボックスで絞り込み |
per_page |
integer | ページあたりの結果数(デフォルト:20、最大:100) |
移行を取得する
GET /api/v1/migrations/{id}
Scope: migrations:read
フォルダーごとの進行状況を含む、移行の詳細な状態を返します。
レスポンス:
{
"data": {
"id": 5,
"mailbox_id": 10,
"mailbox_email": "support@acme.com",
"provider": "gmail",
"source_host": "imap.gmail.com",
"source_email": "j***e@gmail.com",
"status": "processing",
"progress": 45,
"total_messages": 1234,
"imported_messages": 556,
"failed_messages": 2,
"skipped_duplicates": 12,
"selected_folders": ["INBOX", "Sent"],
"import_since": "2025-01-01",
"skip_duplicates": true,
"folders": [
{ "name": "INBOX", "status": "processing", "expected": 1000, "imported": 450, "failed": 2, "skipped": 10 },
{ "name": "Sent", "status": "pending", "expected": 234, "imported": 0, "failed": 0, "skipped": 0 }
],
"error_message": null,
"poll_hint_seconds": 10,
"started_at": "2026-03-13T10:00:00+00:00",
"finished_at": null,
"created_at": "2026-03-13T09:59:50+00:00"
}
}
**poll_hint_seconds**は更新をポーリングする頻度を示します。pending/validating/planningでは5秒、processingでは10秒、終了状態ではnullです。
**source_email**はセキュリティのためマスクされます(例:j***e@gmail.com)。
移行を開始する
POST /api/v1/migrations
Scope: migrations:write
新しいメール移行を開始します。一つのアカウントで同時に実行できる移行は一件だけです。
リクエスト本文:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
mailbox_id |
integer | はい | 移行先TrekMailメールボックスのID |
provider |
string | はい | gmail、outlook、yahoo、icloud、generic_imapのいずれか |
source_host |
string | はい | IMAPサーバーのホスト名 |
source_port |
integer | はい | IMAPポート |
source_security |
string | はい | ssl、tls、noneのいずれか |
source_email |
string | はい | 移行元メールアドレス |
source_username |
string | いいえ | メールアドレスと異なる場合のユーザー名 |
source_password |
string | はい | 移行元パスワードまたはアプリパスワード |
selected_folders |
string[] | いいえ | インポートする特定のフォルダー(デフォルト:すべて) |
import_since |
date | いいえ | この日付より後のメールだけをインポート |
skip_duplicates |
boolean | いいえ | 重複メッセージをスキップ(デフォルト:true) |
レスポンス: 移行ジョブのリソースを含む201。
エラーレスポンス:
| 状態 | コード | 意味 |
|---|---|---|
409 |
conflict | このアカウントで有効な移行がすでに実行中 |
503 |
migration_capacity_reached |
サーバー全体の移行上限に到達(再試行可能) |
422 |
validation_error | パラメーターが無効、またはメールボックスが見つからない |
移行をキャンセルする
POST /api/v1/migrations/{id}:cancel
Scope: migrations:write
実行中の移行をキャンセルします。移行は有効な状態(pending、validating、planning、processingのいずれか)である必要があります。
移行を再試行する
POST /api/v1/migrations/{id}:retry
Scope: migrations:write
failedまたはcancelledの移行を再試行します。進行状況を0にリセットし、検証パイプラインに再度入ります。
アカウントで別の移行がすでに実行中の場合は409を返します。
部分的な移行
安全に実行できる場合、TrekMailは部分的に完了した移行の続行を試みることがあります。操作する前に移行状態を確認してください。進行が止まっている場合は移行元アカウントの認証情報と上限を確認し、再試行エンドポイントまたはダッシュボードの続行操作を使用します。最終状態を確認せずに、部分的なインポートが完了すると想定しないでください。
移行を削除する
DELETE /api/v1/migrations/{id}
Scope: migrations:write
移行レコードを削除します。移行が実行中であってはなりません(先にキャンセルしてください)。
成功すると204 No Contentを返します。
レート制限
移行の書き込み操作には、標準のAPIレート制限とは別に、トークンごとに一分あたり10リクエストという専用レート制限があります。
さらに、サーバーはグローバル同時実行数制限(デフォルト:同時移行20件)を適用します。上限に達すると、新しい移行リクエストは503を返し、migration_capacity_reachedとretryable: trueを含みます。数分待ってから再試行してください。
監査イベント
移行APIのすべての操作は監査ログに記録されます。
- migration_started:新しい移行が開始された
- migration_cancelled:実行中の移行がキャンセルされた
- migration_retried:失敗またはキャンセルされた移行が再試行された
- migration_deleted:移行レコードが削除された
MCPツール
同じ移行機能をMCPサーバーから利用できます。単一移行と一括移行に対するテスト、一覧表示、開始、キャンセル、再試行、再開、パスワード更新、削除の操作が含まれます。ローカルでホストするMCPの管理者は、移行の書き込みに明示的な承認を要求できます。詳しくはAIエージェントの接続(MCP)を参照してください。
一括移行API
一括移行APIを使うと、CSV形式のデータペイロードで多数のアカウントを一度に移行できます。ユーザーガイドについてはメールの一括移行、データ形式については一括移行CSV形式を参照してください。
エンドポイント
| メソッド | エンドポイント | スコープ | 説明 |
|---|---|---|---|
| POST | /api/v1/migrations/bulk/preview |
migrations:write |
CSVデータのプレビューと検証 |
| POST | /api/v1/migrations/bulk |
migrations:write |
一括移行バッチを開始 |
| GET | /api/v1/migrations/bulk |
migrations:read |
一括移行バッチの一覧を取得 |
| GET | /api/v1/migrations/bulk/{id} |
migrations:read |
ジョブごとの状態を含むバッチ詳細を取得 |
| POST | /api/v1/migrations/bulk/{id}:cancel |
migrations:write |
バッチ全体をキャンセル |
| POST | /api/v1/migrations/bulk/{id}:retry |
migrations:write |
バッチ内の失敗したジョブを再試行 |
| POST | /api/v1/migrations/bulk/{id}:resume |
migrations:write |
一時停止したバッチを再開 |
| DELETE | /api/v1/migrations/bulk/{id} |
migrations:write |
バッチレコードを削除 |
| PATCH | /api/v1/migrations/bulk/{id}/jobs/{job}/password |
migrations:write |
失敗したジョブの移行元パスワードを更新 |
プレビューリクエスト
POST /api/v1/migrations/bulk/preview
Scope: migrations:write
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
data |
string | はい | CSVデータ(各行に一レコード) |
provider |
string | いいえ | gmail、outlook、yahoo、icloud、generic_imap |
source_host |
string | いいえ | IMAPホスト(プロバイダーがgeneric_imapの場合) |
source_port |
integer | いいえ | IMAPポート(デフォルト993) |
source_security |
string | いいえ | ssl、tls、none |
per_row_server |
boolean | いいえ | 各行に独自のサーバー設定を含む(6列形式) |
レスポンスには、分類された行(valid、invalid_source_email、invalid_destinationなど)、プラン上限、推定時間、ストレージ情報が含まれます。
バッチ開始リクエスト
POST /api/v1/migrations/bulk
Scope: migrations:write
プレビューと同じフィールドに、次の項目が加わります。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name |
string | いいえ | バッチ名(空の場合は自動生成) |
folder_strategy |
string | いいえ | all、standard、inbox_only(デフォルト:all) |
import_since |
string | いいえ | 日付フィルター(YYYY-MM-DD) |
skip_duplicates |
boolean | いいえ | 重複メッセージをスキップ(デフォルト:true) |
idempotency_key |
string | いいえ | クライアントが指定する冪等性キー |
同時実行数の上限
| プラン | バッチあたりの最大行数 | アカウントあたりの同時実行数 |
|---|---|---|
| Starter | 100 | 2 |
| Pro | 300 | 5 |
| Agency | 1,000 | 10 |
サーバー全体の上限(同時移行20件)は、単一移行と一括移行で共有されます。
MCPツール
一括移行用MCPツールは、preview_bulk_migration、start_bulk_migration、list_bulk_migrations、get_bulk_migration、cancel_bulk_migration、retry_bulk_migration、resume_bulk_migration、delete_bulk_migration、update_bulk_migration_job_passwordです。ローカルでホストするMCPの管理者は、書き込み操作に明示的な承認を要求できます。
クイック修正
- 403 "insufficient_scope": トークンには
migrations:readまたはmigrations:writeが必要です。正しいスコープを持つ新しいトークンを作成してください。 - 403 "token_scope_blocked_by_plan": 移行スコープには有料プラン(Starter以上)が必要です。
- 409 "active migration running": 既存の移行をキャンセルするか、完了するまで待ってください。
- 503 "migration_capacity_reached": サーバーが上限に達しています。数分後に再試行してください。
- test-connectionで422: IMAP認証情報、ホスト名、ポート、セキュリティ設定を確認してください。
関連記事
ワークフローの続きとなる関連ガイドに移動します。