Espacios de Trabajo
Cree y administre múltiples espacios de trabajo para diferentes proyectos o clientes
Los espacios de trabajo (tenants) son entornos aislados para sus operaciones de correo electrónico. Cada espacio de trabajo tiene sus propios dominios, suscriptores, API keys y facturación. Una sola cuenta de usuario puede pertenecer a múltiples espacios de trabajo.
Esta página cubre la API de tenants en /v1/account/tenants: el "espacio de trabajo" de esta página es un tenant (el límite de aislamiento de facturación/dominio). /v1/account/workspaces es una función diferente y separada: sub-espacios de trabajo usados para organizar recursos dentro de un tenant, y no está documentada en esta página.
Los subespacios organizan, los tenants separan
Un subespacio de trabajo (/v1/account/workspaces) solo organiza recursos dentro de un único tenant, con los roles existentes. No es un límite de facturación, de entregabilidad ni de seguridad. Lo siguiente pertenece siempre al tenant:
- Facturación: plan, suscripción y facturas
- La lista de supresión
- Los límites y cuotas de envío
- Las IP de envío y la reputación del remitente
- La seguridad de las API keys
Si gestiona un negocio independiente o atiende a un cliente distinto, cree para él un tenant aparte, no un subespacio. De lo contrario, ese cliente comparte la lista de supresión, los límites de envío y la reputación con todos los demás del tenant.
Niveles de Verificación
Cada espacio de trabajo tiene un nivel de verificación que determina las capacidades de envío:
| Nivel | Valor | Descripción |
|---|---|---|
Restricted | -1 | Envío deshabilitado (violación detectada) |
Sandbox | 0 | Predeterminado para nuevos espacios de trabajo: solo puede enviar a la lista de permitidos del sandbox |
BasicVerified | 1 | Correo, teléfono y 2FA todos verificados, límites moderados |
SenderVerified | 2 | Autenticación de dominio o un remitente único verificado, límites estándar |
BusinessVerified | 3 | Verificación empresarial completada: límites completos |
Los nuevos espacios de trabajo comienzan en el nivel Sandbox, donde el envío se limita a una lista de permitidos por espacio de trabajo. BasicVerified requiere correo, teléfono y autenticación de dos factores juntos, no solo el correo. SenderVerified requiere autenticación de dominio (SPF+DKIM+DMARC) o un remitente único verificado: cualquiera de los dos, no específicamente la verificación de dominio.
Listar Espacios de Trabajo
Obtenga todos los espacios de trabajo a los que pertenece el usuario actual:
GET https://api.mail.land/v1/account/tenantscurl https://api.mail.land/v1/account/tenants \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."[
{
"publicId": "k3m9x2p7qw4rtz",
"name": "My Company",
"role": "owner",
"isActive": true,
"status": "active"
},
{
"publicId": "t2p9k4m7x1n6w3",
"name": "Client Project",
"role": "member",
"isActive": true,
"status": "active"
}
]La respuesta es un arreglo simple, no { "tenants": [...] }. No hay roleName, verificationLevel, verificationLevelName, isCurrent ni createdAt aquí, isActive y status reemplazan a isCurrent, y el nivel de verificación se obtiene por separado (vea Facturación). id es el identificador numérico interno del tenant; publicId es el valor a usar en llamadas de API e interfaces (el campo numérico id se muestra aquí solo porque la API actual lo devuelve: no construya lógica de cliente en torno a él, ya que está siendo eliminado de las respuestas orientadas al cliente).
Crear un Espacio de Trabajo
POST https://api.mail.land/v1/account/tenants{
"name": "New Project",
"description": "Optional workspace description"
}| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | Sí | Nombre del espacio de trabajo, de 1 a 255 caracteres |
description | string | No | Descripción opcional, hasta 500 caracteres |
curl -X POST https://api.mail.land/v1/account/tenants \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{ "name": "New Project" }'Respuesta
Devuelve 201 Created con la misma forma que la respuesta de Cambiar espacio de trabajo: nuevos tokens vinculados al nuevo espacio de trabajo, además del registro del espacio de trabajo anidado bajo tenant:
{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "rt_new_token...",
"expiresAt": "2026-02-17T13:00:00Z",
"tenant": {
"publicId": "u6w1m8k3p5x9n2",
"name": "New Project",
"role": "owner",
"isActive": true,
"status": "active"
}
}Al usuario creador se le asigna automáticamente el rol Owner. No hay verificationLevel/verificationLevelName en esta respuesta: vea Facturación para el estado de verificación/política.
Cambiar de Espacio de Trabajo
Cambie el espacio de trabajo activo para las siguientes llamadas a la API:
POST https://api.mail.land/v1/account/tenants/switch{
"tenantId": "t2p9k4m7x1n6w3",
"refreshToken": "rt_a1b2c3d4e5..."
}refreshToken es opcional: si se omite, se usa en su lugar el valor de la cookie de refresh token. tenantId es el publicId del espacio de trabajo de Listar espacios de trabajo.
curl -X POST https://api.mail.land/v1/account/tenants/switch \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{ "tenantId": "t2p9k4m7x1n6w3" }'{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "rt_new_token...",
"expiresAt": "2026-09-25T15:00:00Z",
"tenant": {
"publicId": "t2p9k4m7x1n6w3",
"name": "Client Project",
"role": "member",
"isActive": true,
"status": "active"
}
}Cambiar de espacio de trabajo emite nuevos tokens con alcance al espacio de trabajo de destino. Los campos de tenant tienen la misma forma que la respuesta de Listar espacios de trabajo, anidados bajo tenant en lugar de planos como tenantId/tenantName/role.
Actualizar Espacio de Trabajo
Actualice la configuración del espacio de trabajo actual:
PUT https://api.mail.land/v1/account/tenants/current{
"name": "Updated Project Name",
"description": "Optional workspace description"
}name tiene de 2 a 100 caracteres; description es opcional, hasta 500 caracteres.
curl -X PUT https://api.mail.land/v1/account/tenants/current \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{ "name": "Updated Project Name" }'Solo los Owners y Admins pueden actualizar el espacio de trabajo. Los Members, Viewers y las API keys reciben un 403 INSUFFICIENT_PERMISSIONS tipado (con el permiso faltante, tenant.edit, en details.permission).
Respuesta
Devuelve 200 OK:
{
"publicId": "t2p9k4m7x1n6w3",
"name": "Updated Project Name",
"description": "Optional workspace description",
"status": "Active",
"createdAt": "2026-01-15T08:00:00Z"
}Contexto del Espacio de Trabajo
Todas las solicitudes a la API tienen alcance al espacio de trabajo activo. El espacio de trabajo se determina por el claim de espacio de trabajo activo del token. Los recursos (dominios, suscriptores, campañas, API keys) están aislados entre espacios de trabajo.
Al usar API keys, cada clave tiene alcance a un solo espacio de trabajo. No es necesario cambiar de espacio de trabajo: la clave determina el contexto automáticamente.
Respuestas de Error
| Estado | Código | Descripción |
|---|---|---|
400 | VALIDATION_FAILED | Nombre de espacio de trabajo inválido |
403 | FORBIDDEN | No es miembro del espacio de trabajo de destino |
403 | INSUFFICIENT_PERMISSIONS | Solo en la actualización: quien llama es Member, Viewer o una API key, ninguno de los cuales tiene tenant.edit |
404 | TENANT_NOT_FOUND | Espacio de trabajo no encontrado (solo en la actualización: cambiar a un espacio de trabajo desconocido o ajeno siempre devuelve 403 FORBIDDEN, nunca 404) |
Próximos Pasos
- Administración de Equipo: invite miembros a su espacio de trabajo
- Facturación: administre la suscripción del espacio de trabajo
- Autenticación: administración de tokens y sesiones
- API Keys: cree API keys con alcance de espacio de trabajo