SDK PHP
Documentação completa do SDK PHP para integração com a WAME API. Envie mensagens, gerencie grupos, configure webhooks e muito mais.
Instalação
Requisitos: PHP >= 8.1 e ext-curl. Instale via Composer:
composer require raphaelvserafim/client-php-api-wa-meInicialização
Importe e inicialize o client:
use Api\Wame\WhatsApp;
require 'vendor/autoload.php';
$wa = new WhatsApp([
'server' => 'https://server.api-wa.me',
'key' => 'YOUR_INSTANCE_KEY',
]);
$to = "559999999999"; // Grupo: "123456789@g.us"Gerenciar Instância
Conecte, configure e gerencie sua instância:
// Conectar via QR Code
$qr = $wa->instance->connect();
// Conectar via Pairing Code
$code = $wa->instance->connectPairingCode("559999999999");
// Informações da instância
$info = $wa->instance->getInfo();
// Logout, restart e resync
$wa->instance->logout();
$wa->instance->restart();
$wa->instance->resync();Configurações
$wa->instance->updateSettings(
markMessageRead: true,
saveMedia: false,
receiveStatusMessage: false,
receivePresence: false,
);Perfil
$wa->instance->updateProfileName("My Bot");
$wa->instance->updateProfileStatus("Online");
$wa->instance->updateProfilePicture("https://example.com/avatar.jpg");
$wa->instance->removeProfilePicture();Proxy e MongoDB
$wa->instance->setProxy("http://user:pass@ip:port");
$wa->instance->addMongoDB("mongodb+srv://...", "mydb");Conexão Mobile
$wa->instance->prepareMobileRegistration("55", "99999999999", "11");
$wa->instance->requestMobileCode("sms");
$wa->instance->verifyMobileCode("123456");Webhooks
Configure webhooks para receber eventos em tempo real:
$wa->instance->updateWebhook([
'allowWebhook' => true,
'allowNumber' => 'all',
'webhookMessage' => 'https://your-webhook.com/message',
'webhookGroup' => '',
'webhookConnection' => '',
'webhookQrCode' => '',
'webhookMessageFromMe' => '',
'webhookHistory' => '',
]);
// Estatísticas de webhooks
$stats = $wa->instance->getWebhookStatistics();Enviar Texto
Envie mensagens de texto simples:
$wa->message->sendText($to, "Hello!");Enviar Mídia
Imagem
$wa->message->sendImage($to, "https://example.com/photo.jpg", "Caption");Áudio
$wa->message->sendAudio($to, "https://example.com/audio.mp3");Vídeo
$wa->message->sendVideo($to, "https://example.com/video.mp4", "Big Buck Bunny");Documento
$wa->message->sendDocument($to, "https://example.com/file.pdf", "application/pdf", "Resume.pdf", "Meu documento");Sticker
$wa->message->sendSticker($to, "https://example.com/sticker.webp");Video Note (circular)
$wa->message->sendVideoNote($to, "https://example.com/video.mp4");Envio via Base64
$wa->message->sendBase64Image($to, "data:image/png;base64,...", "Caption");
$wa->message->sendBase64Audio($to, "data:audio/mp3;base64,...");
$wa->message->sendBase64Document($to, "data:application/pdf;base64,...", "application/pdf", "file.pdf", "Meu documento");Enviar Contato
Contato único
$wa->message->sendContact($to, "Raphael", "559999999999", "api-wa.me");Múltiplos contatos
$wa->message->sendContacts($to, "Meus Contatos", [
['fullName' => 'Raphael', 'phoneNumber' => '559999999999'],
['fullName' => 'João', 'phoneNumber' => '559888888888', 'organization' => 'WAME'],
]);Enviar Localização
Localização fixa
$wa->message->sendLocation($to, 37.7749, -122.4194, "San Francisco, CA");Localização em tempo real
$wa->message->sendLiveLocation($to, 37.7749, -122.4194, "Estou aqui!");Enviar Link Preview
$wa->message->sendLink(
$to,
"API WhatsApp",
"Check out our API",
"https://example.com/thumb.jpg",
"https://api-wa.me",
"Powerful WhatsApp integration"
);Enviar Reação
$wa->message->sendReaction("👍", "MESSAGE_ID");Responder Mensagem
O SDK PHP tem métodos dedicados para responder mensagens:
// Responder com texto
$wa->message->replyText("ORIGINAL_MSG_ID", $to, "This is a reply!");
// Responder com imagem
$wa->message->replyImage("ORIGINAL_MSG_ID", $to, "https://example.com/photo.jpg", "Caption");
// Responder com vídeo
$wa->message->replyVideo("ORIGINAL_MSG_ID", $to, "https://example.com/video.mp4", "Caption");
// Responder com áudio
$wa->message->replyAudio("ORIGINAL_MSG_ID", $to, "https://example.com/audio.mp3");
// Responder com documento
$wa->message->replyDocument("ORIGINAL_MSG_ID", $to, "https://example.com/file.pdf", "application/pdf", "file.pdf", "Caption");
// Responder com contato
$wa->message->replyContact("ORIGINAL_MSG_ID", $to, "Raphael", "559999999999", "api-wa.me");
// Responder com localização
$wa->message->replyLocation("ORIGINAL_MSG_ID", $to, 37.7749, -122.4194, "San Francisco, CA");Responder com Botões e Pix
// Responder com botões de resposta
$wa->message->replyButtonReply("ORIGINAL_MSG_ID", [
'to' => $to,
'header' => ['title' => 'Choose'],
'text' => 'What do you prefer?',
'buttons' => [
['type' => 'quick_reply', 'id' => '1', 'text' => 'Yes'],
['type' => 'quick_reply', 'id' => '2', 'text' => 'No'],
],
]);
// Responder com botões de ação
$wa->message->replyButtonAction("ORIGINAL_MSG_ID", [
'to' => $to,
'header' => ['title' => 'Actions'],
'text' => 'Choose an action',
'buttons' => [
['type' => 'cta_url', 'url' => 'https://api-wa.me', 'text' => 'Visit'],
],
]);
// Responder com título
$wa->message->replyTitle("ORIGINAL_MSG_ID", $to, "Order #123", "Ready!", "Thanks");
// Responder com Pix
$wa->message->replyPix("ORIGINAL_MSG_ID", [ /* body array */ ]);Presença (digitando...)
$wa->message->sendPresence($to, "composing");
// Opções: unavailable, available, composing, recording, pausedMensagem com Título
$wa->message->sendTitle($to, "Order #123", "Your order is ready", "Thank you!");Botões de Resposta
Envie mensagens com botões de resposta rápida:
$wa->message->sendButtonReply([
'to' => $to,
'header' => ['title' => 'Choose an option'],
'text' => 'What do you prefer?',
'footer' => 'Select one',
'buttons' => [
['type' => 'quick_reply', 'id' => '1', 'text' => 'Yes'],
['type' => 'quick_reply', 'id' => '2', 'text' => 'No'],
],
]);Com Imagem no Header
$wa->message->sendButtonReply([
'to' => $to,
'header' => [
'title' => 'Check this out',
'hasMediaAttachment' => true,
'imageMessage' => ['url' => 'https://example.com/photo.jpg'],
],
'text' => 'What do you think?',
'buttons' => [
['type' => 'quick_reply', 'id' => '1', 'text' => 'Like'],
['type' => 'quick_reply', 'id' => '2', 'text' => 'Dislike'],
],
]);Botões de Ação (URL, Call, Copy)
Envie botões com ações como abrir URL, ligar ou copiar código:
$wa->message->sendButtonAction([
'to' => $to,
'header' => ['title' => 'Actions'],
'text' => 'Choose an action',
'footer' => 'Select one',
'buttons' => [
['type' => 'cta_url', 'url' => 'https://api-wa.me', 'text' => 'Visit website'],
['type' => 'cta_call', 'phone_number' => '+559999999999', 'text' => 'Call us'],
['type' => 'cta_copy', 'copy_code' => 'PROMO2025', 'text' => 'Copy code'],
],
]);Enquete / Poll
// Survey
$wa->message->sendSurvey($to, "Do you like PHP?", ["Yes", "No"]);
// Poll com selectableCount
$wa->message->sendPoll($to, "Favorite language?", ["PHP", "TypeScript", "Go"], 1);Cobrança via Pix
Envie cobranças via Pix com itens detalhados:
$wa->message->sendPix([
'to' => $to,
'title' => 'Pizza Order',
'text' => 'Your order details',
'referenceId' => 'order-123',
'code' => '0020101021226700014br.gov.bcb.pix',
'key' => '23711695000115',
'merchantName' => 'MY STORE',
'keyType' => 'CNPJ',
'items' => [
['id' => '1', 'name' => 'Pizza G', 'price' => 45, 'quantity' => 2],
['id' => '2', 'name' => 'Soda', 'price' => 8, 'quantity' => 2],
],
'subtotal' => '106',
'totalAmount' => '106',
]);Evento, Pin e Call Link
Criar Evento
$wa->message->sendEvent(
$to,
"Team Meeting",
"Weekly sync",
"2025-01-15T14:00:00Z",
"Office",
"123 Main St"
);Fixar / Desfixar Mensagem
$wa->message->pin("MESSAGE_ID", 604800); // 7 dias em segundos
$wa->message->unpin("MESSAGE_ID");Link de Chamada
// Enviar link de chamada
$wa->message->sendCallLink($to, "video", "Join the meeting");
// Criar link de chamada (sem enviar)
$wa->message->createCallLink("video");Detalhes, Mídia e Outros
// Detalhes de uma mensagem
$details = $wa->message->getDetails("MESSAGE_ID");
// Download de mídia de uma mensagem
$media = $wa->message->downloadMedia("MESSAGE_ID", "json"); // json (base64) ou binaryEnviar Produto do Catálogo
$wa->message->sendProduct([
'to' => $to,
'businessOwnerJid' => '559999999999@s.whatsapp.net',
'productId' => 'product_id',
'catalogId' => 'catalog_id',
'body' => 'Confira este produto!',
'footer' => 'WAME Store',
]);Enviar Convite de Grupo
$wa->message->sendGroupInvite([
'to' => $to,
'groupJid' => '123456789@g.us',
'groupName' => 'Developers',
'inviteCode' => 'INVITE_CODE',
'caption' => 'Entre no nosso grupo!',
]);Solicitar Telefone
$wa->message->requestPhone($to);Gerenciar Chats
$chats = $wa->chat->getAll();
$msgs = $wa->chat->getMessages("559999999999@s.whatsapp.net", 1, 20);
// Marcar como lido
$wa->chat->modify("559999999999@s.whatsapp.net", "markRead", true);
// Fixar chat
$wa->chat->modify("559999999999@s.whatsapp.net", "pin", true);
// Deletar chat
$wa->chat->delete("559999999999@s.whatsapp.net");Presença, Mensagens Temporárias e Privacidade
// Inscrever-se para receber atualizações de presença
$wa->chat->subscribePresence("559999999999@s.whatsapp.net");
// Ativar mensagens temporárias
$wa->chat->setDisappearing("559999999999@s.whatsapp.net", 604800); // 7 dias
// Consultar configurações de privacidade
$privacy = $wa->chat->getPrivacy();Chamadas
// Fazer chamada
$wa->call->make($to);
// Aceitar chamada
$wa->call->accept("CALL_ID", "559999999999@s.whatsapp.net");
// Rejeitar chamada
$wa->call->reject("CALL_ID", "559999999999@s.whatsapp.net");
// Encerrar chamada
$wa->call->end("CALL_ID", "559999999999@s.whatsapp.net");Etiquetas / Labels
$labels = $wa->label->list();
$wa->label->create("VIP");
$wa->label->addToChat("label_id", $to);
$labeled = $wa->label->getChats("label_id");
$wa->label->removeFromChat("label_id", $to);
// Deletar etiqueta
$wa->label->delete("label_id");Contatos
$contacts = $wa->contact->list();
$profile = $wa->contact->getProfile("559999999999");
// Adicionar e remover contato
$wa->contact->add("559999999999", "Raphael");
$wa->contact->remove("559999999999");
// Bloquear / Desbloquear
$wa->contact->block("559999999999");
$wa->contact->unblock("559999999999");
// Listar contatos bloqueados
$blocked = $wa->contact->listBlocked();
// Status e sessão
$status = $wa->contact->getStatus("559999999999");
$wa->contact->clearSession("559999999999");
// Resolver LIDs
$wa->contact->resolveLids(["lid1", "lid2"]);
// Verificar se está registrado no WhatsApp
$check = $wa->contact->isRegistered("559999999999");Grupos
$groups = $wa->group->list();
$info = $wa->group->get("123456789@g.us");
// Criar grupo
$newGroup = $wa->group->create("Developers", ["559999999999"]);
// Atualizar grupo
$wa->group->update("123456789@g.us", "New Name", "New description");Configurações do Grupo
$wa->group->changeSettings("123456789@g.us", "announcement"); // Somente admins enviam
$wa->group->changeSettings("123456789@g.us", "not_announcement"); // Todos enviam
$wa->group->changeSettings("123456789@g.us", "locked"); // Somente admins editam
$wa->group->changeSettings("123456789@g.us", "unlocked"); // Todos editamParticipantes
$wa->group->addParticipants("123456789@g.us", ["559999999999"]);
$wa->group->removeParticipants("123456789@g.us", ["559999999999"]);
// Promover / Rebaixar
$wa->group->promote("123456789@g.us", ["559999999999"]);
$wa->group->demote("123456789@g.us", ["559999999999"]);
// Aprovação de participantes
$pending = $wa->group->getRequestParticipants("123456789@g.us");
$wa->group->handleRequestParticipants("123456789@g.us", ["559999999999"], "approve");Membros e Convites
$members = $wa->group->getMembers("123456789@g.us");
$invite = $wa->group->getInviteCode("123456789@g.us");
$inviteInfo = $wa->group->getInviteInfo("INVITE_CODE");Outros
$wa->group->updatePicture("123456789@g.us", "https://example.com/photo.jpg");
$wa->group->removePicture("123456789@g.us");
$wa->group->leave("123456789@g.us");Comunidade
$communities = $wa->community->list();
$newComm = $wa->community->create("My Community", "Tech");
$commInfo = $wa->community->get("community_id");
$wa->community->update("community_id", "Updated", "New description");
$wa->community->updatePicture("community_id", "https://example.com/photo.jpg");
$commInvite = $wa->community->getInviteCode("community_id");
$wa->community->removeParticipants("community_id", ["559999999999"]);
$wa->community->leave("community_id");Convites e Aprovação
// Aceitar convite de comunidade
$wa->community->acceptInvite("INVITE_CODE");
// Informações de convite
$inviteInfo = $wa->community->getInviteInfo("INVITE_CODE");
// Participantes pendentes de aprovação
$pending = $wa->community->getRequestParticipants("community_id");
$wa->community->handleRequestParticipants("community_id", ["559999999999"], "approve");Grupos e Configurações
// Criar grupo dentro da comunidade
$wa->community->createGroup("community_id", "Novo Grupo", ["559999999999"]);
// Mensagens temporárias
$wa->community->setEphemeral("community_id", 604800);
// Configurações da comunidade
$wa->community->updateSettings("community_id", "announcement");
$wa->community->setMemberAddMode("community_id", "admin_add");
$wa->community->setJoinApproval("community_id", "on");Business / Catálogo
// Listar catálogo
$catalog = $wa->business->listCatalog();
$catalogPage = $wa->business->listCatalog(10, "cursor_token");
// Criar produto
$wa->business->createProduct([
'name' => 'Premium T-Shirt',
'description' => '100% cotton',
'originCountryCode' => 'BR',
'currency' => 'BRL',
'price' => 79.90,
'images' => [['url' => 'https://example.com/photo.jpg']],
]);
// Atualizar produto
$wa->business->updateProduct("product_id", [
'name' => 'Premium T-Shirt v2',
'price' => 89.90,
]);
// Deletar produto
$wa->business->deleteProduct("product_id");Status / Stories
Publique e gerencie status (stories) do WhatsApp:
Texto
$wa->status->sendText("Olá! Este é meu status.", ["559999999999@s.whatsapp.net"]);
// Segundo parâmetro opcional: limitar quem vê. Vazio = todos.Imagem
$wa->status->sendImage("https://example.com/photo.jpg", "Minha foto");Vídeo
$wa->status->sendVideo("https://example.com/video.mp4", "Meu vídeo");Áudio
$wa->status->sendAudio("https://example.com/audio.mp3");Menção
$wa->status->sendMention("559999999999@s.whatsapp.net", "STATUS_MSG_ID");Webhook Parser
O SDK PHP inclui um parser de webhooks integrado para processar eventos recebidos:
$parsed = $wa->webhook->parse();
if ($parsed && $parsed->messageType === 'text') {
$wa->message->sendText($parsed->remoteJid, 'Você disse: ' . $parsed->text);
}
if ($parsed && $parsed->messageType === 'image') {
$url = $parsed->mediaURL;
$base64 = $parsed->mediaBase64;
$caption = $parsed->caption ?? '';
}Propriedades do Webhook
| Propriedade | Tipo | Descrição |
|---|---|---|
| remoteJid | string | Número do remetente |
| msgId | string | ID da mensagem |
| pushName | string | Nome do remetente |
| messageType | string | text, image, audio, video, document, sticker, location, contact, button, list, reaction |
| text | string | Conteúdo de texto |
| mediaURL | string | URL de download de mídia |
| mediaBase64 | string | Mídia em Base64 |
| caption | string | Legenda da mídia |
| selectedId | string | ID do botão/lista selecionado |
| contact | array | Array de contatos com name e number |
Contexto para AI
Use este arquivo de contexto para que assistentes de AI (Claude, ChatGPT, Copilot, etc.) entendam o SDK e possam te ajudar a programar com a WAME API.
llms.txt
Arquivo com toda a documentação do SDK PHP em formato otimizado para AI. Inclui estrutura, métodos, parâmetros e exemplos.
Como usar
Dica: No Claude Code ou Cursor, salve o arquivo no seu projeto como AGENTS.md ou CLAUDE.md para que a AI tenha o contexto automaticamente.
Tratamento de Erros
Todos os métodos retornam ?string (JSON) ou null em caso de falha:
$result = $wa->message->sendText($to, "Hello");
if ($result) {
$data = json_decode($result);
echo "Mensagem enviada! ID: " . $data->data->key->id;
} else {
echo "Erro ao enviar mensagem.";
}WAME API SDK PHP — Documentação
Começar Agora