Skip to content

Usando a API da ZapMe

Introdução

Como mencionado em páginas anteriores, você pode consumir a API da ZapMe de duas maneiras: manualmente, por requisições HTTP, ou utilizando uma coleção do Postman. Clique aqui caso queira acessar a coleção do Postman.

Nesta página iremos demonstrar a você como consumir a API manualmente, utilizando requisições HTTP através da linguagem PHP, considerando o uso do pacote guzzlehttp/guzzle, a biblioteca PHP mais famosa para requisições HTTP. Considere ler a documentação oficial do Guzzle para saber como utilizar a biblioteca.

TIP

Embora os exemplos abaixo sejam em PHP, você pode adaptar o código para qualquer outra linguagem de programação que suporte requisições HTTP, como Python, JavaScript, Ruby, entre outras.

Observações Importantes

Antes de começar, é importante que você saiba que:

  1. A API da ZapMe não possui "rate limite".
  2. Você deve se certificar de usar HTTPS (https://) nas requisições.

/status

Obtém um resumo geral da conta.

Requisição

php
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

$response = $client->get('/status', [
    'query' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);
php
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

$response = $client->post('/status', [
    'json' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);

Resposta

json
{
  "status": true,
  "result": "success",
  "date": "2025-06-06 13:53:49",
  "data": {
    "service": {
      "plan": "Plano Mensal",
      "duedate": "2025-01-01",
      "status": "active"
    },
    "auth": {
      "status": true,
      "authenticated_at": "2024-09-09 19:27:46",
      "phone": "5511985850202"
    }
  }
}

/messages

Obtém a lista de mensagens enviadas.

Requisição

php
use GuzzleHttp\Client;

require __DIR__ . '/vendor/autoload.php';

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

$response = $client->get('/messages', [
    'query' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
        'paginate' => true,
        'quantity' => 1,
        'page' => 1,
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);

Observações

WARNING

Quando paginate for false, a API limita o retorno em 50 mensagens.

Resposta

json
{
  "status": true,
  "result": "success",
  "date": "2025-06-06 14:00:21",
  "data": [
    {
      "id": 1353,
      "hash": "13022d3df08322edcf5b",
      "message": "Mensagem de teste",
      "phone": "5544988436253",
      "status": "message_sent",
      "created_at": "2025-04-01 08:00:03",
      "updated_at": "2025-04-01 08:00:03",
      "delivered_at": "2025-04-01 08:00:23"
    }
  ]
}

/messages/{id}

Obtém os detalhes de uma mensagem enviada.

Requisição

php
use GuzzleHttp\Client;

require __DIR__ . '/vendor/autoload.php';

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

$id = "142312";

$response = $client->get('/messages/'.$id, [
    'query' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);

Resposta

json
{
  "status": true,
  "result": "success",
  "date": "2025-06-06 14:00:21",
  "data": [
    {
      "id": "142312",
      "hash": "13022d3df08322edcf5b",
      "message": "Mensagem de teste",
      "phone": "5544988436253",
      "status": "message_sent",
      "created_at": "2025-04-01 08:00:03",
      "updated_at": "2025-04-01 08:00:03",
      "delivered_at": "2025-04-01 08:00:23"
    }
  ]
}

/messages/create

Envia uma nova mensagem.

Requisição

php
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

$response = $client->get('/messages/create', [
    'query' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
        'phone' => 'TELEFONE_DESTINO',
        'message' => 'MENSAGEM_A_SER_ENVIADA',
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);
php
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

$response = $client->post('/messages/create', [
    'json' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
        'phone' => 'TELEFONE_DESTINO',
        'message' => 'MENSAGEM_A_SER_ENVIADA',
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);

Resposta

json
{
  "status": true,
  "result": "message_sent",
  "date": "2025-06-06 14:04:06",
  "data": "mensagem enviada"
}

Opcionalmente, você enviar anexar arquivos ao envio da mensagem:

php
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

// Exemplo usando POST
$response = $client->post('/messages/create', [
    'json' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
        'phone' => 'TELEFONE_DESTINO',
        'message' => 'MENSAGEM_A_SER_ENVIADA',
        'file_content' => base64_encode(file_get_contents('arquivo.pdf')),
        'file_extension' => 'pdf',
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);

WARNING

Os arquivos suportados são: pdf, png ou jpg em formato base64. Como o base64 de um arquivo pode ser uma string muito grande, é preferível que você utilize o método POST para o envio de mensagens com anexo de arquivos.

Além disso, você pode usar um template de mensagem criado na ZapMe:

php
require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://api.zapme.com.br/'
]);

// Exemplo usando POST
$response = $client->post('/messages/create', [
    'json' => [
        'api' => 'SUA_API',
        'secret' => 'SUA_CHAVE_SECRETA',
        'phone' => 'TELEFONE_DESTINO',
        // 'message' => 'MENSAGEM_A_SER_ENVIADA',
        'template' => "22312",
    ]
]);

$data = json_decode($response->getBody()->getContents(), true);

WARNING

Para usar um template no envio da mensagem, não envie o campo message, mas sim template com o ID do template criado na ZapMe. Caso o template possua arquivos, eles serão automaticamente anexados ao envio da mensagem.