Gestire le migrazioni email tramite API

Gestisci le migrazioni email tramite l’API TrekMail: testa le connessioni, avvia importazioni, monitora, annulla, riprova ed elimina i processi.

Dettagli dell'articolo

Tipo, difficoltà, piani e data dell'ultimo aggiornamento.

Tipo
Riferimento
Difficoltà
Intermedio
Piani
Starter · Pro · Agency
Ultimo aggiornamento
9 set 2026

L’API Migration consente di importare email da qualsiasi provider IMAP in una casella TrekMail tramite un’integrazione o un agente. Puoi testare le connessioni, avviare le importazioni, monitorare l’avanzamento per cartella, annullare i processi in esecuzione, riprovare quelli non riusciti e rimuovere i vecchi record.

Prima di iniziare

  • È necessario un piano Starter o superiore. Il piano Nano non include lo strumento di migrazione.
  • Con Pro e Agency è possibile avviare, annullare, riprovare ed eliminare le migrazioni tramite API (migrations:read + migrations:write). Con Starter è possibile leggere le migrazioni tramite API ed eseguirne di nuove dalla dashboard.
  • Può essere eseguita una sola migrazione per account alla volta. Avviane una nuova dopo il completamento di quella corrente oppure annulla prima quella in corso.

Ambiti

Ambito Cosa consente Piani
migrations:read Elencare le migrazioni, visualizzare i dettagli di una migrazione Starter · Pro · Agency
migrations:write Testare le connessioni, avviare, annullare, riprovare, eliminare Pro · Agency

Endpoint

Testare la connessione

POST /api/v1/migrations/test-connection
Scope: migrations:write

Convalida le credenziali IMAP e restituisce un elenco delle cartelle di origine con il numero di messaggi. Usalo prima di avviare una migrazione per verificare che la connessione funzioni e consentire all’utente di scegliere le cartelle da importare.

Corpo della richiesta:

Campo Tipo Obbligatorio Descrizione
source_host string Nome host del server IMAP (ad esempio, imap.gmail.com)
source_port integer Porta IMAP (in genere 993 per SSL)
source_security string ssl, tls o none
source_email string Indirizzo email sul server di origine
source_username string No Nome utente, se diverso dall’indirizzo email
source_password string Password o password per app

Risposta (operazione riuscita):

{
  "success": true,
  "folders": {
    "INBOX": 1234,
    "Sent": 567,
    "Drafts": 12,
    "Work": 89
  }
}

Risposta (errore): 422 con codice di errore connection_failed.

Elencare le migrazioni

GET /api/v1/migrations
Scope: migrations:read

Restituisce un elenco impaginato dei processi di migrazione per il tuo account.

Parametri di query:

Parametro Tipo Descrizione
status string Filtra per stato (pending, validating, planning, processing, completed, failed, cancelled)
mailbox_id integer Filtra per casella di destinazione
per_page integer Risultati per pagina (valore predefinito: 20, massimo: 100)

Ottenere una migrazione

GET /api/v1/migrations/{id}
Scope: migrations:read

Restituisce lo stato dettagliato della migrazione, inclusa una suddivisione dell’avanzamento per cartella.

Risposta:

