SDK OFICIAL

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-me

Inicialização

Importe e inicialize o client:

php
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:

php
// 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

php
$wa->instance->updateSettings(
    markMessageRead: true,
    saveMedia: false,
    receiveStatusMessage: false,
    receivePresence: false,
);

Perfil

php
$wa->instance->updateProfileName("My Bot");
$wa->instance->updateProfileStatus("Online");
$wa->instance->updateProfilePicture("https://example.com/avatar.jpg");
$wa->instance->removeProfilePicture();

Proxy e MongoDB

php
$wa->instance->setProxy("http://user:pass@ip:port");
$wa->instance->addMongoDB("mongodb+srv://...", "mydb");

Conexão Mobile

php
$wa->instance->prepareMobileRegistration("55", "99999999999", "11");
$wa->instance->requestMobileCode("sms");
$wa->instance->verifyMobileCode("123456");

Webhooks

Configure webhooks para receber eventos em tempo real:

php
$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:

php
$wa->message->sendText($to, "Hello!");

Enviar Mídia

Imagem

php
$wa->message->sendImage($to, "https://example.com/photo.jpg", "Caption");

Áudio

php
$wa->message->sendAudio($to, "https://example.com/audio.mp3");

Vídeo

php
$wa->message->sendVideo($to, "https://example.com/video.mp4", "Big Buck Bunny");

Documento

php
$wa->message->sendDocument($to, "https://example.com/file.pdf", "application/pdf", "Resume.pdf", "Meu documento");

Sticker

php
$wa->message->sendSticker($to, "https://example.com/sticker.webp");

Video Note (circular)

php
$wa->message->sendVideoNote($to, "https://example.com/video.mp4");

Envio via Base64

php
$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

php
$wa->message->sendContact($to, "Raphael", "559999999999", "api-wa.me");

Múltiplos contatos

php
$wa->message->sendContacts($to, "Meus Contatos", [
    ['fullName' => 'Raphael', 'phoneNumber' => '559999999999'],
    ['fullName' => 'João', 'phoneNumber' => '559888888888', 'organization' => 'WAME'],
]);

Enviar Localização

Localização fixa

php
$wa->message->sendLocation($to, 37.7749, -122.4194, "San Francisco, CA");

Localização em tempo real

php
$wa->message->sendLiveLocation($to, 37.7749, -122.4194, "Estou aqui!");

Enviar Reação

php
$wa->message->sendReaction("👍", "MESSAGE_ID");

Responder Mensagem

O SDK PHP tem métodos dedicados para responder mensagens:

php
// 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

php
// 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...)

php
$wa->message->sendPresence($to, "composing");
// Opções: unavailable, available, composing, recording, paused

Mensagem com Título

php
$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:

php
$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

php
$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:

php
$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'],
    ],
]);

Lista / Menu

Envie menus interativos com seções e itens:

php
$wa->message->sendList([
    'to' => $to,
    'buttonText' => 'View Menu',
    'text' => 'Choose an item',
    'title' => 'Menu',
    'description' => 'Our products',
    'footer' => 'Prices may vary',
    'sections' => [
        [
            'title' => 'Pizzas',
            'rows' => [
                ['title' => 'Margherita', 'description' => 'Classic cheese pizza', 'rowId' => '1'],
                ['title' => 'Pepperoni', 'description' => 'Spicy pepperoni', 'rowId' => '2'],
            ],
        ],
        [
            'title' => 'Drinks',
            'rows' => [
                ['title' => 'Cola', 'description' => '350ml', 'rowId' => '3'],
            ],
        ],
    ],
]);

Enquete / Poll

php
// 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:

php
$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

php
$wa->message->sendEvent(
    $to,
    "Team Meeting",
    "Weekly sync",
    "2025-01-15T14:00:00Z",
    "Office",
    "123 Main St"
);

Fixar / Desfixar Mensagem

php
$wa->message->pin("MESSAGE_ID", 604800); // 7 dias em segundos
$wa->message->unpin("MESSAGE_ID");

Link de Chamada

php
// 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

php
// 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 binary

Enviar Produto do Catálogo

