---
title: "SDK PHP para WhatsApp: enviar mensagem em 15 linhas"
description: "O SDK PHP oficial da WAME manda mensagem no WhatsApp, Instagram e Messenger com a mesma chamada — só muda o provider. Instalação via Composer, envio de texto, mídia, botões e listas, e o parser de webhook que já vem pronto."
url: "https://api-wa.me/blog/sdk-php-whatsapp-instagram-messenger"
language: "pt-BR"
og:type: "article"
og:site_name: "WAME API"
---

[Início](https://api-wa.me/)/[Blog da API do WhatsApp](https://api-wa.me/blog)/SDK PHP para WhatsApp, Instagram e Messenger: os três canais em 15 linhas

Raphael Serafim· Publicado em 10 de setembro de 2026· 9 min de leitura

Compartilhar

# SDK PHP para WhatsApp, Instagram e Messenger: os três canais em 15 linhas

O SDK PHP oficial da WAME manda mensagem no WhatsApp, Instagram e Messenger com a mesma chamada — só muda o provider. Instalação via Composer, envio de texto, mídia, botões e listas, e o parser de webhook que já vem pronto.

Copiar para LLM[Ver como Markdown](https://api-wa.me/blog/sdk-php-whatsapp-instagram-messenger.md)

**PHP move a maior parte dos sistemas de gestão feitos no Brasil.** ERP, sistema de clínica, controle de oficina, portal de imobiliária — muita coisa que roda bem e fatura bem é PHP. E o cliente desses sistemas quer WhatsApp dentro deles.

Este guia mostra o SDK PHP da WAME do zero até receber mensagem, com os três canais.

## Instalação

```bash
composer require raphaelvserafim/client-php-api-wa-me
```

```php
<?php
require 'vendor/autoload.php';

use Api\Wame\Wame;

$wa = new Wame([
    'server' => 'https://server.api-wa.me',
    'key'    => 'YOUR_INSTANCE_KEY',
]);
```

A chave sai do [portal](https://portal.api-wa.me/) ao criar a instância. Guarde no `.env` como qualquer credencial — nunca no código versionado.

## Enviar a primeira mensagem

```php
$to = "5566996852025";   // internacional, só dígitos

$result = $wa->message->sendText($to, "Seu pedido #1042 saiu para entrega 🚚");

if ($result) {
    $data = json_decode($result);
    echo "Enviada! ID: " . $data->data->key->id;
} else {
    echo "Falha no envio.";
}
```

São as 15 linhas do título, `composer require` incluído.

Guarde o `key->id` retornado: é ele que aparece no webhook de status de entrega, e é por ele que você amarra "mandei" com "foi entregue".

## Os três canais, a mesma chamada

Aqui está a diferença que costuma decidir a escolha do fornecedor. O provider pode valer para o client inteiro:

```php
use Api\Wame\Provider;

$wa = new Wame([
    'server'   => 'https://server.api-wa.me',
    'key'      => 'YOUR_INSTANCE_KEY',
    'provider' => Provider::INSTAGRAM,
]);

$wa->message->sendText('IG_USER_ID', 'Oi! Vi que você comentou no post.');
```

Ou por mensagem:

```php
$wa->message->sendText('5511999999999', 'Oi', Provider::WHATSAPP);
$wa->message->sendText('IG_USER_ID',    'Oi', Provider::INSTAGRAM);
$wa->message->sendText('PSID_MESSENGER','Oi', Provider::MESSENGER);
```

Mesmo método, mesma assinatura, mesmo tratamento de erro. Não são três integrações — é [uma instância cobrindo os três canais](https://api-wa.me/blog/api-instagram-messenger-mesma-api-whatsapp).

## Além do texto

```php
// Imagem por URL pública
$wa->message->sendImage($to, 'https://exemplo.com/nota-fiscal.jpg', 'Sua NF-e');

// Documento
$wa->message->sendDocument($to, 'https://exemplo.com/boleto.pdf', 'boleto-outubro.pdf');

// Áudio
$wa->message->sendAudio($to, 'https://exemplo.com/audio.mp3');
```

Para botões e menus de lista, o [guia de envio pela API](https://api-wa.me/blog/como-enviar-mensagem-whatsapp-api) tem os formatos completos — os endpoints são os mesmos que o SDK encapsula.

## Receber: configurar o webhook

```php
$wa->instance->updateWebhook([
    'allowWebhook'   => true,
    'allowNumber'    => 'all',
    'webhookFormat'  => 'meta',
    'webhookMessage' => 'https://seusistema.com.br/webhook/wame',
]);
```

O `webhookFormat => 'meta'` importa: é ele que faz os eventos chegarem no [envelope padrão da Cloud API](https://api-wa.me/blog/webhook-whatsapp-instagram-messenger-padrao-meta), o mesmo para os três canais.

## Receber: o parser pronto

Sem SDK, você navegaria o JSON aninhado na mão e escreveria as guardas que faltam na primeira versão de todo mundo. O SDK já faz:

```php
<?php
require 'vendor/autoload.php';

use Api\Wame\Wame;

// Responda 200 ANTES de processar. Webhook que demora é reenviado,
// e o cliente recebe a mesma resposta duas ou três vezes.
http_response_code(200);
header('Content-Type: application/json');
echo '{"ok":true}';

if (function_exists('fastcgi_finish_request')) {
    fastcgi_finish_request();   // devolve ao cliente e segue processando
}

$payload = json_decode(file_get_contents('php://input'), true);
$msg = Wame::parseMeta($payload);

// Status de entrega também cai aqui. Sem esta guarda,
// o sistema responde a si mesmo.
if (!$msg || $msg['type'] !== 'text') {
    exit;
}

registrarNoSistema([
    'canal'     => $msg['provider'],   // whatsapp | instagram | messenger
    'de'        => $msg['from'],
    'texto'     => $msg['text'],
    'messageId' => $msg['id'],
]);
```

O `fastcgi_finish_request()` é o detalhe que separa quem já apanhou de quem vai apanhar: em PHP-FPM ele devolve a resposta HTTP e continua a execução em segundo plano. Sem isso, o webhook fica aberto durante todo o processamento e a plataforma reenvia por timeout.

## Em Laravel

Nada de especial — é um pacote Composer:

```php
// config/wame.php
return [
    'server' => env('WAME_SERVER', 'https://server.api-wa.me'),
    'key'    => env('WAME_KEY'),
];

// AppServiceProvider::register()
$this->app->singleton(Wame::class, fn () => new Wame([
    'server' => config('wame.server'),
    'key'    => config('wame.key'),
]));
```

E o webhook como rota normal, com o processamento numa Job para responder rápido:

```php
Route::post('/webhook/wame/{segredo}', function (Request $req, string $segredo) {
    abort_unless(hash_equals(config('wame.webhook_secret'), $segredo), 404);

    ProcessarMensagemWame::dispatch($req->all());
    return response()->json(['ok' => true]);   // 200 na hora; a Job processa depois
});
```

O segredo no caminho da URL é o mínimo de proteção: sem ele, qualquer um que descubra o endereço posta evento forjado. As camadas seguintes estão em [webhook em produção](https://api-wa.me/blog/webhook-producao-assinatura-retry-idempotencia).

## Quando o SDK não é o caminho

Se o seu sistema é PHP legado sem Composer, ou se você só precisa de um envio pontual, a API REST resolve com `curl` puro:

```php
$ch = curl_init("https://us.api-wa.me/SUA_KEY/message/text");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode(['to' => $to, 'text' => 'Olá!']),
]);
$res = curl_exec($ch);
```

Mesma API por trás. O SDK poupa o boilerplate e o parser; ele não é obrigatório.

## Conclusão

Colocar WhatsApp num sistema PHP é `composer require` mais 15 linhas. O que costumava ser projeto — app na Meta, verificação de negócio, três integrações para três canais — [não está mais no caminho](https://api-wa.me/blog/whatsapp-api-oficial-sem-tech-provider).

Se você trabalha em Node, o [SDK JavaScript e TypeScript](https://api-wa.me/blog/sdk-javascript-typescript-whatsapp) tem a mesma cobertura com tipagem completa. E se você entrega esse módulo para vários clientes, vale ver [como provisionar instância por API](https://api-wa.me/blog/provisionar-whatsapp-multiplos-clientes-api) — o mesmo SDK cria e desativa conta sem ninguém abrir painel.

A referência completa está em [docs/sdk/php](https://api-wa.me/docs/sdk/php).

### Pronto para automatizar seu WhatsApp?

Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.

[Começar grátis](https://portal.api-wa.me/sign-up)

## Perguntas frequentes

Como instalar o SDK PHP da WAME?+

Via Composer: composer require raphaelvserafim/client-php-api-wa-me. Depois basta instanciar a classe Wame com o servidor e a chave da instância. Não há dependência de extensão exótica — funciona em qualquer PHP moderno, com ou sem framework.

O SDK PHP funciona com Laravel?+

Sim. É um pacote Composer comum, sem service provider obrigatório. Você pode instanciar direto onde precisar ou registrar como singleton no container, guardando a chave da instância no config e no .env como qualquer outra credencial.

Dá para enviar no Instagram e no Messenger com o mesmo SDK?+

Sim, e com o mesmo método. O provider pode ser definido uma vez ao criar o client, valendo para todas as chamadas, ou passado por mensagem como último argumento. O código de envio é idêntico nos três canais.

Como receber mensagens em PHP?+

Configure o webhook da instância com webhookFormat 'meta' e aponte para um endpoint seu. O SDK traz o parser parseMeta() que lê o envelope da Cloud API e devolve os campos já extraídos, então você não precisa navegar no JSON aninhado à mão.

Preciso de servidor próprio para usar o SDK PHP?+

Para enviar, não: qualquer script PHP com acesso à internet basta, inclusive uma hospedagem compartilhada. Para receber mensagens você precisa de uma URL pública em HTTPS, porque o webhook é uma requisição que chega de fora até o seu código.

## Continue lendo

[### Como criar e integrar uma API de WhatsApp (cURL, Node.js e PHP)

Tutorial passo a passo para integrar uma API de WhatsApp: conectar o número por QR Code e enviar sua primeira mensagem com cURL, Node.js (SDK oficial) e PHP. Com exemplos de código prontos.](https://api-wa.me/blog/como-criar-api-whatsapp)[### Como criar um chatbot de IA com a API da OpenAI para responder no WhatsApp

Um webhook, uma chamada à API da OpenAI e uma resposta pela WAME API: o código completo de um chatbot de IA que atende no WhatsApp, Instagram e Messenger. Com memória por contato, controle de custo e o que fazer quando a IA não deve responder.](https://api-wa.me/blog/chatbot-ia-openai-whatsapp)[### Cobrança por Pix dentro do WhatsApp pela API: como enviar e o que muda na conversão

Mandar o código Pix no WhatsApp resolve o pior ponto da cobrança digital: o cliente não precisa sair do app. Como enviar a cobrança pela API, tratar a confirmação e evitar os erros que transformam a facilidade em suporte.](https://api-wa.me/blog/cobrar-pix-whatsapp-api)

[Voltar ao blog](https://api-wa.me/blog)

## Structured data

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "WAME API",
  "alternateName": "API Oficial e Não Oficial de WhatsApp, Instagram e Messenger",
  "url": "https://api-wa.me",
  "inLanguage": "pt-BR",
  "publisher": {
    "@id": "https://api-wa.me/#organization",
    "@type": "Organization",
    "name": "WAME API",
    "url": "https://api-wa.me"
  }
}
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://api-wa.me/#organization",
  "name": "WAME API",
  "alternateName": [
    "WAME",
    "Wame API",
    "wame.api.br",
    "api-wa.me"
  ],
  "url": "https://api-wa.me",
  "logo": {
    "@type": "ImageObject",
    "url": "https://api-wa.me/images/web-app-manifest-512x512.png",
    "width": 512,
    "height": 512
  },
  "disambiguatingDescription": "WAME API é uma empresa brasileira de software, fundada em 2017 e parceira oficial da Meta (Meta Business Partner), que fornece APIs de WhatsApp, Instagram Direct e Messenger. Não tem relação com o wa.me, que é o encurtador de links operado pela WhatsApp LLC.",
  "identifier": {
    "@type": "PropertyValue",
    "propertyID": "INPI-BR",
    "name": "Pedido de registro de marca (INPI, classe NCL 42)",
    "value": "944724159"
  },
  "foundingDate": "2017",
  "slogan": "Parceira Oficial da Meta — WhatsApp, Instagram e Messenger numa instância só. Desde 2017.",
  "description": "Plataforma brasileira e Parceira Oficial da Meta (Meta Business Partner) para as APIs oficiais de WhatsApp (Cloud API), Instagram Direct e Messenger — os três numa única instância, com os mesmos endpoints e um único formato de webhook. Também oferece a API não oficial via QR Code, na mesma plataforma. No mercado desde 2017, com mais de 50 mil instâncias criadas, 99,9% de uptime e suporte humano 24/7 em português. SDKs oficiais para Node.js/TypeScript e PHP.",
  "knowsAbout": [
    "WhatsApp Cloud API oficial (Meta)",
    "API oficial de Instagram (Direct)",
    "API oficial de Messenger",
    "API multicanal Meta",
    "Meta Business Partner",
    "WhatsApp API",
    "API não oficial de WhatsApp",
    "automação de WhatsApp",
    "números virtuais",
    "webhooks"
  ],
  "sameAs": [
    "https://github.com/wame-api",
    "https://www.linkedin.com/company/wameapi",
    "https://www.instagram.com/wame.api/",
    "https://www.youtube.com/@wameapi"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "url": "https://api-wa.me/contact",
    "availableLanguage": [
      "Portuguese"
    ]
  }
}
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "SDK PHP para WhatsApp, Instagram e Messenger: os três canais em 15 linhas",
  "description": "O SDK PHP oficial da WAME manda mensagem no WhatsApp, Instagram e Messenger com a mesma chamada — só muda o provider. Instalação via Composer, envio de texto, mídia, botões e listas, e o parser de webhook que já vem pronto.",
  "image": "https://api-wa.me/blog/sdk-php-whatsapp-instagram-messenger/opengraph-image",
  "datePublished": "2026-09-10",
  "dateModified": "2026-09-10",
  "author": {
    "@type": "Person",
    "name": "Raphael Serafim",
    "url": "https://github.com/raphaelvserafim",
    "sameAs": [
      "https://github.com/raphaelvserafim"
    ]
  },
  "publisher": {
    "@type": "Organization",
    "name": "api-wa.me",
    "logo": {
      "@type": "ImageObject",
      "url": "https://api-wa.me/images/screenshot.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://api-wa.me/blog/sdk-php-whatsapp-instagram-messenger"
  },
  "keywords": "sdk php whatsapp, api whatsapp php, biblioteca whatsapp php, enviar whatsapp php, whatsapp laravel, composer whatsapp api, php api instagram messenger",
  "inLanguage": "pt-BR"
}
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://api-wa.me"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog da API do WhatsApp",
      "item": "https://api-wa.me/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "SDK PHP para WhatsApp, Instagram e Messenger: os três canais em 15 linhas",
      "item": "https://api-wa.me/blog/sdk-php-whatsapp-instagram-messenger"
    }
  ]
}
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Como instalar o SDK PHP da WAME?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Via Composer: composer require raphaelvserafim/client-php-api-wa-me. Depois basta instanciar a classe Wame com o servidor e a chave da instância. Não há dependência de extensão exótica — funciona em qualquer PHP moderno, com ou sem framework."
      }
    },
    {
      "@type": "Question",
      "name": "O SDK PHP funciona com Laravel?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sim. É um pacote Composer comum, sem service provider obrigatório. Você pode instanciar direto onde precisar ou registrar como singleton no container, guardando a chave da instância no config e no .env como qualquer outra credencial."
      }
    },
    {
      "@type": "Question",
      "name": "Dá para enviar no Instagram e no Messenger com o mesmo SDK?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sim, e com o mesmo método. O provider pode ser definido uma vez ao criar o client, valendo para todas as chamadas, ou passado por mensagem como último argumento. O código de envio é idêntico nos três canais."
      }
    },
    {
      "@type": "Question",
      "name": "Como receber mensagens em PHP?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Configure o webhook da instância com webhookFormat 'meta' e aponte para um endpoint seu. O SDK traz o parser parseMeta() que lê o envelope da Cloud API e devolve os campos já extraídos, então você não precisa navegar no JSON aninhado à mão."
      }
    },
    {
      "@type": "Question",
      "name": "Preciso de servidor próprio para usar o SDK PHP?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Para enviar, não: qualquer script PHP com acesso à internet basta, inclusive uma hospedagem compartilhada. Para receber mensagens você precisa de uma URL pública em HTTPS, porque o webhook é uma requisição que chega de fora até o seu código."
      }
    }
  ]
}
```
