Whatsapp API Documentação

Documentação completa


REST API permite receber e enviar mensagens através de uma conta do WhatsApp. Registar a sua conta do WhatsApp API

Parâmetros em solicitações GET transmite pelo query string. Parâmetros em solicitações POST transmite pelo JSON-encoded. O token de autorização é sempre transmitido pelo query string (?token=xxxxxx).

Para cada solicitação, você precisa adicionar um token no GET parâmetro token.

API WhatsApp funciona com base no protocolo WhatsApp WEB e elimina o banimento ao usar bibliotecas do mgp25 e similares. Apesar disso, sua conta pode ser banida pelo sistema anti-spam do WhatsApp após vários cliques do botão "no spam".

Guias para construir um bot Whatsapp em PHP ou em Python

GET /status

Obter o status da conta e o código QR para autorização. A nova autorização é necessária apenas no caso de alterar o dispositivo ou pressionar manualmente "Sair de todos os dispositivos" no telefone. Mantenha o aplicativo WhastsApp aberto durante o login.

.
init este é o status inicial
loading download, repita depois de 30 segundos
got qr code Há um código QR e você precisa tirar uma foto dele no aplicativo Whatsapp acessando Menu> WhatsApp Web> Adicionar. O código QR é válido por um minuto. Um exemplo de exibição de imagens base64 em uma página. .
Manualmente é mais fácil obter a imagem de um código QR
authenticated autorização aprovada com sucesso
Exemplo de resposta:
{
    "accountStatus": "got qr code",
    "qrCode": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ....."
}

GET /qr_code

Link direto para o QR-code em forma de uma imagem, não como base64.

POST /group

Crie um grupo e envie uma mensagem para o grupo criado. Se o host do iPhone, a presença de todos na lista de contatos é necessária.

O grupo será adicionado à fila de envio e, mais cedo ou mais tarde é criado, mesmo se o telefone estiver desligado da internet ou a falha da autorização.

Atualizado em 2 de outubro de 2018: parâmetro chatId será preenchido se for criado um grupo em seu telefone dentro de 20 segundos.

Parâmetros:
groupName Nome do grupo, string, obrigatório.
phones Um conjunto de números de telefone, começando com o código do país. Você não precisa adicionar seu número.
USA example: ['17472822486'].
messageText Texto da mensagem, string
Exemplo de solicitação:
{
    "phones": ["17472822486","79680565372"],
    "messageText": "Safari is the new IE",
    "groupName": "Browsers",
}

POST /sendMessage

Enviando uma mensagem para um bate-papo novo ou existente. A mensagem será adicionada à fila de envio e entregue, mesmo que o telefone esteja desconectado da Internet ou ou a falha da autorização.

Apenas um dos dois parâmetros é necessário para determinar o destino - chatId ou phone.

Parâmetros:
phone Obrigatório se não especificado chatId Número de telefone que começa com o código do país.
USA example: 17472822486.
chatId Obrigatório se não especificado phone ID de bate-papo da lista de mensagens. Exemplos: 79633123456@c.us para mensagens privadas e 79680561234-1479621234@g.us para o grupo. Usado em vez do parâmetro phone
body Obrigatório Texto da mensagem, qualquer string incluindo emoji 🍏
Request examples:
{
    "phone": "17472822486",
    "body": "Hello, world! 🍏"
}
{
    "chatId": "17472822486@c.us",
    "body": "Hello, world!"
}
Server response example:
{
    "sent": true,
    "message": "ok"
}

POST /sendFile

Enviar um arquivo para um bate-papo novo ou existente. A mensagem será adicionada à fila de envio e entregue, mesmo que o telefone esteja desconectado da Internet ou a autorização não seja concluída.

Apenas um dos dois parâmetros é necessário para determinar o destino - chatId ou phone.

Request parameters:
phone Obrigatório se não especificado chatId Ver POST /sendMessage
chatId Obrigatório se não especificado phone Ver POST /sendMessage
body Obrigatório Link para o arquivo, por exemplo https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg
Ou um arquivo em base64, por exemplo data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...
Ou arquivo no campo do formulário
filename Obrigatório O nome do arquivo que será enviado, por exemplo 1.jpg ou hello.xlsx
caption Não obrigatório Texto sob a foto
Request examples:
{
    "chatId": "17472822486@c.us",
    "body": "https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg",
    "filename": "cover.jpg"
}
{
    "phone": "17472822486",
    "body": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkI3OEY5RkZENjkwQjExRTg4NENBQjE1QkFGNzEzOEQ5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkI3OEY5RkZFNjkwQjExRTg4NENBQjE1QkFGNzEzOEQ5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Qjc4RjlGRkI2OTBCMTFFODg0Q0FCMTVCQUY3MTM4RDkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc4RjlGRkM2OTBCMTFFODg0Q0FCMTVCQUY3MTM4RDkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz60+8CVAAAADFBMVEX/zc2ampr/ZmYwMDB/wIlPAAAAGUlEQVR42mJgZmQAQkYGBgYmJiYwwQgQYAAAzQAVpgHCIgAAAABJRU5ErkJggg==",
    "filename": "4x4pixel.jpg"
}
Server response example:
{
    "sent": true,
    "message": "ok"
}

