Python é uma das linguagens mais usadas para automação, scripts e sistemas web. Integrar WhatsApp ao seu projeto Python é simples com a ZAP API — em menos de 20 linhas você já envia a primeira mensagem.
Pré-requisitos
- Python 3.8+
- pip instalado
- Conta na ZAP API (trial 7 dias, sem cartão)
Passo 1: Instalar dependências
pip install requests python-dotenv
Passo 2: Configurar credenciais
# .env
ZAP_TOKEN=tk_seu_token_aqui
ZAP_INSTANCE=inst_seu_id_aqui
Passo 3: Enviar sua primeira mensagem
import os
import requests
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('ZAP_TOKEN')
INSTANCE = os.getenv('ZAP_INSTANCE')
BASE_URL = 'https://zap-api.tech/v1/instances/' + INSTANCE
HEADERS = {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
}
def enviar_texto(phone: str, mensagem: str) -> dict:
"""Envia mensagem de texto via WhatsApp."""
response = requests.post(
BASE_URL + '/send',
headers=HEADERS,
json={
'phone': phone,
'type': 'text',
'body': mensagem
}
)
response.raise_for_status()
return response.json()
# Enviar mensagem de teste
resultado = enviar_texto('5511999998888', 'Ola! Mensagem via Python + ZAP API.')
print(resultado) # {'messageId': 'msg_xxx', 'status': 'sent'}
Passo 4: Enviar imagem, áudio e documentos
def enviar_imagem(phone: str, url: str, legenda: str = '') -> dict:
return requests.post(
BASE_URL + '/send',
headers=HEADERS,
json={
'phone': phone,
'type': 'image',
'mediaUrl': url,
'caption': legenda
}
).json()
def enviar_documento(phone: str, url: str, nome_arquivo: str) -> dict:
return requests.post(
BASE_URL + '/send',
headers=HEADERS,
json={
'phone': phone,
'type': 'document',
'mediaUrl': url,
'fileName': nome_arquivo
}
).json()
def enviar_audio(phone: str, url: str) -> dict:
return requests.post(
BASE_URL + '/send',
headers=HEADERS,
json={
'phone': phone,
'type': 'audio',
'mediaUrl': url
}
).json()
# Exemplos de uso
enviar_imagem('5511999998888', 'https://cdn.loja.com/banner.jpg', 'Promocao de verao!')
enviar_documento('5511999998888', 'https://cdn.loja.com/catalogo.pdf', 'catalogo-2026.pdf')
enviar_audio('5511999998888', 'https://cdn.loja.com/mensagem.mp3')
Passo 5: Receber mensagens com Flask
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
payload = request.json
if payload.get('event') == 'message.received':
data = payload['data']
if not data.get('fromMe'):
phone = data['phone']
mensagem = data['body']
nome = data.get('name', 'cliente')
print('Mensagem de ' + nome + ' (' + phone + '): ' + mensagem)
# Responder automaticamente
enviar_texto(phone, 'Ola, ' + nome + '! Recebemos sua mensagem.')
return jsonify({'ok': True})
if __name__ == '__main__':
app.run(port=5000)
Passo 6: Configurar o webhook via Python
response = requests.put(
BASE_URL + '/webhook',
headers=HEADERS,
json={
'url': 'https://seu-servidor.com/webhook',
'secret': 'seu-secret-aqui'
}
)
print(response.json())
Casos de uso populares com Python
Python + ZAP API é especialmente útil para:
- Alertas de monitoramento: notificar quando um servidor cai ou pipeline falha
- Django/FastAPI: sistemas web que precisam notificar via WhatsApp
- Data pipelines: alertas de conclusão ou erro em processos de dados
- E-commerce: notificações de pedidos, estoque baixo, pagamentos
- Planilhas: alertas automáticos a partir do Google Sheets
Exemplo real: alerta de monitoramento
import time
def verificar_servidor(url: str) -> bool:
try:
r = requests.get(url, timeout=5)
return r.status_code == 200
except Exception:
return False
def alertar_equipe(mensagem: str):
numeros = ['5511999998888', '5511888887777']
for numero in numeros:
enviar_texto(numero, mensagem)
# Loop de monitoramento a cada 60 segundos
while True:
if not verificar_servidor('https://minha-api.com/health'):
alertar_equipe(
'ALERTA: API fora do ar!
'
'URL: https://minha-api.com
'
'Horario: ' + time.strftime('%d/%m %H:%M')
)
time.sleep(60)
Conclusão
Integrar WhatsApp ao Python é rápido, sem bibliotecas complexas e funciona em qualquer ambiente — VPS, Lambda, scripts locais. Com a ZAP API, você tem uma solução robusta a partir de R$29/mês* com trial de 7 dias sem cartão.