{
  "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 indica la frequenza con cui verificare gli aggiornamenti: 5 secondi durante pending/validating/planning, 10 secondi durante processing, null per gli stati terminali.

source_email è mascherato per motivi di sicurezza (ad esempio, j***e@gmail.com).

Avviare una migrazione

POST /api/v1/migrations
Scope: migrations:write

Avvia una nuova migrazione email. Può essere eseguita una sola migrazione per account alla volta.

Corpo della richiesta:

Campo Tipo Obbligatorio Descrizione
mailbox_id integer ID della casella TrekMail di destinazione
provider string gmail, outlook, yahoo, icloud o generic_imap
source_host string Nome host del server IMAP
source_port integer Porta IMAP
source_security string ssl, tls o none
source_email string Indirizzo email di origine
source_username string No Nome utente, se diverso dall’indirizzo email
source_password string Password di origine o password per app
selected_folders string[] No Cartelle specifiche da importare (valore predefinito: tutte)
import_since date No Importa soltanto le email successive a questa data
skip_duplicates boolean No Ignora i messaggi duplicati (valore predefinito: true)

Risposta: 201 con la risorsa del processo di migrazione.

Risposte di errore:

Stato Codice Significato
409 conflict Su questo account è già in esecuzione una migrazione attiva
503 migration_capacity_reached È stato raggiunto il limite di migrazioni a livello di server (è possibile riprovare)
422 validation_error Parametri non validi o casella non trovata

Annullare una migrazione

POST /api/v1/migrations/{id}:cancel
Scope: migrations:write

Annulla una migrazione in esecuzione. La migrazione deve trovarsi in uno stato attivo (pending, validating, planning o processing).

Riprovare una migrazione

POST /api/v1/migrations/{id}:retry
Scope: migrations:write

Riprova una migrazione failed o cancelled. Reimposta l’avanzamento su 0 e rientra nella pipeline di convalida.

Restituisce 409 se sull’account è già in esecuzione un’altra migrazione.

Migrazioni parziali

TrekMail può tentare di proseguire una migrazione completata in parte quando è sicuro farlo. Controlla lo stato della migrazione prima di intervenire. Se non avanza più, verifica le credenziali e i limiti dell’account di origine, quindi usa l’endpoint per riprovare o l’azione Continua della dashboard. Non presumere che un’importazione parziale venga completata senza verificarne lo stato finale.

Eliminare una migrazione

DELETE /api/v1/migrations/{id}
Scope: migrations:write

Elimina il record di una migrazione. La migrazione non deve essere in esecuzione (annullala prima).

In caso di esito positivo, restituisce 204 No Content.

Limiti di frequenza

Le operazioni di scrittura delle migrazioni hanno un limite di frequenza dedicato di 10 richieste al minuto per token, distinto dal limite di frequenza standard dell’API.

Inoltre, il server applica un limite di concorrenza globale (valore predefinito: 20 migrazioni simultanee). Quando viene raggiunto il limite, le nuove richieste di migrazione restituiscono 503 con migration_capacity_reached e retryable: true. Attendi qualche minuto e riprova.

Eventi di audit

Tutte le azioni dell’API per le migrazioni vengono registrate nel log di audit:

  • migration_started: è stata avviata una nuova migrazione
  • migration_cancelled: è stata annullata una migrazione in esecuzione
  • migration_retried: è stata riprovata una migrazione non riuscita o annullata
  • migration_deleted: è stato eliminato il record di una migrazione

Strumenti MCP

Le stesse funzionalità di migrazione sono disponibili tramite il server MCP, incluse le azioni di test, elenco, avvio, annullamento, nuovo tentativo, ripresa, aggiornamento della password ed eliminazione per migrazioni singole e collettive. Un amministratore MCP con hosting locale può richiedere l’approvazione esplicita per le operazioni di scrittura delle migrazioni. Per informazioni dettagliate, consulta Collegare gli agenti IA (MCP).

API per migrazioni collettive

L’API per migrazioni collettive consente di migrare più account contemporaneamente usando un payload di dati in stile CSV. Consulta Migrazione collettiva delle email per la guida utente e Formato CSV per migrazioni collettive per il formato dei dati.

Endpoint

Metodo Endpoint Ambito Descrizione
POST /api/v1/migrations/bulk/preview migrations:write Visualizza l’anteprima e convalida i dati CSV
POST /api/v1/migrations/bulk migrations:write Avvia un gruppo di migrazioni collettive
GET /api/v1/migrations/bulk migrations:read Elenca i gruppi di migrazioni collettive
GET /api/v1/migrations/bulk/{id} migrations:read Ottiene i dettagli del gruppo con lo stato di ogni processo
POST /api/v1/migrations/bulk/{id}:cancel migrations:write Annulla l’intero gruppo
POST /api/v1/migrations/bulk/{id}:retry migrations:write Riprova i processi non riusciti nel gruppo
POST /api/v1/migrations/bulk/{id}:resume migrations:write Riprende il gruppo sospeso
DELETE /api/v1/migrations/bulk/{id} migrations:write Elimina il record del gruppo
PATCH /api/v1/migrations/bulk/{id}/jobs/{job}/password migrations:write Aggiorna la password di origine per un processo non riuscito

Richiesta di anteprima

POST /api/v1/migrations/bulk/preview
Scope: migrations:write
Campo Tipo Obbligatorio Descrizione
data string Dati CSV (una riga per linea)
provider string No gmail, outlook, yahoo, icloud, generic_imap
source_host string No Host IMAP (se il provider è generic_imap)
source_port integer No Porta IMAP (valore predefinito: 993)
source_security string No ssl, tls, none
per_row_server boolean No Ogni riga contiene le proprie impostazioni del server (formato a 6 colonne)

La risposta include righe suddivise per categoria (valid, invalid_source_email, invalid_destination, ecc.), limiti del piano, stima del tempo e informazioni sullo spazio di archiviazione.

Richiesta di avvio del gruppo

POST /api/v1/migrations/bulk
Scope: migrations:write

Gli stessi campi dell’anteprima, più:

Campo Tipo Obbligatorio Descrizione
name string No Nome del gruppo (generato automaticamente se vuoto)
folder_strategy string No all, standard, inbox_only (valore predefinito: all)
import_since string No Filtro per data (YYYY-MM-DD)
skip_duplicates boolean No Ignora i messaggi duplicati (valore predefinito: true)
idempotency_key string No Chiave di idempotenza fornita dal client

Limiti di concorrenza

Piano Numero massimo di righe per gruppo Processi simultanei per account
Starter 100 2
Pro 300 5
Agency 1,000 10

Il limite globale del server (20 migrazioni simultanee) è condiviso tra le migrazioni singole e quelle collettive.

Strumenti MCP

Gli strumenti MCP per le migrazioni collettive sono preview_bulk_migration, start_bulk_migration, list_bulk_migrations, get_bulk_migration, cancel_bulk_migration, retry_bulk_migration, resume_bulk_migration, delete_bulk_migration e update_bulk_migration_job_password. Un amministratore MCP con hosting locale può richiedere l’approvazione esplicita per le azioni di scrittura.

Soluzioni rapide

  • 403 "insufficient_scope": il token richiede migrations:read o migrations:write. Crea un nuovo token con gli ambiti corretti.
  • 403 "token_scope_blocked_by_plan": gli ambiti di migrazione richiedono un piano a pagamento (Starter o superiore).
  • 409 "active migration running": annulla la migrazione esistente o attendi che venga completata.
  • 503 "migration_capacity_reached": il server ha raggiunto la capacità massima. Riprova tra qualche minuto.
  • 422 durante test-connection: controlla le credenziali IMAP, il nome host, la porta e l’impostazione di sicurezza.

Articoli correlati

Vai alle guide vicine che proseguono il flusso di lavoro.

Usiamo le tecnologie necessarie per gestire e proteggere TrekMail. Confermando consenti anche analisi limitate e misurazione pubblicitaria come descritto nella nostra Informativa sui cookie.

Accedi a TrekMail

Accedi alla tua dashboard, alle caselle di posta e al DNS.

oppure

12 caratteri le password coincidono

oppure

Email di reimpostazione inviata

Se esiste un account per questa email, abbiamo inviato le istruzioni per reimpostare la password.

Continuando, accetti i Termini e l' Informativa sulla privacy di TrekMail.