GET /messages

Obter uma lista de mensagens. Para obter apenas mensagens novas transmita um parâmetro lastMessageNumber da última solicitação.

Os arquivos das mensagens têm a garantia de serem armazenados por apenas 10 dias e podem ser excluídos. Faça o download de arquivos de uma só vez, quando receber em seu servidor.

Parâmetros:
lastMessageNumber Parâmetro lastMessageNumber da última solicitação
last Mostra as últimas 100 mensagens. Se este parâmetro for transmitido, lastMessageNumber será ignorado.
Exemplo de resposta:
// GET /messages?lastMessageNumber=99:
{
    "messages:" [{
        //unique id
        "id": "false_17472822486@c.us_DF38E6A25B42CC8CCE57EC40F",
        //text message for type "chat" or link to download the file for "ptt", "image", "audio" and "document"
        "body": "Ok!",
        //type of the message - "chat" - text, "image" - image, "ptt" - voice, "document" - text document, "audio" - audio file, "call_log" - call
        "type": "chat",
        //Sender name
        "senderName": "Ilya",
        //true - outgoing, false - incoming
        "fromMe": true,
        //Author ID of the message, useful for groups
        "author": "17472822486@c.us",
        //send time, unix timestamp
        "time": 1504208593,
        //chat ID
        "chatId": "17472822486@c.us",
        //sequence number of the message in the database
        "messageNumber": 100
    }, {
        //...
    }],
    "lastMessageNumber": 199 //next query should be /messages?lastMessageNumber=199
}

POST /webhook

Define o URL para receber notificações do webhook sobre as novas mensagens e o status da entrega das mensagens de saída (ack).

Parâmetros:
webhookUrl Http ou https URL для получения оповещений. para receber alertas. Para testes, recomendamos o uso de requestb.in.
Exemplo de resposta:
{
    "set": true,
    "webhookUrl": "https://requestb.in/1f9aj261"
}
Exemplo de notificação de webhook:

{ // It has the same JSON payload as /messages has
  // Sending to POST JSON body
    "messages": [{
        //unique id
        "id": "false_17472822486@c.us_DF38E6A25B42CC8CCE57EC40F",
        //text message for type "chat" or link to download the file for "ptt", "image", "audio" and "document"
        "body": "Ok!",
        //type of the message - "chat" - text, "image" - image, "ptt" - voice, "document" - text document, "audio" - audio file, "call_log" - call
        "type": "chat",
        //Sender name
        "senderName": "Ilya",
        //true - outgoing, false - incoming
        "fromMe": true,
        //Author ID of the message, useful for groups
        "author": "17472822486@c.us",
        //send time, unix timestamp
        "time": 1504208593,
        //chat ID
        "chatId": "17472822486@c.us",
        //sequence number of the message in the database
        "messageNumber": 100
    }, {
        //...
    }],
    "ack": [{//message delivered
        "id": "false_17472822486@c.us_DF38E6A25B42CC8CCE57EC40F",
        "queueNumber": 100
        "chatId": "17472822486@c.us",
        "status": "delivered",
    },{//message viewed
        "id": "false_17472822486@c.us_DF38E6A25B42CC8CCE57EC40F",
        "queueNumber": 100
        "chatId": "17472822486@c.us",
        "status": "viewed",
    }, {
        //...
    }],
}

GET /webhook

Retorna o atual webhook url.

Server response example:
{
    "set": true,
    "webhookUrl": "https://requestb.in/1f9aj261"
}

POST /settings/ackNotificationsOn

Ativar ou desativar o recebimento de notificações de entrega e ler as mensagens enviadas ack no webhook. O método GET no mesmo endereço também funciona.

Parâmetros
ackNotificationsOn 1 (true) or 0 (false) .

GET /logout

Sair de sua conta e solicitar um novo código QR.

Exemplo de resposta:
{
    "result": "Logout request sent to WhatsApp"
}

GET /reboot

Recarregue sua instância do WhatsApp.

Exemplo de resposta:
{
    "success": true
}

GET /showMessagesQueue

Mostrar uma lista de mensagens que estão na fila para envio, mas ainda não enviadas.

Exemplo de resposta:
{
   "totalMessages":2,
   "first100":[
      {
         "id":1,
         "body":"Hey!",
         "type":"text",
         "chatId":"79600005372@c.us",
         "last_try":1528320463436,
         "metadata":"{}"
      },
   ]
}

GET /clearMessagesQueue

Limpar a fila de envio de mensagens. Esse método é necessário quando você envia aleatoriamente milhares de mensagens seguidas.

Exemplo de resposta:
{
   "message":"Cleared 2 messages",
   "messageTextsExample":[
      "Hello world",
      "Hello world"
   ]
}