API de WhatsApp (device-based): POST /whatsapp/{action}.
Exige Authorization: Bearer + header DeviceToken.
client = ApiBrasil.new(bearer_token: "...", device_token: "...")
# inicia a sessão do device (os webhooks são opcionais)
{:ok, _envelope} =
ApiBrasil.Messaging.WhatsApp.start(client, %{
"webhook_wh_message" => "https://exemplo.com/hook"
})
# QR Code de pareamento — o base64 vem em `response.qrcode`
{:ok, qr} = ApiBrasil.Messaging.WhatsApp.qrcode(client)
ApiBrasil.Core.DeviceResponse.response(qr)
{:ok, _envelope} =
ApiBrasil.Messaging.WhatsApp.send_text(client, %{
"number" => "5511999999999",
"text" => "Olá!"
})
# qualquer action do catálogo, e a mesma action por fila
ApiBrasil.Messaging.WhatsApp.request(client, "getAllChats")
ApiBrasil.Messaging.WhatsApp.queue(client, "sendText", %{
"number" => "5511999999999",
"text" => "por fila"
})As actions conhecidas estão em
ApiBrasil.Generated.Catalog.service_actions("whatsapp"); a documentação
completa fica em https://doc.apibrasil.io.
Summary
Functions
Verifica se um número tem WhatsApp: POST /whatsapp/checkNumberStatus.
Como check_number_status/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Fecha o navegador/sessão no servidor: POST /whatsapp/close.
Como close/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Apaga a sessão no servidor: POST /whatsapp/deleteSession.
Como delete_session/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Lista as conversas do device: POST /whatsapp/getAllChats.
Como get_all_chats/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Lista os contatos do device: POST /whatsapp/getAllContacts.
Como get_all_contacts/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Lista os grupos do device: POST /whatsapp/getAllGroups.
Como get_all_groups/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Status da conexão do device: POST /whatsapp/getConnectionStatus.
Como get_connection_status/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Foto de perfil de um número: POST /whatsapp/getProfilePic.
Como get_profile_pic/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Encerra a sessão: POST /whatsapp/logout.
Como logout/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
QR Code de pareamento em base64: POST /whatsapp/qrcode.
Como qrcode/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Executa a action de forma assíncrona, por fila: POST /whatsapp/{action}/queue.
Como queue/4, mas levanta ApiBrasil.Core.Error em caso de falha.
Executa qualquer action do serviço: POST /whatsapp/{action}.
Como request/4, mas levanta ApiBrasil.Core.Error em caso de falha.
Reinicia a sessão do device: POST /whatsapp/restartSession.
Como restart_session/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia áudio por URL: POST /whatsapp/sendAudio.
Como send_audio/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma mensagem com botões: POST /whatsapp/sendButtons.
Como send_buttons/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia um contato: POST /whatsapp/sendContact.
Como send_contact/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia um arquivo em base64: POST /whatsapp/sendFile64.
Como send_file64/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia um arquivo a partir de uma URL (number, path): POST /whatsapp/sendFile.
Como send_file/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia um GIF: POST /whatsapp/sendGif.
Como send_gif/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Publica uma imagem no status: POST /whatsapp/sendImageToStorie.
Como send_image_to_storie/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia um link com preview: POST /whatsapp/sendLink.
Como send_link/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma mensagem de lista: POST /whatsapp/sendList.
Como send_list/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma localização (number, lat, lng): POST /whatsapp/sendLocation.
Como send_location/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma chave PIX: POST /whatsapp/sendPixKey.
Como send_pix_key/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma enquete: POST /whatsapp/sendPollMessage.
Como send_poll_message/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma figurinha: POST /whatsapp/sendSticker.
Como send_sticker/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia uma mensagem de texto: POST /whatsapp/sendText.
Como send_text/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Publica um texto no status: POST /whatsapp/sendTextToStorie.
Como send_text_to_storie/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Envia um vídeo por URL: POST /whatsapp/sendVideo.
Como send_video/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Publica um vídeo no status: POST /whatsapp/sendVideoToStorie.
Como send_video_to_storie/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Serviço do gateway coberto por este módulo: whatsapp.
Inicia a sessão do device: POST /whatsapp/start.
Como start/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
Types
@type result() :: {:ok, map()} | {:error, ApiBrasil.Core.Error.t()}
Functions
@spec check_number_status(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Verifica se um número tem WhatsApp: POST /whatsapp/checkNumberStatus.
@spec check_number_status!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como check_number_status/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec close(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Fecha o navegador/sessão no servidor: POST /whatsapp/close.
@spec close!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como close/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec delete_session(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Apaga a sessão no servidor: POST /whatsapp/deleteSession.
@spec delete_session!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como delete_session/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec get_all_chats(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Lista as conversas do device: POST /whatsapp/getAllChats.
@spec get_all_chats!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como get_all_chats/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec get_all_contacts(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Lista os contatos do device: POST /whatsapp/getAllContacts.
@spec get_all_contacts!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como get_all_contacts/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec get_all_groups(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Lista os grupos do device: POST /whatsapp/getAllGroups.
@spec get_all_groups!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como get_all_groups/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec get_connection_status(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Status da conexão do device: POST /whatsapp/getConnectionStatus.
@spec get_connection_status!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como get_connection_status/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec get_profile_pic(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Foto de perfil de um número: POST /whatsapp/getProfilePic.
@spec get_profile_pic!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como get_profile_pic/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec logout(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Encerra a sessão: POST /whatsapp/logout.
@spec logout!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como logout/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec qrcode(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
QR Code de pareamento em base64: POST /whatsapp/qrcode.
@spec qrcode!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como qrcode/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec queue(ApiBrasil.Client.t(), String.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Executa a action de forma assíncrona, por fila: POST /whatsapp/{action}/queue.
@spec queue!(ApiBrasil.Client.t(), String.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como queue/4, mas levanta ApiBrasil.Core.Error em caso de falha.
@spec request(ApiBrasil.Client.t(), String.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Executa qualquer action do serviço: POST /whatsapp/{action}.
As actions conhecidas estão em
ApiBrasil.Generated.Catalog.service_actions("whatsapp"); a
documentação completa fica em https://doc.apibrasil.io.
@spec request!(ApiBrasil.Client.t(), String.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como request/4, mas levanta ApiBrasil.Core.Error em caso de falha.
@spec restart_session(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Reinicia a sessão do device: POST /whatsapp/restartSession.
@spec restart_session!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como restart_session/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_audio(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia áudio por URL: POST /whatsapp/sendAudio.
O gateway converte o arquivo para mp3 (duração máxima de 6 minutos).
@spec send_audio!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_audio/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_buttons(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma mensagem com botões: POST /whatsapp/sendButtons.
@spec send_buttons!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_buttons/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_contact(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia um contato: POST /whatsapp/sendContact.
@spec send_contact!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_contact/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_file64(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia um arquivo em base64: POST /whatsapp/sendFile64.
@spec send_file64!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_file64/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_file(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia um arquivo a partir de uma URL (number, path): POST /whatsapp/sendFile.
@spec send_file!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_file/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_gif(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia um GIF: POST /whatsapp/sendGif.
@spec send_gif!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_gif/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_image_to_storie(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Publica uma imagem no status: POST /whatsapp/sendImageToStorie.
@spec send_image_to_storie!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_image_to_storie/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_link(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia um link com preview: POST /whatsapp/sendLink.
@spec send_link!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_link/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_list(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma mensagem de lista: POST /whatsapp/sendList.
@spec send_list!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_list/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_location(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma localização (number, lat, lng): POST /whatsapp/sendLocation.
@spec send_location!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_location/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_pix_key(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma chave PIX: POST /whatsapp/sendPixKey.
@spec send_pix_key!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_pix_key/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_poll_message(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma enquete: POST /whatsapp/sendPollMessage.
@spec send_poll_message!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_poll_message/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_sticker(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma figurinha: POST /whatsapp/sendSticker.
@spec send_sticker!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_sticker/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_text(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia uma mensagem de texto: POST /whatsapp/sendText.
%{"number" => "5511999999999", "text" => "Olá!"}
@spec send_text!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_text/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_text_to_storie(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Publica um texto no status: POST /whatsapp/sendTextToStorie.
@spec send_text_to_storie!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_text_to_storie/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_video(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Envia um vídeo por URL: POST /whatsapp/sendVideo.
@spec send_video!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_video/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec send_video_to_storie(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Publica um vídeo no status: POST /whatsapp/sendVideoToStorie.
@spec send_video_to_storie!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como send_video_to_storie/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.
@spec service() :: String.t()
Serviço do gateway coberto por este módulo: whatsapp.
@spec start(ApiBrasil.Client.t(), term(), keyword()) :: {:ok, ApiBrasil.Core.DeviceResponse.t()} | {:error, ApiBrasil.Core.Error.t()}
Inicia a sessão do device: POST /whatsapp/start.
Aceita os webhooks opcionais webhook_wh_status, webhook_wh_message,
webhook_wh_connect e webhook_wh_qrcode.
@spec start!(ApiBrasil.Client.t(), term(), keyword()) :: ApiBrasil.Core.DeviceResponse.t()
Como start/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.