Gestión de migraciones de correo mediante la API
Gestiona migraciones de correo con la API de TrekMail. Prueba conexiones, inicia importaciones, supervisa el progreso, cancela, reintenta y elimina tareas.
Detalles del artículo
Tipo, dificultad, planes e información de última actualización.
▼
Detalles del artículo
Tipo, dificultad, planes e información de última actualización.
- Tipo
- Referencia
- Dificultad
- Intermedio
- Planes
- Starter · Pro · Agency
- Última actualización
- 9 de sep. de 2026
La API de migración permite importar correo desde cualquier proveedor IMAP a un buzón de TrekMail mediante una integración o un agente. Puedes probar conexiones, iniciar importaciones, supervisar el progreso por carpeta, cancelar tareas en ejecución, reintentar las que fallen y eliminar registros antiguos.
Antes de empezar
- Necesitas un plan Starter o superior. El plan Nano no incluye la herramienta de migración.
- Los planes Pro y Agency permiten iniciar, cancelar, reintentar y eliminar migraciones mediante la API (
migrations:read+migrations:write). Starter permite consultar las migraciones mediante la API y ejecutar otras nuevas desde el panel. - Se puede ejecutar una migración por cuenta a la vez. Inicia otra cuando finalice la actual o cancela primero la que está en curso.
Permisos
| Permiso | Función | Planes |
|---|---|---|
migrations:read |
Enumerar migraciones y consultar sus detalles | Starter · Pro · Agency |
migrations:write |
Probar conexiones, iniciar, cancelar, reintentar y eliminar | Pro · Agency |
Endpoints
Probar la conexión
POST /api/v1/migrations/test-connection
Scope: migrations:write
Valida las credenciales IMAP y devuelve una lista de las carpetas de origen con su número de mensajes. Utiliza esta operación antes de iniciar una migración para comprobar que la conexión funciona y permitir que el usuario elija qué carpetas importar.
Cuerpo de la solicitud:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
source_host |
cadena | Sí | Nombre de host del servidor IMAP (por ejemplo, imap.gmail.com) |
source_port |
entero | Sí | Puerto IMAP (normalmente 993 para SSL) |
source_security |
cadena | Sí | ssl, tls o none |
source_email |
cadena | Sí | Dirección de correo en el servidor de origen |
source_username |
cadena | No | Nombre de usuario si no coincide con el correo |
source_password |
cadena | Sí | Contraseña o contraseña de aplicación |
Respuesta (correcta):
{
"success": true,
"folders": {
"INBOX": 1234,
"Sent": 567,
"Drafts": 12,
"Work": 89
}
}
Respuesta (error): 422 con el código de error connection_failed.
Enumerar migraciones
GET /api/v1/migrations
Scope: migrations:read
Devuelve una lista paginada de las tareas de migración de tu cuenta.
Parámetros de consulta:
| Parámetro | Tipo | Descripción |
|---|---|---|
status |
cadena | Filtra por estado (pending, validating, planning, processing, completed, failed, cancelled) |
mailbox_id |
entero | Filtra por buzón de destino |
per_page |
entero | Resultados por página (valor predeterminado: 20, máximo: 100) |
Consultar una migración
GET /api/v1/migrations/{id}
Scope: migrations:read
Devuelve el estado detallado de la migración, incluido un desglose del progreso por carpeta.
Respuesta:
{
"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 con qué frecuencia debes consultar las novedades: 5 segundos durante pending/validating/planning, 10 segundos durante processing y null para los estados finales.
source_email aparece oculto por seguridad (por ejemplo, j***e@gmail.com).
Iniciar una migración
POST /api/v1/migrations
Scope: migrations:write
Inicia una nueva migración de correo. Solo se puede ejecutar una migración por cuenta a la vez.
Cuerpo de la solicitud:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
mailbox_id |
entero | Sí | ID del buzón de TrekMail de destino |
provider |
cadena | Sí | gmail, outlook, yahoo, icloud o generic_imap |
source_host |
cadena | Sí | Nombre de host del servidor IMAP |
source_port |
entero | Sí | Puerto IMAP |
source_security |
cadena | Sí | ssl, tls o none |
source_email |
cadena | Sí | Dirección de correo de origen |
source_username |
cadena | No | Nombre de usuario si no coincide con el correo |
source_password |
cadena | Sí | Contraseña de origen o contraseña de aplicación |
selected_folders |
cadena[] | No | Carpetas concretas que se importarán (valor predeterminado: todas) |
import_since |
fecha | No | Importa únicamente los correos posteriores a esta fecha |
skip_duplicates |
booleano | No | Omite los mensajes duplicados (valor predeterminado: true) |
Respuesta: 201 con el recurso de la tarea de migración.
Respuestas de error:
| Estado | Código | Significado |
|---|---|---|
409 |
conflict | Ya se está ejecutando una migración activa en esta cuenta |
503 |
migration_capacity_reached |
Se alcanzó el límite de migraciones del servidor (se puede reintentar) |
422 |
validation_error | Parámetros no válidos o no se encontró el buzón |
Cancelar una migración
POST /api/v1/migrations/{id}:cancel
Scope: migrations:write
Cancela una migración en ejecución. La migración debe encontrarse en un estado activo (pending, validating, planning o processing).
Reintentar una migración
POST /api/v1/migrations/{id}:retry
Scope: migrations:write
Reintenta una migración failed o cancelled. Restablece el progreso a 0 y vuelve a entrar en el proceso de validación.
Devuelve 409 si ya hay otra migración en ejecución en la cuenta.
Migraciones parciales
TrekMail puede intentar continuar una migración completada parcialmente cuando resulte seguro. Consulta el estado de la migración antes de realizar ninguna acción. Si ya no avanza, revisa las credenciales y los límites de la cuenta de origen y utiliza después el endpoint de reintento o la acción Continuar del panel. No des por sentado que una importación parcial terminará sin consultar su estado final.
Eliminar una migración
DELETE /api/v1/migrations/{id}
Scope: migrations:write
Elimina el registro de una migración. La migración no debe estar en ejecución (cancélala primero).
Devuelve 204 No Content cuando se completa correctamente.
Límites de frecuencia
Las operaciones de escritura de migraciones tienen un límite específico de 10 solicitudes por minuto y por token, independiente del límite de frecuencia estándar de la API.
Además, el servidor aplica un límite global de concurrencia (valor predeterminado: 20 migraciones simultáneas). Al alcanzar el límite, las nuevas solicitudes de migración devuelven 503 con migration_capacity_reached y retryable: true. Espera unos minutos y vuelve a intentarlo.
Eventos de auditoría
Todas las acciones de la API de migración se registran en el historial de auditoría:
- migration_started: se inició una nueva migración
- migration_cancelled: se canceló una migración en ejecución
- migration_retried: se reintentó una migración fallida o cancelada
- migration_deleted: se eliminó el registro de una migración
Herramientas MCP
Las mismas funciones de migración están disponibles mediante el servidor MCP, incluidas las acciones para probar, enumerar, iniciar, cancelar, reintentar, reanudar, actualizar contraseñas y eliminar migraciones individuales y masivas. Un administrador de un MCP alojado localmente puede exigir aprobación explícita para las operaciones de escritura de migraciones. Consulta Conectar agentes de IA (MCP) para obtener más información.
API de migración masiva
La API de migración masiva permite migrar muchas cuentas a la vez mediante una carga de datos con formato CSV. Consulta Migración masiva de correo para obtener la guía del usuario y Formato CSV para migración masiva para conocer el formato de los datos.
Endpoints
| Método | Endpoint | Permiso | Descripción |
|---|---|---|---|
| POST | /api/v1/migrations/bulk/preview |
migrations:write |
Previsualiza y valida los datos CSV |
| POST | /api/v1/migrations/bulk |
migrations:write |
Inicia un lote de migración masiva |
| GET | /api/v1/migrations/bulk |
migrations:read |
Enumera los lotes de migración masiva |
| GET | /api/v1/migrations/bulk/{id} |
migrations:read |
Obtiene detalles del lote con el estado de cada tarea |
| POST | /api/v1/migrations/bulk/{id}:cancel |
migrations:write |
Cancela el lote completo |
| POST | /api/v1/migrations/bulk/{id}:retry |
migrations:write |
Reintenta las tareas fallidas del lote |
| POST | /api/v1/migrations/bulk/{id}:resume |
migrations:write |
Reanuda un lote en pausa |
| DELETE | /api/v1/migrations/bulk/{id} |
migrations:write |
Elimina el registro del lote |
| PATCH | /api/v1/migrations/bulk/{id}/jobs/{job}/password |
migrations:write |
Actualiza la contraseña de origen de una tarea fallida |
Solicitud de previsualización
POST /api/v1/migrations/bulk/preview
Scope: migrations:write
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
data |
cadena | Sí | Datos CSV (una fila por línea) |
provider |
cadena | No | gmail, outlook, yahoo, icloud, generic_imap |
source_host |
cadena | No | Host IMAP (si el proveedor es generic_imap) |
source_port |
entero | No | Puerto IMAP (valor predeterminado: 993) |
source_security |
cadena | No | ssl, tls, none |
per_row_server |
booleano | No | Cada fila tiene su propia configuración de servidor (formato de 6 columnas) |
La respuesta incluye filas clasificadas (valid, invalid_source_email, invalid_destination, etc.), límites del plan, una estimación de tiempo e información de almacenamiento.
Solicitud para iniciar un lote
POST /api/v1/migrations/bulk
Scope: migrations:write
Incluye los mismos campos que la previsualización, además de los siguientes:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
cadena | No | Nombre del lote (se genera automáticamente si está vacío) |
folder_strategy |
cadena | No | all, standard, inbox_only (valor predeterminado: all) |
import_since |
cadena | No | Filtro de fecha (YYYY-MM-DD) |
skip_duplicates |
booleano | No | Omite los mensajes duplicados (valor predeterminado: true) |
idempotency_key |
cadena | No | Clave de idempotencia proporcionada por el cliente |
Límites de concurrencia
| Plan | Máximo de filas por lote | Simultáneas por cuenta |
|---|---|---|
| Starter | 100 | 2 |
| Pro | 300 | 5 |
| Agency | 1,000 | 10 |
El límite global del servidor (20 migraciones simultáneas) se comparte entre las migraciones individuales y masivas.
Herramientas MCP
Las herramientas MCP de migración masiva son preview_bulk_migration, start_bulk_migration, list_bulk_migrations, get_bulk_migration, cancel_bulk_migration, retry_bulk_migration, resume_bulk_migration, delete_bulk_migration y update_bulk_migration_job_password. Un administrador de un MCP alojado localmente puede exigir aprobación explícita para las operaciones de escritura.
Soluciones rápidas
- 403 "insufficient_scope": tu token necesita
migrations:readomigrations:write. Crea un token nuevo con los permisos correctos. - 403 "token_scope_blocked_by_plan": los permisos de migración requieren un plan de pago (Starter o superior).
- 409 "active migration running": cancela la migración existente o espera a que finalice.
- 503 "migration_capacity_reached": el servidor ha alcanzado su capacidad. Vuelve a intentarlo dentro de unos minutos.
- 422 al probar la conexión: comprueba las credenciales IMAP, el nombre de host, el puerto y la configuración de seguridad.
Artículos relacionados
Ve a guías cercanas que continúan el flujo de trabajo.