Pular para o conteúdo
Nigora Zap API

    Entrar Criar conta

    Enviar uma mensagem de WhatsApp com PHP

    Ao final, você terá um script PHP que envia uma mensagem de texto pela Nigora Zap API e mostra a resposta.

    • Uma instância conectada. Se ainda não conectou, veja Conexão.
    • O ID e o token da instância, como em Primeiros passos.
    • PHP 8 ou mais novo, com a extensão cURL ligada. Confira com php -m.

    Não escreva o token no código. Leia-o de variáveis de ambiente:

    Terminal window
    export NIGORA_INSTANCIA_ID="cole-aqui-o-id-da-instancia"
    export NIGORA_TOKEN="cole-aqui-o-token"

    Salve como enviar.php:

    <?php
    $instanciaId = getenv('NIGORA_INSTANCIA_ID');
    $token = getenv('NIGORA_TOKEN');
    if (!$instanciaId || !$token) {
    fwrite(STDERR, "Defina NIGORA_INSTANCIA_ID e NIGORA_TOKEN.\n");
    exit(1);
    }
    $url = "https://api.zap.nigora.com.br/v1/instances/{$instanciaId}/messages/text";
    $corpo = json_encode([
    'to' => '5511999999999',
    'text' => 'Olá! Esta mensagem saiu pela API.',
    ], JSON_UNESCAPED_UNICODE);
    $curl = curl_init($url);
    curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $corpo,
    CURLOPT_HTTPHEADER => [
    "Authorization: Bearer {$token}",
    'Content-Type: application/json',
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 15,
    ]);
    $resposta = curl_exec($curl);
    if ($resposta === false) {
    fwrite(STDERR, 'Falha de rede: ' . curl_error($curl) . "\n");
    exit(1);
    }
    $status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
    curl_close($curl);
    echo "Status HTTP: {$status}\n{$resposta}\n";
    exit($status < 300 ? 0 : 1);

    Troque 5511999999999 pelo telefone de quem vai receber, com DDI e DDD. A API ignora tudo que não for dígito e acrescenta o 55 quando o número tem 10 ou 11 dígitos.

    Terminal window
    php enviar.php

    Resultado esperado:

    Status HTTP: 202
    {"id":"…","status":"queued"}

    O 202 quer dizer que a mensagem entrou na fila. Ela ainda não foi entregue. Guarde o id: é com ele que você liga a resposta aos eventos message.sent e message.status, que chegam por webhook.

    Status Código O que fazer
    400 invalid_phone Corrija o telefone: ele precisa ter 12 ou 13 dígitos com o 55
    401 invalid_token Confira o token e o ID da instância
    402 instance_suspended A instância está suspensa ou com pagamento pendente
    422 contact_opted_out O contato pediu para não receber mensagens