Português (PT)
Português (PT)
Appearance
Português (PT)
Português (PT)
Appearance
A API REST do WallaWhats permite gerir telefones, subscrições de contas de X e histórico de notificações de forma programática — exatamente o que farias a partir do painel.
https://api.wallawhats.comapplication/jsonTodos os pedidos têm de incluir uma API key no cabeçalho x-api-key:
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_00000000000000000000000000000000"As chaves são criadas no painel em Settings → API Keys ou via POST /apikeys. O prefixo da chave começa por bws_ e tem 36 caracteres. As chaves são apresentadas apenas uma vez, na criação — se perderes uma, elimina-a e cria outra.
401 Unauthorized.| Plano | Chaves permitidas |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 20 |
Tentar criar mais do que o teu plano permite devolve 400 com "error": "api key limit reached".
Os erros são devolvidos em JSON com um campo error e um código de estado HTTP:
{ "error": "phoneNumber is required" }| Status | Significado |
|---|---|
400 | Parâmetros inválidos, quota excedida ou violação de regra de negócio |
401 | API key em falta ou inválida |
402 | Créditos insuficientes para concluir a operação |
404 | Recurso não encontrado |
500 | Erro do servidor — tenta novamente com backoff exponencial |
lastKey para paginar.403 perante padrões abusivos. Se achares que estás a ser limitado sem motivo, contacta o suporte.GET /user/profileDevolve o perfil do utilizador autenticado.
Resposta
{
"userId": "5a4cbd70-...",
"email": "jane@example.com",
"name": "Jane",
"plan": "pro_plus",
"createdAt": 1745000000000
}Exemplo
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_..."Um telefone é um número de WhatsApp verificado que pode receber alertas. Tens de verificar um telefone antes de subscrever nele uma conta de X.
POST /phonesGera um código de 6 dígitos e envia-o para o número via WhatsApp. O telefone é criado no estado pending_verification.
Pedido
| Campo | Tipo | Obrigatório | Notas |
|---|---|---|---|
phoneNumber | string | sim | Formato E.164, por exemplo +351912345678 |
displayName | string | não | Etiqueta amigável apresentada no painel |
Resposta
{ "phoneNumber": "+351912345678", "status": "pending_verification" }Erros
400 "invalid phone number format" — não está em E.164400 "phone number limit reached" — excede o limite do plano (Free/Pro/Pro+ 1, Business 3, Enterprise 10)Exemplo
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: bws_prod_..." \
-H "Content-Type: application/json" \
-d '{"phoneNumber": "+351912345678", "displayName": "Work"}'POST /phones/verifyConfirma um telefone submetendo o código de 6 dígitos. Os códigos expiram ao fim de 15 minutos.
Pedido
| Campo | Tipo | Obrigatório |
|---|---|---|
phoneNumber | string (E.164) | sim |
code | string (6 dígitos) | sim |
Resposta
{ "phoneNumber": "+351912345678", "status": "verified" }Erros
404 "phone not found"400 "invalid code" — código incorreto400 "code expired" — mais de 15 minutos400 "phone already verified"GET /phonesResposta
{
"phones": [
{
"phoneNumber": "+351912345678",
"status": "verified",
"displayName": "Work",
"createdAt": 1745000000000,
"verifiedAt": 1745000060000
}
],
"count": 1
}DELETE /phones/{phoneNumber}Remove o telefone e desativa quaisquer subscrições que o tivessem como destino. Codifica o + no URL como %2B.
Resposta
{ "success": true }Exemplo
curl -X DELETE "https://api.wallawhats.com/phones/%2B351912345678" \
-H "x-api-key: bws_prod_..."Uma subscrição liga uma conta de X que queres monitorizar a um dos teus telefones verificados. Quando a conta de X publica, o WallaWhats envia um alerta de WhatsApp para esse telefone.
POST /subscriptionsPedido
| Campo | Tipo | Obrigatório | Notas |
|---|---|---|---|
xUsername | string | sim | 1–15 caracteres, alfanumérico + underscore. O prefixo @ é aceite e removido. |
phoneNumber | string (E.164) | sim | Tem de ser um dos teus telefones verificados. |
Resposta
{
"xUsername": "elonmusk",
"xUserId": "44196397",
"xDisplayName": "Elon Musk",
"xProfileImage": "https://pbs.twimg.com/...",
"phoneNumber": "+351912345678",
"isActive": true,
"createdAt": 1745000000000
}Erros
400 "invalid X username format" — a regex falha400 "phone not found" / "phone not verified"400 "subscription limit reached" — vê a tabela de planos abaixo404 "X account not found" — o nome de utilizador não existe em XLimites por plano
| Plano | Subscrições |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 50 |
GET /subscriptionsResposta
{
"subscriptions": [ /* mesma estrutura da resposta de POST /subscriptions */ ],
"count": 3
}DELETE /subscriptions/{xUsername}Correspondência insensível a maiúsculas/minúsculas em xUsername. Remove o @ antes de enviar.
Resposta
{ "success": true }Todos os alertas que o WallaWhats entrega ficam registados aqui, juntamente com o respetivo estado de entrega no WhatsApp.
GET /notificationsParâmetros de consulta
| Parâmetro | Tipo | Descrição |
|---|---|---|
from | number (epoch ms) | Filtra notificações criadas em ou após este instante |
to | number (epoch ms) | Filtra notificações criadas em ou antes deste instante |
lastKey | string | Cursor de paginação devolvido pela resposta anterior |
Resposta
{
"notifications": [
{
"notificationId": "a1b2c3d4-...",
"userId": "5a4cbd70-...",
"phoneNumber": "+351912345678",
"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 possíveis de status: queued, sent, delivered, read, failed.
O tamanho de página é 50. Quando lastKey não aparece, chegaste ao fim.
Gere as chaves que as tuas aplicações usam para chamar esta API.
POST /apikeysPedido
| Campo | Tipo | Obrigatório |
|---|---|---|
name | string | não, por omissão "Default" |
Resposta (201 Created)
{
"apiKey": "bws_prod_00000000000000000000000000000000",
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"expiresAt": 1776536000000
}Valor apresentado apenas uma vez
apiKey é devolvida somente na criação. Guarda-a de imediato no teu gestor de segredos. Chamadas subsequentes só expõem o keyPrefix.
GET /apikeysResposta
[
{
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"lastUsedAt": 1745086400000,
"expiresAt": 1776536000000
}
]DELETE /apikeys/{keyPrefix}Usa o keyPrefix de 12 caracteres da resposta da listagem — nunca a chave completa.
Resposta
{ "success": true }# 1. Cria uma chave no painel e exporta-a
export WALLA_API_KEY="bws_prod_..."
# 2. Regista e verifica o teu 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":"+351912345678","displayName":"Mobile"}'
# -> o telefone recebe um código no WhatsApp. Envia-o:
curl -X POST https://api.wallawhats.com/phones/verify \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+351912345678","code":"123456"}'
# 3. Subscreve uma conta 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":"+351912345678"}'
# 4. Vê os alertas a chegar
curl https://api.wallawhats.com/notifications \
-H "x-api-key: $WALLA_API_KEY"Pronto — assim que a conta de X publicar, o alerta chega ao telefone em cerca de 10 segundos.
Perguntas sobre a API, relatos de bugs ou pedidos de aumento de quota: abre um pedido de suporte no separador Support do teu painel, ou escreve para hello@support.wallawhats.com.