Saltar al contenido
Wbiztool

API de mensajería

API para enviar mensajes a un grupo de WhatsApp

Envía un texto, una imagen o un documento de WhatsApp a un grupo de WhatsApp del que forme parte tu número conectado. Úsala para anuncios del equipo, novedades para tu comunidad y notificaciones de difusión.

POSThttps://wbiztool.com/api/v1/send_msg/group/

Cuerpo: JSON, campos de formulario o multipart/form-data al subir un archivo

El mensaje se pone en cola y se envía al grupo desde tu número de WhatsApp. La respuesta te da un msg_id que puedes usar para consultar su estado.

Ejemplo rápido#

curl -X POST https://wbiztool.com/api/v1/send_msg/group/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "group_name": "Sales Team Mumbai",
    "msg": "Reminder: *weekly review* starts at 4 PM today."
  }'

Sustituye 12345, YOUR_API_KEY y 678 por tus propios valores. Consulta Autenticación para saber dónde encontrarlos.

Parámetros de la solicitud#

Autenticación

client_idintegerobligatorio

Tu ID de cliente de la API, de Configuración → Claves API.

api_keystringobligatorio

Tu clave API, de esa misma página.

whatsapp_clientintegerObligatorio si el propietario tiene más de un número conectado

ID del número de WhatsApp desde el que se envía, de la configuración de WhatsApp. Debe ser un número que pertenezca al propietario del espacio de trabajo. Si lo omites y el propietario tiene exactamente un número conectado, se usa ese número.

Grupo y mensaje

group_namestringobligatorio

Nombre del grupo de WhatsApp, escrito exactamente como aparece en WhatsApp. Envíalo como cadena. Un número JSON como 2024 devuelve una página de error HTML (HTTP 500). Consulta Cómo se encuentra el grupo.

msg_typeintegeropcional

0 texto (predeterminado), 1 imagen, 2 archivo o documento.

msgstringObligatorio cuando msg_type es 0

Texto del mensaje. En imágenes y archivos es el pie de foto y puede estar vacío. El formato de WhatsApp funciona: *bold*, _italic_, ~strikethrough~. También se acepta message como alias.

Imágenes y archivos

img_urlstringObligatorio cuando msg_type es 1 y no se sube ningún archivo

URL pública http o https de la imagen.

file_urlstringObligatorio cuando msg_type es 2 y no se sube ningún archivo

URL pública http o https desde la que se puede descargar el archivo directamente.

filefileopcional

Sube la imagen o el archivo en lugar de indicar una URL. Envía la solicitud como multipart/form-data con el campo llamado file.

file_namestringopcional

Nombre de archivo que ve el grupo, como price-list.pdf. Su extensión determina cómo se envía el archivo, así que incluye una. Se envía en minúsculas, los caracteres como & : ? * $ ; se reemplazan por _ y se recorta a 150 caracteres. Si lo omites, el nombre se toma de la URL o del archivo subido.

Opciones de entrega

expire_after_secondsintegeropcional

Marca el mensaje como caducado (estado 4) si no se ha enviado en este número de segundos, por ejemplo 3600 para una hora. Un proceso en segundo plano lo hace al menos 30 segundos después del plazo, así que no confíes en él para plazos de menos de un minuto.

webhookstringopcional

URL que recibe un POST cuando el mensaje se envía o falla. El contenido es el mismo que en Enviar mensaje.

Las imágenes y los archivos siguen las mismas reglas que en Enviar mensaje: las URL se descargan cuando llamas a la API (hasta 100 MB). Al enviar el mensaje, fallan las imágenes de más de 16 MB y los videos de más de 64 MB, el audio WAV y OGG no es compatible, y a los archivos (msg_type 2) sin una extensión admitida se les añade .pdf, incluidos los subidos. Los nombres de archivo se envían en minúsculas. Consulta Enviar imágenes y archivos para ver la lista completa de extensiones y errores.

Para subir un archivo, usa los ejemplos multipart de Enviar mensaje, cambiando la URL por /api/v1/send_msg/group/ y phone/country_code por group_name.

Imagen desde una URL
curl -X POST https://wbiztool.com/api/v1/send_msg/group/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 1,
    "group_name": "Sales Team Mumbai",
    "img_url": "https://example.com/reports/weekly-sales.png",
    "msg": "This week'\''s sales summary"
  }'