php
$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

php
$wa->message->sendGroupInvite([
    'to' => $to,
    'groupJid' => '123456789@g.us',
    'groupName' => 'Developers',
    'inviteCode' => 'INVITE_CODE',
    'caption' => 'Entre no nosso grupo!',
]);

Solicitar Telefone

php
$wa->message->requestPhone($to);

Gerenciar Chats

php
$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

php
// 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

php
// 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

php
$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

php
$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

php
$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

php
$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 editam

Participantes

php
$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

php
$members = $wa->group->getMembers("123456789@g.us");
$invite = $wa->group->getInviteCode("123456789@g.us");
$inviteInfo = $wa->group->getInviteInfo("INVITE_CODE");

Outros

php
$wa->group->updatePicture("123456789@g.us", "https://example.com/photo.jpg");
$wa->group->removePicture("123456789@g.us");
$wa->group->leave("123456789@g.us");

Comunidade

php
$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

php
// 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

php
// 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

php
// 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");

Newsletter / Canal

Gerencie canais/newsletters do WhatsApp:

php
// Criar newsletter
$wa->newsletter->create("Meu Canal", "Descrição do canal");

// Obter informações
$metadata = $wa->newsletter->getMetadata("invite", "NEWSLETTER_ID");
$subscribers = $wa->newsletter->getSubscribers("NEWSLETTER_ID");
$admins = $wa->newsletter->getAdmins("NEWSLETTER_ID");

// Seguir / Deixar de seguir
$wa->newsletter->follow("NEWSLETTER_ID");
$wa->newsletter->unfollow("NEWSLETTER_ID");

Atualizar Canal

php
$wa->newsletter->updateName("NEWSLETTER_ID", "Novo Nome");
$wa->newsletter->updateDescription("NEWSLETTER_ID", "Nova descrição");
$wa->newsletter->updatePicture("NEWSLETTER_ID", "https://example.com/photo.jpg");
$wa->newsletter->removePicture("NEWSLETTER_ID");

Administração

php
// Transferir propriedade
$wa->newsletter->transferOwnership("NEWSLETTER_ID", "559999999999@s.whatsapp.net");

// Rebaixar admin
$wa->newsletter->demoteAdmin("NEWSLETTER_ID", "559999999999@s.whatsapp.net");

Mensagens e Interação

php
// Listar mensagens do canal
$messages = $wa->newsletter->getMessages("NEWSLETTER_ID", 10);

// Reagir a uma mensagem
$wa->newsletter->react("NEWSLETTER_ID", "SERVER_ID", "👍");

// Silenciar / Ativar notificações
$wa->newsletter->mute("NEWSLETTER_ID");
$wa->newsletter->unmute("NEWSLETTER_ID");

// Deletar newsletter
$wa->newsletter->delete("NEWSLETTER_ID");

Status / Stories

Publique e gerencie status (stories) do WhatsApp:

Texto

php
$wa->status->sendText("Olá! Este é meu status.", ["559999999999@s.whatsapp.net"]);
// Segundo parâmetro opcional: limitar quem vê. Vazio = todos.

Imagem

php
$wa->status->sendImage("https://example.com/photo.jpg", "Minha foto");

Vídeo

php
$wa->status->sendVideo("https://example.com/video.mp4", "Meu vídeo");

Áudio

php
$wa->status->sendAudio("https://example.com/audio.mp3");

Menção

php
$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:

php
$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

PropriedadeTipoDescrição
remoteJidstringNúmero do remetente
msgIdstringID da mensagem
pushNamestringNome do remetente
messageTypestringtext, image, audio, video, document, sticker, location, contact, button, list, reaction
textstringConteúdo de texto
mediaURLstringURL de download de mídia
mediaBase64stringMídia em Base64
captionstringLegenda da mídia
selectedIdstringID do botão/lista selecionado
contactarrayArray 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

1Clique em Iniciar conversa com Claude para abrir o Claude já com o contexto do SDK
2Ou copie o conteúdo e cole no início da conversa com seu assistente de AI preferido
3Peça para a AI te ajudar a construir integrações com a WAME API

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:

php
$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