Ir al contenido
ApiWsp

API de WhatsApp con Python

Con requests para enviar y Flask para recibir. Funciona igual en Django o FastAPI.

Requisitos

  • Python 3.8 o superior
  • pip install requests flask
  • Tu API key y tu número conectado

Enviar un mensaje

requests arma el JSON con el parámetro json=.

Python
import os
import requests

respuesta = requests.post(
    "https://api.kontacto.pro/send-message",
    json={
        "api_key": os.environ["WSP_API_KEY"],
        "sender": "51999888777",   # tu número conectado
        "number": "51987654321",   # destino con código de país
        "message": "Hola Ana, tu pedido #1024 ya salió a reparto.",
    },
    timeout=30,
)

datos = respuesta.json()
if not datos.get("status"):
    raise RuntimeError(f"No se envió: {datos.get('msg')}")
print("Enviado")

Enviar una encuesta

De 2 a 5 opciones. countable "1" = una sola respuesta por persona.

Python
requests.post(
    "https://api.kontacto.pro/send-poll",
    json={
        "api_key": os.environ["WSP_API_KEY"],
        "sender": "51999888777",
        "number": "51987654321",
        "name": "¿Confirmas tu cita de mañana a las 10:30?",
        "option": ["Sí, asistiré", "Necesito reprogramar"],
        "countable": "1",
    },
    timeout=30,
)

Recibir mensajes con Flask

Si respondes un JSON con text, ese mensaje le llega al cliente.

Python
from flask import Flask, request, jsonify

app = Flask(__name__)
atendidos = set()

@app.post("/webhook")
def webhook():
    entrada = request.get_json(silent=True) or {}
    texto = entrada.get("message", "")   # en minúsculas y sin tildes

    if entrada.get("id") in atendidos:
        return "", 200
    atendidos.add(entrada.get("id"))

    if "horario" in texto:
        return jsonify(text="Hola {name}, atendemos de 9:00 a 19:00.", quoted=True)

    return "", 200   # sin respuesta automática

Todos los endpoints, parámetros y errores están en la documentación de la API.

Preguntas frecuentes

Si tu duda no está aquí, escríbenos por WhatsApp.

Ver todas las preguntas

¿Sirve con Django o FastAPI?

Sí. El webhook es una vista que lee el JSON del POST y devuelve otro JSON o una respuesta vacía.

¿Puedo enviar desde un script con cron?

Sí. Es un uso común para recordatorios diarios: el script lee tu base de datos y envía un mensaje por cliente.

La API en otros lenguajes

Envía tu primer mensaje hoy

Escríbenos por WhatsApp, conectamos tu número con un QR y te damos tu API key para que pruebes desde tu sistema.