Comienza aquí
Tu primera solicitud en cuatro pasos
Conecte y habilite WhatsApp para un móvil compatible.
Confirme el destinatario con el endpoint de verificación de número.
Envía con waonly=yes.
Para recuperar mensajes recibidos: activar la colección, llamar /getwa/synchronisation/, esperar la recuperación, luego llamar /getwa.
OBLIGATORIO ANTES DE RECUPERAR MENSAJES RECIBIDOS
Solicite la sincronización WhatsApp primero.
Antes de llamar/getwapara ver los mensajes recibidos de WhatsApp, debe solicitar una ventana de sincronización a travéshttps://api.smsmobileapi.com/getwa/synchronisation/. Este paso explícito es necesario para autorizar el intercambio entre WhatsApp y SMSMobileAPI de forma segura. Espera la recuperación, luego llama/getwa.
Aplicación móvil oficial
El puente seguro entre tu teléfono, el panel y API.
Las operaciones de SMS y llamadas se realizan a través de la aplicación oficial SMSMobileAPI instalada en tu teléfono conectado. La app vincula el dispositivo de forma segura con tu cuenta, sincroniza eventos autorizados y conecta la red móvil con el panel de control y REST API.
- Lanzamientos firmados distribuidos a través de las listas oficiales Google Play y Apple App Store
- Controles de revisión, firma y distribución de plataformas Google y Apple
- Emparejamiento seguro de dispositivo, transporte HTTPS y acceso autenticado API
- Solo los permisos requeridos para las funciones móviles que habilites
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.
whatsapp.submittedWhatsApp enviado
Se creó un trabajo de envío de WhatsApp.
whatsapp.sentWhatsApp enviado
El entorno WhatsApp conectado confirmó que el mensaje fue enviado.
whatsapp.failedWhatsApp falló
La operación de envío de WhatsApp falló.
whatsapp.receivedWhatsApp recibido
Se recuperó un mensaje WhatsApp después de que la cuenta solicitara la sincronización.
whatsapp.voice.transcribedMensaje de voz transcrito
Un mensaje de voz WhatsApp recuperado y elegible se convirtió en texto utilizable.
Autenticación
Mantén las credenciales en tu servidor
Usa apikey para integraciones directas. Credenciales de cliente OAuth2 están disponibles para aplicaciones servidor; solicita un token y envíalo como Authorization: Bearer ACCESS_TOKEN.
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-whatsapp-sent/" \
--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-whatsapp-sent/" \
-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-whatsapp-sent/" \
--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": "whatsapp-sent",
"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.
POSTE · GET
Enviar un mensaje WhatsApp
https://api.smsmobileapi.com/sendsmsEnvía un texto WhatsApp o soporte multimedia a través del entorno conectado.
Utilícelo para destinatarios individuales o un grupo de contactos en el panel.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | Su clave API; omita al usar un token Bearer. |
recipients |
teléfono | Obligatorio | Código de país más número, sin + ni 00. |
message |
cadena | Obligatorio | Cuerpo del texto; se admiten múltiples líneas. |
waonly |
sí | Obligatorio | Debe ser sí para solicitar entrega solo WhatsApp. |
url_media |
URL HTTPS | Opcional | PDF público, documento, archivo o URL JPG/PNG. |
url_media_shorted |
sí | Opcional | Usa un URL de descarga acortado con modo de vista previa PDF. |
pdf_with_image |
sí | Opcional | Añadir una vista previa de imagen para un PDF. |
encrypt_message |
sí | Opcional | Requerir desencriptación en el lado del destinatario. |
contactGroup |
GUID | Opcional | Envía a cada contacto en un grupo del panel. |
Ejemplo de solicitud
curl -X POST "https://api.smsmobileapi.com/sendsms?waonly=yes" \
-d "apikey=YOUR_API_KEY" \
-d "recipients=191728660" \
--data-urlencode "message=Your order is ready."
Ejemplo de respuesta
{
"result": {
"error": 0,
"sent": "1",
"id": "MESSAGE_GUID",
"send_with_whatsapp": "1"
}
}
¿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 ↑- Los medios URL compatibles deben ser recursos públicos HTTPS.
- Formato WhatsApp: *negrita*, _cursiva_, ~tachado~ y monospace con triple backtick.
POSTE · GET
Reenviar un mensaje WhatsApp no enviado
https://api.smsmobileapi.com/resendwa/Reintenta un mensaje WhatsApp que actualmente tiene un estado de error.
Úselo tras diagnosticar una entrada fallida en el log WhatsApp.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | Su clave API. |
guid |
cadena | Obligatorio | GUID del mensaje fallido. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/resendwa/?apikey=YOUR_API_KEY&guid=MESSAGE_GUID"
¿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 ↑- Solo los mensajes fallidos son elegibles para reenvío.
OBTENER
Activar recuperación entrante
https://api.smsmobileapi.com/getwa/active/Activa, desactiva o alterna la recuperación de mensajes de WhatsApp.
Activar la colección primero. Luego, antes de recuperar mensajes recibidos, debe solicitar la sincronización a través de /getwa/synchronisation/.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | Su clave API. |
statut |
0 Silencio 1 Silencio x | Opcional | 1 activa, 0 desactiva, x u omisión alterna el estado actual. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/getwa/active/?apikey=YOUR_API_KEY&statut=1"
Ejemplo de respuesta
{
"success": true,
"read_message_active": 1,
"status_note": "Activated"
}
¿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 ↑- La recuperación de entradas está desactivada por defecto por privacidad.
- La activación por sí sola no recupera mensajes: una solicitud de sincronización sigue siendo obligatoria antes de usar /getwa para la actividad recién recibida.
OBTENER
Necesario: petición sincronización WhatsApp
https://api.smsmobileapi.com/getwa/synchronisation/Mandatory security step before retrieving received WhatsApp messages. It opens a time-limited synchronization window.
Debe llamar a este punto final antes /getwa cuando necesite SMSMobileAPI para comprobar WhatsApp para mensajes recién recibidos. Espera a recuperarse, luego llama /getwa.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | Su clave API. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/getwa/synchronisation/?apikey=YOUR_API_KEY"
Ejemplo de respuesta
{
"error": "0",
"messages": "synchronized",
"expire_at": "2026-03-11 12:27:00",
"expire_at_unix": "1773232020"
}
¿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 ↑- La sincronización es solo para recibir mensajes. No la llame antes de enviar.
- La respuesta devuelve expira at y expire at unix. Solicitar otra ventana de sincronización cuando necesite recoger nuevos mensajes recibidos.
- Una solicitud de sincronización es obligatoria para proteger el intercambio entre WhatsApp y SMSMobileAPI.
OBTENER
Recuperar mensajes WhatsApp
https://api.smsmobileapi.com/getwaReturns received WhatsApp messages that were recovered during a requested synchronization window.
Requisito obligatorio: activar la recuperación de entrada, llame a https://api.smsmobileapi.com/getwa/synchronisation/ first, espere a la recuperación, luego llame a este punto final. /getwa no comienza la sincronización.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | Su clave API. |
before |
Marca de tiempo Unix | Opcional | Devuelva registros anteriores a esta marca temporal. |
date |
AAAA-MM-DD | Opcional | Devuelva registros para una fecha. |
message_type |
texto | audio | Opcional | Filtrar mensajes de texto o mensajes de audio convertidos a texto; omita para ambos. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/getwa/?apikey=YOUR_API_KEY&message_type=text"
Ejemplo de respuesta
{
"date": "2026-03-11",
"hour": "12:27:00",
"timestamp": "1773232020",
"number": "19176728660",
"contact": "SMSMobileAPI",
"message": "When will I receive my order?",
"guid": "652fcfc0-12a8-46f5-b5ba-9391135b8b4c"
}
¿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 ↑
OBTENER
Comprobar un número de WhatsApp
https://api.smsmobileapi.com/whatsapp/checknumber/Comprueba si un número de teléfono está disponible en WhatsApp.
Úselo antes de enviar para reducir fallos evitables.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
apikey |
cadena | Obligatorio | Su clave API. |
recipients |
teléfono | Obligatorio | Código de país más número, sin + ni 00. |
Ejemplo de solicitud
curl "https://api.smsmobileapi.com/whatsapp/checknumber/?apikey=YOUR_API_KEY&recipients=19176728660"
Ejemplo de respuesta
{
"contact_found_on_whatsapp": "yes",
"recipients": "19176728660"
}
¿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 ↑
CORREO
Crear un token de acceso OAuth2
https://api.smsmobileapi.com/oauth2/tokenIntercambia credenciales de cliente por un token Bearer.
Utilícelo para integraciones servidor a servidor donde se prefieren credenciales de corta duración.
Parámetros
| Nombre | Tipo | Requisito | Descripción |
|---|---|---|---|
grant_type |
cadena | Obligatorio | Debe ser client_credentials. |
client_id |
cadena | Obligatorio | ID de cliente desde el panel. |
client_secret |
cadena | Obligatorio | Secreto de cliente desde el panel. |
Ejemplo de solicitud
curl -X POST "https://api.smsmobileapi.com/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"
¿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 el secreto del cliente en tu servidor. Nunca lo incluyas en el código móvil o del navegador.
POSTE · GET
Historial de WhatsApp enviados claro
https://api.smsmobileapi.com/delete-history-whatsapp-sent/Borra registros del servidor de mensajes de WhatsApp enviados. No elimina mensajes de las conversaciones de WhatsApp.
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-whatsapp-sent/" \
--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-whatsapp-sent/" \
--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-whatsapp-sent/" \
-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-whatsapp-sent/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Ejemplo de respuesta
{
"result": {
"error": 0,
"history": "whatsapp-sent",
"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.
POSTE · GET
Historial de WhatsApp recibidos claro
https://api.smsmobileapi.com/delete-history-whatsapp-received/Borra registros del servidor de mensajes de WhatsApp recibidos. No desconecta WhatsApp ni elimina conversaciones.
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-whatsapp-received/" \
--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-whatsapp-received/" \
--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-whatsapp-received/" \
-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-whatsapp-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Ejemplo de respuesta
{
"result": {
"error": 0,
"history": "whatsapp-received",
"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.