Cómo se encuentra el grupo#

Wbiztool no comprueba el nombre del grupo cuando llamas a la API. Cuando se está enviando el mensaje, Wbiztool busca group_name en tus chats de WhatsApp y abre el primer resultado. Por eso:

  • Tu número de WhatsApp conectado debe ser miembro del grupo.
  • Usa el nombre completo del grupo exactamente como lo muestra WhatsApp, incluidos emojis y signos de puntuación. Los espacios al principio y al final se ignoran.
  • Haz que el nombre sea único. Un nombre corto o parcial puede coincidir con otro chat que aparezca antes en la búsqueda.
  • Si no hay ninguna coincidencia, si en el grupo solo pueden enviar mensajes los administradores y tu número no es administrador, o si solo los administradores de la comunidad pueden publicar, el mensaje falla con el error Group not found.
  • Si tu número ha salido del grupo, el mensaje falla con el error Group member blocked.

Los problemas con el grupo no aparecen en la respuesta de la API. Usa un webhook o Estado del mensaje para saber si el mensaje se envió.

Usar el cliente oficial#

El cliente de Python llama a este endpoint por ti.

Python
from wbiztool_client import WbizToolClient

client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)

result = client.send_message_to_group(
    group_name="Sales Team Mumbai",
    msg="Reminder: weekly review starts at 4 PM today.",
    whatsapp_client=678,
)
print(result)

Los errores lanzan requests.HTTPError. Lee el motivo con e.response.json()["message"].

Respuesta#

Una solicitud correcta devuelve HTTP 200:

{
  "status": 1,
  "message": "Created",
  "msg_id": 9817263
}
CampoTipoDescripción
statusinteger1 si el mensaje se puso en cola, 0 si la solicitud falló.
messagestringCreated si todo va bien; en caso contrario, el error.
msg_idintegerID del mensaje en cola. Guárdalo para consultar el estado más adelante. Solo aparece si la solicitud es correcta.

"status": 1 significa que el mensaje se puso en cola, no que haya llegado al grupo. Usa un webhook o Estado del mensaje para confirmar que se envió.

Errores#

Los errores devuelven HTTP 400 con status con valor 0:

{ "status": 0, "message": "Group Name cant be null" }
MensajeCómo solucionarlo
Auth Error - Please send correct API key and Client idEnvía un api_key que no esté vacío.
Invalid client id.Envía client_id como número.
Auth Error: invalid api keyComprueba que la clave existe, que no se ha eliminado y que pertenece a este client_id.
Group Name cant be nullAñade group_name.
Msg cant be nullLos mensajes de texto (msg_type 0) necesitan msg.
Image Url Can't be nullPara msg_type 1, envía img_url o sube un file.
File Url Can't be nullPara msg_type 2, envía file_url o sube un file.
Invalid file url, Can't download / Invalid file urlLa URL no es pública, se agotó el tiempo de espera o el archivo supera los 100 MB.
Invalid whatsapp client NoneEse ID de whatsapp_client no pertenece al propietario del espacio de trabajo. Consulta el aviso anterior.
Invalid whatsapp client id.Envía whatsapp_client. Es obligatorio, salvo que el propietario tenga exactamente un número conectado.
Not enough creditsTu plan no tiene mensajes disponibles.
Demo Account can not access apisUsa una cuenta normal.
Account DisabledTu cuenta está desactivada. Contacta con soporte.
Invalid JSON format: …El cuerpo JSON no es válido, a menudo por una coma final o un salto de línea sin escapar en msg. Usa \n para los saltos de línea.

Consejos#

  • Prueba primero el nombre: envía un texto corto al grupo y revisa Estado del mensaje antes de automatizar nada.
  • Grupos renombrados: si alguien cambia el nombre del grupo en WhatsApp, actualiza también group_name en tu integración.
  • Tipos de mensaje: solo 0, 1 y 2 son valores válidos para msg_type. Cualquier valor que no sea un número entero devuelve una página de error HTML (HTTP 500) en lugar de JSON.
  • Varios grupos a la vez: Enviar a varios números acepta nombres de grupo mezclados con números de teléfono en una sola solicitud.