Install
$ agentstack add skill-vistoazul-claude-whatsapp-skill-claude-whatsapp-skill ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
WhatsApp via Visto Azul
Skill para operar o WhatsApp pela API REST do Visto Azul. Você fala só com esta API, usando a sua API key.
Autenticação
- Base URL:
https://dashboard.vistoazul.com.br/api/v1 - Header em toda chamada:
Authorization: Bearer SUA_API_KEY - Pegue a API key no painel:
https://dashboard.vistoazul.com.br(em Instâncias). Ela é por conta. - Com mais de um número, indique a instância no campo
instance(endpoints diretos) ou no headerX-Instance(endpoints de proxy/wa).
Regras (anti-ban, importante)
- Aguarde de 3 a 5 segundos entre chamadas sequenciais.
- Personalize e varie o texto. Nunca mande a mesma mensagem idêntica para muita gente.
- Para volume alto, use
POST /v1/campaigns(já traz rotação de número e delays aleatórios). - Valide números com
POST /v1/wa/chat/checkantes de disparar.
Endpoints
Instâncias
GET /v1/instances· lista os números conectados e o status de cada um.POST /v1/instances{ "name": "vendas" }· cria uma instância (devolve o QR code).GET /v1/instances/{instance}/connect· gera um novo QR para reconectar.
Enviar mensagem de texto
POST /v1/messages/text{ "instance": "vendas", "number": "5511999999999", "text": "Olá!" }
Enviar mídia, PIX e enquete (proxy /v1/wa, use o header X-Instance)
- Mídia:
POST /v1/wa/send/media{ "number": "...", "type": "image", "file": "https://...jpg", "text": "legenda" }(type:image|video|document) - Cobrança PIX:
POST /v1/wa/send/request-payment{ "number": "...", "amount": 97.00, "pixKey": "sua-chave", "pixType": "email", "title": "Pedido", "text": "Segue seu PIX", "itemName": "Pedido" } - Enquete:
POST /v1/wa/send/menu{ "number": "...", "type": "poll", "text": "Qual horário?", "choices": ["Manhã","Tarde"], "selectableCount": 1 } - Validar quem tem WhatsApp:
POST /v1/wa/chat/check{ "numbers": ["5511999999999"] } - Criar grupo:
POST /v1/wa/group/create{ "name": "Turma 01", "participants": [] }
Campanhas (disparo em massa)
POST /v1/campaigns{ "instances": ["vendas"], "template": "{Oi|Olá} {{nome}}!", "recipients": [{"number":"5511999999999","vars":{"nome":"Ana"}}], "minDelayMs": 8000, "maxDelayMs": 40000, "scheduledForMs": 0 }templateaceita spintax{a|b}e variáveis{{nome}}.scheduledForMs(epoch ms) agenda para o futuro.GET /v1/campaigns/{id}· status (sent,failed,total,state).
Contatos (CRM leve)
GET /v1/contacts?tag=vip· lista (filtra por tag).POST /v1/contacts{ "number": "...", "name": "Ana", "tags": ["cliente","vip"] }POST /v1/contacts/import{ "text": "5511...,Ana\n5521...,Bruno", "tags": ["lista"] }
Receber mensagens (webhook, para chatbot / agente de IA)
POST /v1/instances/{instance}/webhook{ "url": "https://seu-sistema.com/webhook", "enabled": true }- A partir daí, cada mensagem recebida chega como POST na sua URL. Ideal para responder com IA (ex.: Claude).
Baixar mídia recebida e ações na conversa
O id da mensagem vem no webhook. Todas levam { "instance", … } no corpo.
- Baixar mídia:
POST /v1/messages/media{ "instance", "id", "transcribe": true }→{ "base64", "mimetype", "transcription" }(áudio pode vir transcrito). - Marcar como lida:
POST /v1/messages/read{ "instance", "id" }. - Presença:
POST /v1/messages/presence{ "instance", "number", "presence": "composing" }(composing/recording/paused). - Reagir:
POST /v1/messages/react{ "instance", "number", "id", "emoji": "..." }. - Editar:
POST /v1/messages/edit{ "instance", "id", "text" }. - Apagar:
POST /v1/messages/delete{ "instance", "id" }.
Respostas de erro
401 API key ausente/inválida · 402 assinatura inativa · 403 sem permissão / limite do plano · 400 parâmetro faltando.
Exemplo (curl)
curl -X POST https://dashboard.vistoazul.com.br/api/v1/messages/text \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"instance":"vendas","number":"5511999999999","text":"Olá do Claude!"}'
Documentação completa e mais exemplos: https://vistoazul.com.br/docs
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: vistoazul
- Source: vistoazul/claude-whatsapp-skill
- License: MIT
- Homepage: https://vistoazul.com.br
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.