Comienza aquí
Tu primera solicitud en cuatro pasos
Configurar un buzón en el panel de control.
Copiar tanto la apikey como la apikeybox del buzón.
Enviar primero un correo electrónico sencillo de texto.
Añade archivos adjuntos o imágenes incrustadas solo después de que la solicitud básica funcione.
WEBHOOK V2 PARA ESTA API
Suscríbase solo a los eventos móviles que necesita su flujo de trabajo.
Un destino puede recibirlo todo, o puede separar sistemas de producción, analítica y alertas operativas. Cada evento tiene un nombre preciso para que su aplicación lo gestione de forma predecible.
email.sentCorreo enviado
Se creó una solicitud de envío de correo electrónico por SMSMobileAPI.
email.receivedCorreo recibido
Un buzón conectado recibió un correo electrónico.
Autenticación
Mantén las credenciales en tu servidor
Los endpoints de correo electrónico requieren el apikey de la cuenta y el apikeybox específico del buzón. Almacene ambas credenciales en el servidor y oculte su contenido en los registros de la aplicación.
Gestión del historial
Borrar historial con seguridad: previsualizar, eliminar, seguir el progreso
Estos endpoints borran el historial seleccionado del servidor para tu clave API, no los mensajes en los teléfonos ni servicios externos. No ofrecen eliminación de cuenta. Puede aparecer nueva actividad tras la eliminación.
Lee la guía de request_id y reintentos
De forma predeterminada, los registros vinculados o en procesamiento siguen siendo visibles. Use include_linked=1 solo si acepta que las integraciones o procesos en curso puedan dejar de funcionar.
Cómo funciona request_id
- Previsualiza los contadores con action=preview. No se necesita request_id y no se eliminan registros.
- Generar un request_id único para una nueva eliminación, por ejemplo un UUID. Guárdalo antes de enviar action=delete.
- Para reintentos, tiempos de espera o HTTP 202, reutilice la misma clave API, el endpoint de historial, request_id y el valor include_linked. Nunca genere un nuevo ID automáticamente tras un error.
- Cuando completed=true, la operación está finalizada. Reutilizar su ID devuelve el mismo resultado en lugar de eliminar registros recién llegados. Use un ID nuevo solo para una limpieza deliberadamente nueva.
request_id identifica tu operación de eliminación, no un SMS individual. Formato permitido: 16–128 letras ASCII, dígitos, guiones o guiones bajos. Un UUID generado con crypto.randomUUID() es adecuado.
La eliminación se realiza en lotes. HTTP 202 con continue_required=true significa que debe repetir action=delete tras 3 segundos. No hay cron en segundo plano. action=status solo lee el progreso, incluso si su estado HTTP es 200.
Ejemplos de eliminación y estado
Reemplace el request_id de ejemplo con su propio valor único antes de comenzar. Las siguientes solicitudes de eliminación modifican el historial real de la cuenta; no son previsualizaciones.
curl -X POST "https://api.smsmobileapi.com/delete-history-email/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-email/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-email/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"GET también acepta action=preview o action=delete. Se recomienda POST: los parámetros en la URL pueden quedarse en el historial del navegador y los registros del servidor. Nunca pongas una URL de eliminación en un enlace público, imagen o prefetch.
Para POST, envíe todos los parámetros en el cuerpo del formulario o en un objeto JSON, nunca en la cadena de consulta. Parámetros desconocidos son rechazados; no se soportan filtros por fecha o móvil.
Autenticación para puntos finales de historial
Usa apikey o un token de acceso Authorization: Bearer emitido por SMSMobileAPI OAuth2. No envíes un token de refresco ni una clave API como token Bearer. Los tokens caducados son rechazados.
Cuando se establecen los scopes, history:read permite vista previa/estado y history:delete también permite eliminación. Se aplican restricciones tanto en el token como en el cliente OAuth. Los tokens heredados sin scopes mantienen su acceso actual a la cuenta.
OAuth2 selecciona la clave principal única API. Si existen varias claves principales, proporciona también apikey para seleccionar una perteneciente a la cuenta. Las claves secundarias nunca otorgan acceso al historial de la clave principal.
Lee la respuesta antes de continuar
count_delete es el número acumulado eliminado por esta operación. selected_at_start es la selección inicial; protected_at_start cuenta los registros excluidos. Usa preview.linked_or_processing para contar registros vinculados incluso cuando include_linked=1.
{
"result": {
"error": 0,
"history": "email",
"action": "delete",
"request_id": "6d54ac58-41f1-4fbc-9a39-6e6c86089451",
"status": "processing",
"completed": false,
"count_delete": 100,
"total_before": 250,
"selected_at_start": 200,
"protected_at_start": 50,
"include_linked": 0,
"continue_required": true,
"message": "Repeat GET or POST with the same request_id and include_linked to continue. Status requests do not run deletion."
}
}- 200 con completed=true: finalizado. Una respuesta 200 de vista previa o de estado por sí sola no demuestra la finalización.
- 400 INVALID_REQUEST_ID: verifica el formato. 404 REQUEST_NOT_FOUND: no existe ninguna operación para este ID, clave API e historial.
- 401: credenciales inválidas o caducadas. 403: alcance OAuth insuficiente o cuenta no autorizada.
- 409 HISTORY_BUSY: otra limpieza está en curso; continúa desde el cliente original. 409 INCLUDE_LINKED_CONFLICT: restaura el valor original de include_linked.
- 409 OAUTH_ACCOUNT_AMBIGUOUS: proporciona una clave API perteneciente a esta cuenta.
- 503 o interrupción de red: algunos lotes pueden ya estar completados. Revisa la configuración y vuelve a intentar con el request_id original. No crees una operación de reemplazo automáticamente.
CORREO
Enviar un correo electrónico
https://api.smsmobileapi.com/sendemail/Envía correo electrónico en texto sin formato o HTML desde un buzón configurado.
Utilícelo para correo electrónico transaccional u operativo desde su aplicación.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | La clave API de su cuenta. |
apikeybox |
cadena | Obligatorio | Clave API del buzón configurado. |
sender_name |
cadena | Obligatorio | Nombre para mostrar del remitente. |
sender_email |
correo electrónico | Obligatorio | Dirección de correo electrónico del remitente. |
recipient_email |
correo electrónico | Obligatorio | Dirección del destinatario. |
mail_subject |
cadena | Obligatorio | Asunto del correo electrónico. |
mail_body |
cadena | Obligatorio | Texto plano o cuerpo de HTML. |
allow_self_signed |
sí | no | Obligatorio | Establecer en sí solo cuando el servidor de correo configurado use un certificado interno autofirmado confiable. |
unsubscribe |
1 | Opcional | Añade términos de baja y un enlace. |
email_cc1 |
correo electrónico | Opcional | Primer destinatario CC opcional. |
email_cc2 |
correo electrónico | Opcional | Segundo destinatario opcional en CC. |
email_cc3 |
correo electrónico | Opcional | Destinatario CC opcional tercero. |
attachmentBase64 |
Base64 | Opcional | Contenido del adjunto codificado en Base64. |
attachmentBase64_name_1 |
nombre de archivo | Opcional | Nombre original del archivo adjunto con extensión, por ejemplo factura.pdf. Requerido cuando attachmentBase64 tiene un valor. |
charset |
cadena | Opcional | Conjunto de caracteres; por defecto UTF-8. |
embeddedImage |
URL HTTPS | Opcional | Imagen para incrustar en el correo electrónico. |
embeddedImage_cid |
cadena | Opcional | ID de contenido referenciado desde el cuerpo HTML. |
format |
cadena | Opcional | Formato de respuesta solicitado. |
reply_name |
cadena | Opcional | Nombre para mostrar en la dirección de respuesta. |
reply_email |
correo electrónico | Opcional | Dirección de respuesta. |
Ejemplo de solicitud
curl -X POST "https://api.smsmobileapi.com/sendemail/" \
-d "apikey=YOUR_API_KEY" \
-d "apikeybox=YOUR_MAILBOX_KEY" \
--data-urlencode "sender_name=Example Team" \
-d "sender_email=team@example.com" \
-d "recipient_email=customer@example.net" \
--data-urlencode "mail_subject=Order confirmation" \
--data-urlencode "mail_body=Your order has been confirmed." \
--data-urlencode "attachmentBase64=BASE64_FILE_CONTENT" \
-d "attachmentBase64_name_1=invoice.pdf" \
-d "allow_self_signed=no"
¿Quieres ejecutar esta solicitud?Conecte su clave API en la parte superior de la página para activar el probador interactivo.
Clave de conexión ↑- Prefiere POST ya que los cuerpos de los correos electrónicos pueden ser extensos.
- Si se proporciona attachmentBase64, es obligatorio attachmentBase64_name_1 que debe incluir la extensión del archivo.
- Los adjuntos en Base64 pueden aumentar el tamaño de las solicitudes; aplica límites de tamaño sensatos en tu aplicación.
OBTENER
Recupere correos electrónicos
https://api.smsmobileapi.com/getemail/Recupera mensajes de una carpeta de buzón configurada.
Utilícelo para sincronizar correos entrantes en un servicio de atención o flujo de trabajo de aplicación.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | La clave API de su cuenta. |
apikeybox |
cadena | Obligatorio | Clave API del buzón. |
mbox |
cadena | Obligatorio | Carpeta del buzón, por ejemplo INBOX. |
start |
entero | Obligatorio | Índice inicial; usa 0 para la primera página. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/getemail/?apikey=YOUR_API_KEY&apikeybox=YOUR_MAILBOX_KEY&mbox=INBOX&start=0"
¿Quieres ejecutar esta solicitud?Conecte su clave API en la parte superior de la página para activar el probador interactivo.
Clave de conexión ↑- Las respuestas incluyen asunto, remitente, destinatario, cuerpo, marca temporal y detalles de adjuntos disponibles.
OBTENER
Comprobar contactos dados de baja
https://api.smsmobileapi.com/email/unsubscribed/Comprueba los registros de bajas generados por correos electrónicos enviados a través de la plataforma.
Úselo antes de enviar campañas y sincronizar listas de supresión.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | La clave API de su cuenta. |
apikeybox |
cadena | Obligatorio | Clave API del buzón. |
email |
correo electrónico | Opcional | Filtrar un contacto. Un resultado vacío significa que no se encontró registro de baja. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/email/unsubscribed/?apikey=YOUR_API_KEY&apikeybox=YOUR_MAILBOX_KEY&email=customer@example.net"
¿Quieres ejecutar esta solicitud?Conecte su clave API en la parte superior de la página para activar el probador interactivo.
Clave de conexión ↑- Mantén tu propia base de datos de destinatarios sincronizada con los resultados de bajas.
- Usted sigue siendo responsable de las normas aplicables de anti-spam y privacidad.
POSTE · GET
Historial de emails enviados claro
https://api.smsmobileapi.com/delete-history-email/Borra los registros de envío de correo para esta clave API en todos los buzones. No elimina mensajes en un buzón. No se requiere apikeybox.
Utilice la vista previa primero, revise los conteos y luego solicite explícitamente la eliminación. Esto borra todo el historial seleccionado para la clave API, sin filtros de fecha, teléfono o mensaje.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Opcional | Obligatorio sin OAuth2. Con OAuth2, seleccione opcionalmente una clave API perteneciente a la misma cuenta. |
action |
vista previa | eliminar | estado | Opcional | vista previa muestra recuentos sin eliminar; eliminar inicia o continúa la eliminación; estado lee el progreso sin continuar. El API predetermina eliminar; este probador predetermina vista previa. |
include_linked |
0 | 1 | Opcional | Por defecto 0: conservar registros vinculados o en proceso. Establezca 1 para incluirlos, con riesgo de romper integraciones. Mantenga este valor sin cambios al continuar una eliminación. |
request_id |
cadena | Opcional | Obligatorio para eliminar y estado, opcional para vista previa. Utilice de 16 a 128 letras, dígitos, guiones o guiones bajos. Genere un ID único para cada nueva eliminación y consérvelo para cada reintento. No es un ID de mensaje ni una clave API. |
Ejemplo de solicitud
curl -X POST "https://api.smsmobileapi.com/delete-history-email/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=preview" -d "include_linked=0"
Ejemplos de eliminación y estado
Reemplace el request_id de ejemplo con su propio valor único antes de comenzar. Las siguientes solicitudes de eliminación modifican el historial real de la cuenta; no son previsualizaciones.
curl -X POST "https://api.smsmobileapi.com/delete-history-email/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-email/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-email/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Ejemplo de respuesta
{
"result": {
"error": 0,
"history": "email",
"action": "preview",
"total": 120,
"simple": 100,
"linked_or_processing": 20,
"selected": 100,
"include_linked": 0,
"operation_in_progress": false,
"active_include_linked": null
}
}
¿Quieres ejecutar esta solicitud?Conecte su clave API en la parte superior de la página para activar el probador interactivo.
Clave de conexión ↑- El ejemplo anterior es una vista previa, no una eliminación. Los conteos son ilustrativos; la selección definitiva se fija cuando comienza la eliminación.
- include_linked=1 puede interrumpir GHL, Zapier, automatizaciones, enlaces para darse de baja o seguimiento de entrega. Nunca pasa por alto las verificaciones de propiedad de cuenta o integridad del almacenamiento.
Solución de problemas
Errores y reintentos seguros
Consulta el estado de HTTP y el campo de error JSON antes de reintentar. No vuelvas a intentar validaciones o fallos de autenticación sin corregir primero la petición.
| HTTP | Código | Qué hacer |
|---|---|---|
| 400 | missing_parameter | Un parámetro requerido está vacío o ausente. Comprueba la tabla de parámetros para el endpoint. |
| 403 | invalid_apikey | La clave API es desconocida, ha expirado o no está autorizada para la función solicitada. |
| 429 | too_many_requests | Las solicitudes están llegando demasiado rápido. Espere y luego reintente con retroceso exponencial. |
| 500 | server_error | El servicio no pudo completar la solicitud. Guarda la respuesta y contacta con soporte si persiste. |
¿Necesitas ayuda?
Trae el contexto de la solicitud, no tus secretos.
Comparte el endpoint, la marca de tiempo, el estado HTTP y la respuesta saneada. Nunca incluyas claves API, tokens ni contenido privado de mensajes.
