Español (US)
Español (US)
Appearance
Español (US)
Español (US)
Appearance
La API REST de WallaWhats te permite gestionar teléfonos, suscripciones a cuentas de X e historial de notificaciones de forma programática — exactamente lo mismo que harías desde el panel.
https://api.wallawhats.comapplication/jsonToda solicitud debe incluir una API key en la cabecera x-api-key:
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_00000000000000000000000000000000"Las claves se crean en el panel, en Settings → API Keys, o a través de POST /apikeys. El prefijo de clave empieza por bws_ y tiene 36 caracteres. Las claves se muestran una sola vez, al crearlas — si pierdes una, elimínala y crea otra.
401 Unauthorized.| Plan | Claves permitidas |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 20 |
Intentar crear más de las que permite tu plan devuelve 400 con "error": "api key limit reached".
Los errores se devuelven en JSON con un campo error y un código de estado HTTP:
{ "error": "phoneNumber is required" }| Status | Significado |
|---|---|
400 | Parámetros inválidos, cuota superada o violación de regla de negocio |
401 | API key faltante o inválida |
402 | Créditos insuficientes para completar la operación |
404 | Recurso no encontrado |
500 | Error del servidor — reintenta con retroceso exponencial |
lastKey para paginar.403 ante patrones abusivos. Si crees que te están limitando de forma inesperada, contacta con soporte.GET /user/profileDevuelve el perfil del usuario autenticado.
Respuesta
{
"userId": "5a4cbd70-...",
"email": "jane@example.com",
"name": "Jane",
"plan": "pro_plus",
"createdAt": 1745000000000
}Ejemplo
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_..."Un teléfono es un número de WhatsApp verificado que puede recibir alertas. Debes verificar un teléfono antes de suscribirle una cuenta de X.
POST /phonesGenera un código de 6 dígitos y lo envía al número por WhatsApp. El teléfono se crea en estado pending_verification.
Solicitud
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
phoneNumber | string | sí | Formato E.164, por ejemplo +34612345678 |
displayName | string | no | Etiqueta amistosa mostrada en el panel |
Respuesta
{ "phoneNumber": "+34612345678", "status": "pending_verification" }Errores
400 "invalid phone number format" — no es E.164400 "phone number limit reached" — excede el máximo del plan (Free/Pro/Pro+ 1, Business 3, Enterprise 10)Ejemplo
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: bws_prod_..." \
-H "Content-Type: application/json" \
-d '{"phoneNumber": "+34612345678", "displayName": "Work"}'POST /phones/verifyConfirma un teléfono enviando el código de 6 dígitos. Los códigos expiran a los 15 minutos.
Solicitud
| Campo | Tipo | Requerido |
|---|---|---|
phoneNumber | string (E.164) | sí |
code | string (6 dígitos) | sí |
Respuesta
{ "phoneNumber": "+34612345678", "status": "verified" }Errores
404 "phone not found"400 "invalid code" — código incorrecto400 "code expired" — más de 15 minutos400 "phone already verified"GET /phonesRespuesta
{
"phones": [
{
"phoneNumber": "+34612345678",
"status": "verified",
"displayName": "Work",
"createdAt": 1745000000000,
"verifiedAt": 1745000060000
}
],
"count": 1
}DELETE /phones/{phoneNumber}Elimina el teléfono y desactiva cualquier suscripción que lo tuviera como destino. Codifica el + en la URL como %2B.
Respuesta
{ "success": true }Ejemplo
curl -X DELETE "https://api.wallawhats.com/phones/%2B34612345678" \
-H "x-api-key: bws_prod_..."Una suscripción vincula una cuenta de X que quieres monitorear a uno de tus teléfonos verificados. Cuando la cuenta de X publica, WallaWhats envía una alerta de WhatsApp a ese teléfono.
POST /subscriptionsSolicitud
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
xUsername | string | sí | 1–15 caracteres, alfanumérico + guion bajo. El prefijo @ se acepta y se elimina. |
phoneNumber | string (E.164) | sí | Debe ser uno de tus teléfonos verificados. |
Respuesta
{
"xUsername": "elonmusk",
"xUserId": "44196397",
"xDisplayName": "Elon Musk",
"xProfileImage": "https://pbs.twimg.com/...",
"phoneNumber": "+34612345678",
"isActive": true,
"createdAt": 1745000000000
}Errores
400 "invalid X username format" — la regex falla400 "phone not found" / "phone not verified"400 "subscription limit reached" — consulta la tabla de planes más abajo404 "X account not found" — el nombre de usuario no existe en XLímites por plan
| Plan | Suscripciones |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 50 |
GET /subscriptionsRespuesta
{
"subscriptions": [ /* misma estructura que la respuesta de POST /subscriptions */ ],
"count": 3
}DELETE /subscriptions/{xUsername}Coincidencia insensible a mayúsculas en xUsername. Quita el @ antes de enviarlo.
Respuesta
{ "success": true }Toda alerta que WallaWhats entrega se registra aquí, junto con su estado de entrega en WhatsApp.
GET /notificationsParámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
from | number (epoch ms) | Filtra notificaciones creadas en o después de este instante |
to | number (epoch ms) | Filtra notificaciones creadas en o antes de este instante |
lastKey | string | Cursor de paginación devuelto por la respuesta anterior |
Respuesta
{
"notifications": [
{
"notificationId": "a1b2c3d4-...",
"userId": "5a4cbd70-...",
"phoneNumber": "+34612345678",
"xUsername": "elonmusk",
"tweetId": "1797123456789000000",
"tweetText": "...",
"tweetUrl": "https://x.com/elonmusk/status/...",
"waMessageId": "wamid.HBgN...",
"status": "delivered",
"errorMessage": null,
"createdAt": 1745000000000,
"updatedAt": 1745000002000
}
],
"lastKey": "eyJOT1RJRklDQVRJT05fSUQi..."
}Valores posibles de status: queued, sent, delivered, read, failed.
El tamaño de página es 50. Cuando no viene lastKey, has llegado al final.
Gestiona las claves que usan tus aplicaciones para llamar a esta API.
POST /apikeysSolicitud
| Campo | Tipo | Requerido |
|---|---|---|
name | string | no, por defecto "Default" |
Respuesta (201 Created)
{
"apiKey": "bws_prod_00000000000000000000000000000000",
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"expiresAt": 1776536000000
}Valor mostrado una sola vez
apiKey se devuelve solo al crearla. Guárdalo en tu gestor de secretos de inmediato. Las llamadas posteriores solo exponen el keyPrefix.
GET /apikeysRespuesta
[
{
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"lastUsedAt": 1745086400000,
"expiresAt": 1776536000000
}
]DELETE /apikeys/{keyPrefix}Usa el keyPrefix de 12 caracteres de la respuesta del listado — nunca la clave completa.
Respuesta
{ "success": true }# 1. Crea una clave en el panel y expórtala
export WALLA_API_KEY="bws_prod_..."
# 2. Registra y verifica tu número de WhatsApp
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+34612345678","displayName":"Mobile"}'
# -> el teléfono recibe un código por WhatsApp. Envíalo:
curl -X POST https://api.wallawhats.com/phones/verify \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+34612345678","code":"123456"}'
# 3. Suscríbete a una cuenta de X
curl -X POST https://api.wallawhats.com/subscriptions \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"xUsername":"elonmusk","phoneNumber":"+34612345678"}'
# 4. Observa cómo llegan las alertas
curl https://api.wallawhats.com/notifications \
-H "x-api-key: $WALLA_API_KEY"Eso es todo — en cuanto la cuenta de X publique, la alerta llegará al teléfono en unos 10 segundos.
Consultas sobre la API, reportes de errores o ampliaciones de cuota: abre un ticket desde la pestaña Support de tu panel, o escribe a hello@support.wallawhats.com.