Envie mensagens de WhatsApp com PHP
Envie textos, imagens e arquivos de WhatsApp pelo seu site ou app em PHP, do seu próprio número conectado ao WbizTool como no WhatsApp Web. Basta a extensão cURL do PHP e um POST para um endpoint documentado.
Teste grátis: 50 mensagens em quaisquer 30 dias, sem cartão.
Como funciona
Pegue sua chave de API e conecte seu número
Cadastre-se e conecte seu número de WhatsApp na página Números do WhatsApp com um código QR ou um código de login, como no WhatsApp Web. Em Configurações → Chaves de API, crie uma chave e copie seu Client ID (o guia de chaves de API abaixo mostra onde). O ID no cartão do número (como ID 678) é o seu
whatsapp_client.Monte a requisição
Coloque
client_id,api_key,whatsapp_client, o número de telefone emsgem um array. Envie como JSON com a extensão cURL do PHP – ou com qualquer cliente HTTP que você já usa, com os mesmos campos.Envie a mensagem
Faça um POST para
https://wbiztool.com/api/v1/send_msg/. Uma resposta com"status": 1e ummsg_idsignifica que a mensagem está na fila do seu número.Confira se ela saiu
Passe uma URL em
webhookpara ser avisado quando a mensagem for enviada ou falhar, ou consulte o endpoint de status da mensagem com omsg_id.
Exemplos de código: PHP
<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'country_code' => '91',
'phone' => '9876543210',
'msg' => 'Hi Aman, your order #4821 has shipped and will arrive on Thursday.',
];
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Queued with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}{"status": 1, "message": "Created", "msg_id": 9817263}<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 1,
'country_code' => '91',
'phone' => '9876543210',
'img_url' => 'https://example.com/offers/diwali-sale.jpg',
'msg' => 'Our Diwali sale starts today 🎉',
]),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
// An array body (not json_encode) makes cURL send multipart/form-data.
CURLOPT_POSTFIELDS => [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 2,
'country_code' => '91',
'phone' => '9876543210',
'msg' => 'Your invoice for order #4821 is attached.',
'file_name' => 'invoice-4821.pdf',
'file' => new CURLFile('/path/to/invoice-4821.pdf', 'application/pdf', 'invoice-4821.pdf'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
echo curl_exec($ch);
curl_close($ch);<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'country_code' => '91',
'phone' => '9876543210',
'msg' => 'Hi Aman, a reminder that your appointment is today at 11:30 AM.',
'date' => '24/12/2026',
'time' => '09:00',
'timezone' => 'Asia/Kolkata',
];
$ch = curl_init('https://wbiztool.com/api/v1/schedule_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Scheduled with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no message in response');
}<?php
$msgId = 9817263;
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
];
$ch = curl_init("https://wbiztool.com/api/v1/message/status/{$msgId}/");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['message'] ?? '') === 'Unknown message id') {
echo 'No message with this ID in your workspace';
} elseif (!isset($result['status_text'])) {
echo 'Request failed: ' . ($result['message'] ?? 'no message in response');
} elseif ($result['status'] === 1) {
echo 'Sent';
} elseif ($result['status'] === 2) {
echo 'Failed: ' . $result['error'];
} else {
echo 'Status: ' . $result['status_text'];
}<?php
// webhook.php – WbizTool posts form fields, so they arrive in $_POST.
$msgId = $_POST['msg_id'] ?? '';
$status = $_POST['status'] ?? ''; // SENT, FAILED, CANCELLED or EXPIRED
error_log("WbizTool message $msgId: $status");
http_response_code(200);O que você pode fazer
Nenhuma biblioteca para instalar
Os exemplos usam só a extensão cURL do PHP. A API aceita JSON, campos de formulário ou multipart form data quando você envia um arquivo.
Textos, imagens e arquivos
Defina
msg_typecomo 0 para texto, 1 para imagem ou 2 para arquivo. Informe umaimg_urloufile_urlpública, ou envie o arquivo comCURLFile.Agende para depois
Faça um POST para
/api/v1/schedule_msg/comdate(dd/mm/aaaa),time(HH:MM) e umtimezonecomoAsia/KolkataouAmerica/New_York.Webhooks para cada status
Passe
webhooke o seu script recebe um POST form-encoded – leia$_POST['msg_id']e$_POST['status'](SENT,FAILED,CANCELLEDouEXPIRED).Usa WordPress? Use o plugin
O plugin do WbizTool para WordPress envia mensagens de WhatsApp para pedidos do WooCommerce, agendamentos do WP Amelia e formulários do Contact Form 7, sem código.
Bom saber
"status": 1significa que a mensagem está na fila, não que foi entregue. Enviada é o estado final de sucesso; a API não informa se a mensagem foi entregue ou lida.- Os erros de envio de mensagem voltam com HTTP 400 (429 no limite diário); os erros de agendamento costumam voltar com HTTP 200 e
"status": 0, então sempre decodifique o corpo e confirastatus. - Para um upload de arquivo, passe um array para
CURLOPT_POSTFIELDS, nãojson_encode, para que o cURL enviemultipart/form-datacom o arquivo em um campo chamadofile. - Guarde a chave de API no seu servidor, por exemplo em uma variável de ambiente. Quem tiver a chave pode enviar dos seus números, então nunca a coloque em JavaScript do navegador, em um app de celular ou em código que você publica.
- O teste grátis tem 50 mensagens em quaisquer 30 dias e 1 número, sem cartão. Os planos pagos começam em US$ 25 por mês nos EUA (o seu preço aparece em Preços) e enviam mensagens ilimitadas dentro do uso justo: até 1.000 por dia por número.
- As mensagens saem do seu próprio número de WhatsApp, então as regras do próprio WhatsApp valem: mande mensagens para quem espera ter notícias suas.
Perguntas frequentes
- Existe um SDK para PHP?
- Não há um pacote PHP oficial, e você não precisa de um: cada chamada é um único POST com a extensão cURL, como mostrado acima. Qualquer cliente HTTP do PHP funciona com a mesma URL e os mesmos campos.
- Como envio uma fatura em PDF pelo PHP?
- Use
msg_type2. Informe umafile_urlpública, ou envie o arquivo comnew CURLFile(...)em um campo chamadofile. Definafile_namecom a extensão, comoinvoice-4821.pdf. - Como sei que a mensagem foi enviada?
- Uma resposta com
"status": 1e ummsg_idsignifica que ela está na fila. Passe uma URL emwebhookpara receber um POST comSENT,FAILED,CANCELLEDouEXPIRED, ou chame o endpoint de status da mensagem com omsg_id. Enviada é o estado final: a API não informa se a mensagem foi entregue ou lida. - Em que formato envio o número de telefone?
- Envie o número com o código do país (919876543210), ou sem ele (9876543210) junto com
country_code(91). Espaços, +, hífens e parênteses são removidos para você, então +91 98765-43210 também funciona. - Preciso da API oficial do WhatsApp Business ou de aprovação da Meta?
- Não. O WbizTool envia do seu próprio número de WhatsApp ou WhatsApp Business, conectado como no WhatsApp Web. Não há aprovação da Meta nem modelos de mensagem para aprovar.
- A cobrança é por mensagem?
- Não. O teste grátis inclui 50 mensagens em quaisquer 30 dias. Os planos pagos enviam mensagens ilimitadas dentro do uso justo, até 1.000 por dia por número: Lite US$ 25, Standard US$ 59 e Advanced US$ 149 por mês nos EUA; Preços mostra o preço do seu país.
Leia os guias
- API de envio de mensagens
- API de agendamento de mensagens
- API de status da mensagem
- Plugin para WordPress
- Chaves de API e Client ID
- Conecte seu número de WhatsApp
Veja também
- WordPressMensagens de WhatsApp para pedidos do WooCommerce, Contact Form 7 e WP Amelia.
- cURLEnvie, agende e acompanhe mensagens de WhatsApp com um único comando cURL.
- PythonEnvie mensagens de WhatsApp pelo Python com o cliente oficial ou com requests.
- Lembretes de pagamentoLembretes de pagamento mensais ou avulsos do seu próprio número, com a fatura em PDF.
Envie hoje sua primeira mensagem automática de WhatsApp
Crie uma conta, escaneie o QR code e envie uma mensagem em menos de cinco minutos.
Comece grátisPlanos pagos a partir de US$ 25 por mês nos EUA. Preços
