O KiraGo é uma implementação da biblioteca whatsmeow como um serviço de API REST simples, com suporte a múltiplos dispositivos e sessões simultâneas.
A biblioteca whatsmeow não usa Puppeteer no Chrome headless e nem emulador Android. Ela se comunica diretamente com os servidores websocket do WhatsApp, sendo bem rápida e usando menos memória e CPU do que outras soluções. A desvantagem é que mudanças no protocolo do WhatsApp podem quebrar conexões e exigir atualização da biblioteca.
Autenticação
O KiraGo oferece dois métodos de autenticação:
- Para usuários comuns: use o header
token, que será comparado com a tabelausersno banco de dados. - Para administradores: use o header
Authorizationcom o token administrativo para acessar rotas protegidas de administração.
Exemplo de requisição com token de usuário:
curl -X POST https://seu-dominio.com/webhook \
-H "token: seu_token_aqui" \
-H "Content-Type: application/json" \
-d '{
"webhook": "https://seu-webhook.com/callback",
"events": ["Message", "ReadReceipt"]
}'
Primeiros passos
Para começar a usar a API do KiraGo, siga estes passos:
-
Criar um usuário:
Você precisa criar um usuário no banco de dados. O administrador pode criar um novo usuário pela rota
/admin/users. -
Conectar ao WhatsApp:
Use o endpoint
/session/connectpara iniciar a conexão com os servidores do WhatsApp. -
Escanear o QR code:
Obtenha o QR code pelo endpoint
/session/qre escaneie com o app do WhatsApp. -
Configurar seu webhook:
Use o endpoint
/webhookpara configurar a URL do webhook e os tipos de eventos que você quer receber. -
Enviar mensagens:
Agora você já pode enviar mensagens usando os endpoints disponíveis em
/chat/send/*.
Sessão
Endpoints para gerenciar a conexão com os servidores do WhatsApp.
POST /session/connect
Conecta aos servidores do WhatsApp. Se não houver sessão anterior, será necessário escanear um QR code.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Subscribe | Array[string] | Lista de tipos de evento para assinar. Valores possíveis: "Message", "ReadReceipt", "Presence", "HistorySync", "ChatPresence", "All" |
| Immediate | boolean | Se true, retorna imediatamente sem aguardar a confirmação da conexão |
Exemplo de requisição:
{
"Subscribe": ["Message", "ReadReceipt"],
"Immediate": true
}
Resposta:
{
"code": 200,
"data": {
"details": "Connected!",
"events": "Message,ReadReceipt",
"jid": "5491155555555.0:53@s.whatsapp.net",
"webhook": "https://some.site/webhook?request=parameter"
},
"success": true
}
POST /session/disconnect
Desconecta dos servidores do WhatsApp sem encerrar a sessão.
Resposta:
{
"code": 200,
"data": {
"Details": "Disconnected"
},
"success": true
}
POST /session/logout
Encerra a conexão e termina a sessão, exigindo novo scan do QR na próxima conexão.
Resposta:
{
"code": 200,
"data": {
"Details": "Logged out"
},
"success": true
}
GET /session/status
Obtém o status atual da conexão e da sessão.
Resposta:
{
"code": 200,
"data": {
"Connected": true,
"LoggedIn": true
},
"success": true
}
GET /session/qr
Obtém o QR code para escanear no app do WhatsApp.
Resposta:
{
"code": 200,
"data": {
"QRCode": "data:image/png;base64,iVBORw0KGgoA..."
},
"success": true
}
Webhook
Endpoints para configurar webhooks que receberão notificações de eventos.
GET /webhook
Obtém o webhook configurado e os eventos assinados.
Resposta:
{
"code": 200,
"data": {
"subscribe": ["Message", "ReadReceipt"],
"webhook": "https://example.net/webhook"
},
"success": true
}
POST /webhook
Configura um webhook para receber eventos.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| webhook | string | URL do webhook que receberá as chamadas |
| events | Array[string] | Lista de tipos de evento para assinar. Veja a seção "Tipos de eventos disponíveis" abaixo para a lista completa. |
| active | boolean | Define se o webhook está ativo ou não. Padrão: true |
Exemplo de requisição:
{
"webhook": "https://example.net/webhook",
"events": ["Message", "ReadReceipt"]
}
Resposta:
{
"code": 200,
"data": {
"webhook": "https://example.net/webhook",
"events": ["Message", "ReadReceipt"]
},
"success": true
}
PUT /webhook
Atualiza a configuração do webhook. Dá para atualizar apenas a URL, apenas os eventos, ou ambos.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| webhook | string | Nova URL do webhook (opcional se for atualizar apenas eventos) |
| events | Array[string] | Nova lista de eventos (opcional se for atualizar apenas a URL) |
| active | boolean | Ativar ou desativar o webhook |
Exemplos de requisição:
// Atualizar apenas eventos
{
"events": ["Message", "Receipt", "GroupInfo"],
"active": true
}
// Atualizar apenas URL
{
"webhook": "https://novo-endpoint.com/webhook",
"active": true
}
// Desativar webhook
{
"active": false
}
DELETE /webhook
Remove o webhook e limpa a configuração de eventos.
Resposta:
{
"code": 200,
"data": {
"message": "Webhook removed successfully"
},
"success": true
}
Tipos de eventos disponíveis
Abaixo está a lista completa de eventos que você pode assinar:
Mensagens e comunicação
Message- Mensagem recebida ou enviadaUndecryptableMessage- Mensagem que não pôde ser descriptografadaReceipt- Confirmação de entrega/leituraMediaRetry- Tentativa de reenvio de mídia
Grupos e contatos
GroupInfo- Informações do grupo atualizadasJoinedGroup- Entrou em um grupoPicture- Foto de perfil atualizadaBlocklistChange- Alteração na lista de bloqueioBlocklist- Lista de bloqueio
Conexão e sessão
Connected- Conectado ao WhatsAppDisconnected- Desconectado do WhatsAppConnectFailure- Falha na conexãoKeepAliveRestored- Conexão restauradaKeepAliveTimeout- Timeout de conexãoLoggedOut- Sessão encerradaClientOutdated- Cliente desatualizadoTemporaryBan- Banimento temporárioStreamError- Erro de streamStreamReplaced- Stream substituídoPairSuccess- Pareamento bem-sucedidoPairError- Erro ao parearQR- QR code geradoQRTimeout- Timeout do QR codeQRScannedWithoutMultidevice- QR escaneado sem multi-dispositivo
Privacidade e configurações
PrivacySettings- Configurações de privacidadePushNameSetting- Nome de exibição alteradoUserAbout- Status/Sobre atualizado
Sincronização e estado
AppState- Estado do aplicativoAppStateSyncComplete- Sincronização concluídaHistorySync- Sincronização de históricoOfflineSyncCompleted- Sincronização offline concluídaOfflineSyncPreview- Prévia da sincronização offline
Chamadas
CallOffer- Oferta de chamadaCallAccept- Chamada aceitaCallTerminate- Chamada encerradaCallOfferNotice- Aviso de oferta de chamadaCallRelayLatency- Latência do relay da chamada
Presença e atividade
Presence- Status de presençaChatPresence- Presença no chat (digitando)
Outros
IdentityChange- Mudança de identidadeCATRefreshError- Erro de atualização do CATNewsletterJoin- Entrou na newsletterNewsletterLeave- Saiu da newsletterNewsletterMuteChange- Alteração de silenciar newsletterNewsletterLiveUpdate- Atualização ao vivo da newsletterFBMessage- Mensagem da ponte do FacebookAll- Receber todos os eventos
Estrutura do webhook
Quando um evento ocorre, o KiraGo envia uma requisição POST para o webhook configurado com os dados do evento. Abaixo estão os formatos dos principais tipos de evento:
Mensagem recebida
{
"event": "Message",
"instance": "5491155553934.0:53@s.whatsapp.net",
"data": {
"id": "3EB0ABCD123456789",
"pushName": "Nome do Contato",
"fromMe": false,
"timestamp": 1647878528,
"chat": "5491199999999@s.whatsapp.net",
"sender": "5491199999999@s.whatsapp.net",
"message": {
"conversation": "Olá, como vai?"
}
}
}
Confirmação de leitura
{
"event": "ReadReceipt",
"instance": "5491155553934.0:53@s.whatsapp.net",
"data": {
"sender": "5491199999999@s.whatsapp.net",
"chat": "5491199999999@s.whatsapp.net",
"ids": ["3EB0ABCD123456789"],
"timestamp": 1647878650
}
}
Presence
{
"event": "Presence",
"instance": "5491155553934.0:53@s.whatsapp.net",
"data": {
"sender": "5491199999999@s.whatsapp.net",
"status": "available",
"timestamp": 1647878750
}
}
Chat
Endpoints para enviar mensagens e gerenciar interações de chat.
POST /chat/send/text
Envia uma mensagem de texto para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário (com DDI, sem "+" ou outros caracteres especiais). Exemplo: "5511999999999" |
| Body | string | Conteúdo da mensagem de texto |
| Id | string | ID customizado da mensagem. Se não informado, um ID aleatório será gerado |
| ContextInfo | object | Informações de contexto para responder a uma mensagem específica. Contém StanzaId (ID da mensagem original) e Participant (JID do remetente) |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Body": "Olá, como você está?",
"Id": "ABCDABCD1234",
"ContextInfo": {
"StanzaId": "3EB06F9067F80BAB89FF",
"Participant": "5511999999999@s.whatsapp.net"
}
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "ABCDABCD1234",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/image
Envia uma imagem para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário (com DDI) |
| Image | string | Imagem em base64 (deve começar com "data:image/jpeg;base64," ou "data:image/png;base64,") |
| Caption | string | Legenda opcional para a imagem |
| Id | string | ID customizado da mensagem |
| ContextInfo | object | Para responder a uma mensagem |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Image": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"Caption": "Olha essa foto!"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/audio
Envia um áudio para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Audio | string | Áudio em base64 (deve começar com "data:audio/ogg;base64," ou "data:audio/mp3;base64,") |
| Id | string | ID customizado da mensagem |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Audio": "data:audio/ogg;base64,T2dnUwACAAA..."
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/video
Envia um vídeo para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Video | string | Vídeo em base64 (deve começar com "data:video/mp4;base64,") |
| Caption | string | Legenda opcional para o vídeo |
| Id | string | ID customizado da mensagem |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Video": "data:video/mp4;base64,AAAAIGZ0eXBpc29t...",
"Caption": "Confira este vídeo!"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/document
Envia um documento para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Document | string | Documento em base64 (ex: "data:application/pdf;base64,...") |
| FileName | string | Nome do arquivo (ex: "documento.pdf") |
| Id | string | ID customizado da mensagem |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Document": "data:application/pdf;base64,JVBERi0xLjcK...",
"FileName": "contrato.pdf"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/sticker
Envia um sticker para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Sticker | string | Sticker em base64 (formato WebP recomendado) |
| Id | string | ID customizado da mensagem |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Sticker": "data:image/webp;base64,UklGRiQAAABXRUJQ..."
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/location
Envia uma localização geográfica para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Latitude | float | Latitude da localização |
| Longitude | float | Longitude da localização |
| Name | string | Nome do local |
| Address | string | Endereço do local |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Latitude": -23.5505,
"Longitude": -46.6333,
"Name": "São Paulo",
"Address": "São Paulo, SP, Brasil"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/contact
Envia um cartão de contato para um destinatário.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| ContactName | string | Nome do contato a ser compartilhado |
| ContactPhone | string | Número do contato a ser compartilhado |
Exemplo de requisição:
{
"Phone": "5511999999999",
"ContactName": "João Silva",
"ContactPhone": "5511888888888"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/list
Envia uma mensagem com lista de opções interativa (requer WhatsApp Business).
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Title | string | Título da lista |
| ButtonText | string | Texto do botão |
| Sections | array | Array de seções com itens |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Title": "Menu de Opções",
"ButtonText": "Ver Opções",
"Sections": [
{
"title": "Seção 1",
"rows": [
{"id": "1", "title": "Item 1", "description": "Descrição do item 1"},
{"id": "2", "title": "Item 2", "description": "Descrição do item 2"}
]
}
]
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/poll
Envia uma enquete para um contato ou grupo.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário |
| Name | string | Pergunta da enquete |
| Options | array | Array com as opções de resposta (mínimo 2) |
| SelectableCount | integer | Número de opções que podem ser selecionadas (padrão: 1) |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Name": "Qual é sua cor favorita?",
"Options": ["Azul", "Verde", "Vermelho", "Amarelo"],
"SelectableCount": 1
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "MESSAGE_ID",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/delete
Deleta uma mensagem enviada por você.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário onde a mensagem foi enviada |
| Id | string | ID da mensagem a ser deletada |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Id": "3EB06F9067F80BAB89FF"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Message deleted"
},
"success": true
}
POST /chat/markread
Marca uma ou mais mensagens recebidas como lidas.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Chat | string | JID do chat (ex: "5511999999999@s.whatsapp.net") |
| Ids | array | Array com os IDs das mensagens a serem marcadas |
| Sender | string | JID do remetente (necessário para mensagens de grupo) |
Exemplo de requisição:
{
"Chat": "5511999999999@s.whatsapp.net",
"Ids": ["3EB06F9067F80BAB89FF", "4FC17A018G91CAC90HG"],
"Sender": "5511999999999@s.whatsapp.net"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Message(s) marked as read"
},
"success": true
}
POST /chat/react
Reage a uma mensagem com um emoji.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário. Use "me:" como prefixo se for sua própria mensagem |
| Body | string | Emoji da reação (ex: "👍", "❤️", "😂") |
| Id | string | ID da mensagem a ser reagida |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Body": "👍",
"Id": "3EB06F9067F80BAB89FF"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Sent",
"Id": "3EB06F9067F80BAB89FF",
"Timestamp": "2023-03-24T15:49:08-03:00"
},
"success": true
}
POST /chat/send/edit
Edita uma mensagem de texto já enviada por você.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | string | Número do destinatário onde a mensagem foi enviada |
| Id | string | ID da mensagem a ser editada |
| Body | string | Novo conteúdo da mensagem |
Exemplo de requisição:
{
"Phone": "5511999999999",
"Id": "3EB06F9067F80BAB89FF",
"Body": "Mensagem corrigida"
}
Resposta:
{
"code": 200,
"data": {
"Details": "Message updated"
},
"success": true
}
Usuário
Endpoints para obter informações de usuários e gerenciar presença.
POST /user/check
Verifica se números de telefone têm WhatsApp.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| Phone | Array[string] | Lista de números de telefone para verificar |
Exemplo de requisição:
{
"Phone": ["5491155553934", "5491155553935"]
}
Resposta:
{
"code": 200,
"data": {
"Users": [
{
"IsInWhatsapp": true,
"JID": "5491155553934@s.whatsapp.net",
"Query": "5491155553934",
"VerifiedName": "Company Name"
},
{
"IsInWhatsapp": false,
"JID": "5491155553935@s.whatsapp.net",
"Query": "5491155553935",
"VerifiedName": ""
}
]
},
"success": true
}
Grupo
Endpoints para gerenciar grupos e suas propriedades.
GET /group/list
Lista todos os grupos aos quais a conta está vinculada.
Resposta:
{
"code": 200,
"data": {
"Groups": [
{
"AnnounceVersionID": "1650572126123738",
"DisappearingTimer": 0,
"GroupCreated": "2022-04-21T17:15:26-03:00",
"IsAnnounce": false,
"IsEphemeral": false,
"IsLocked": false,
"JID": "120362023605733675@g.us",
"Name": "Super Group",
"NameSetAt": "2022-04-21T17:15:26-03:00",
"NameSetBy": "5491155554444@s.whatsapp.net",
"OwnerJID": "5491155554444@s.whatsapp.net",
"ParticipantVersionID": "1650234126145738",
"Participants": [
{
"IsAdmin": true,
"IsSuperAdmin": true,
"JID": "5491155554444@s.whatsapp.net"
},
{
"IsAdmin": false,
"IsSuperAdmin": false,
"JID": "5491155553333@s.whatsapp.net"
}
],
"Topic": "",
"TopicID": "",
"TopicSetAt": "0001-01-01T00:00:00Z",
"TopicSetBy": ""
}
]
},
"success": true
}
Admin
Endpoints administrativos para gerenciar usuários e instâncias.
GET /admin/users
Lista todos os usuários cadastrados no sistema.
Cabeçalhos:
| Header | Valor | Descrição |
|---|---|---|
| Authorization | string | Token administrativo para autenticação |
Resposta:
{
"code": 200,
"data": [
{
"id": 1,
"name": "John",
"token": "1234ABCD",
"webhook": "https://example.com/webhook",
"jid": "5491155553934@s.whatsapp.net",
"qrcode": "",
"connected": true,
"expiration": 0,
"events": "Message,ReadReceipt"
}
],
"success": true
}
Armazenamento S3
Configure armazenamento compatível com S3 para guardar arquivos de mídia do WhatsApp. Suporta AWS S3, MinIO, DigitalOcean Spaces e outros provedores compatíveis.
GET /s3/config
Obtém a configuração atual do S3.
Resposta:
{
"code": 200,
"data": {
"endpoint": "https://s3.amazonaws.com",
"bucket": "meu-bucket",
"region": "us-east-1",
"path_prefix": "uploads/whatsapp/",
"force_path_style": false
},
"success": true
}
PUT /s3/config
Configura o armazenamento S3 para esta instância.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| endpoint | string | URL do endpoint S3 (padrão: https://s3.amazonaws.com) |
| access_key | string | Access key do S3 |
| secret_key | string | Secret key do S3 |
| bucket | string | Nome do bucket S3 |
| region | string | Região do S3 (obrigatória para AWS S3) |
| path_prefix | string | Prefixo de caminho para organizar arquivos |
| force_path_style | boolean | Forçar path style (obrigatório para MinIO) |
Exemplo de requisição:
{
"endpoint": "https://s3.amazonaws.com",
"access_key": "AKIAIOSFODNN7EXAMPLE",
"secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"bucket": "meu-bucket-whatsapp",
"region": "us-east-1",
"path_prefix": "uploads/",
"force_path_style": false
}
Resposta:
{
"code": 200,
"data": {
"message": "S3 configuration saved successfully"
},
"success": true
}
POST /s3/test
Testa a conexão com o S3 usando a configuração informada.
Parâmetros do corpo:
Os mesmos parâmetros do endpoint PUT /s3/config
Resposta:
{
"code": 200,
"data": {
"message": "S3 connection test successful"
},
"success": true
}
- AWS S3: Use o endpoint padrão e informe a região
- MinIO: Use seu endpoint customizado (ex: http://localhost:9000) e habilite force_path_style
- DigitalOcean Spaces: Use https://nyc3.digitaloceanspaces.com como endpoint
Proxy
Configure um proxy HTTP/HTTPS ou SOCKS5 para as conexões do WhatsApp. Útil para restrições de rede ou para aumentar a privacidade.
GET /proxy/config
Obtém a configuração atual do proxy.
Resposta:
{
"code": 200,
"data": {
"proxy_url": "socks5://proxy.example.com:1080",
"username": "user",
"bypass_list": ["localhost", "127.0.0.1", "*.local"]
},
"success": true
}
PUT /proxy/config
Configura o proxy para esta instância.
Parâmetros do corpo:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| proxy_url | string | URL completa do proxy, incluindo protocolo e porta |
| username | string | Usuário para autenticação no proxy |
| password | string | Senha para autenticação no proxy |
| bypass_list | Array[string] | Lista de domínios/IPs que devem ignorar o proxy |
Exemplo de requisição:
{
"proxy_url": "socks5://proxy.example.com:1080",
"username": "usuario",
"password": "senha123",
"bypass_list": ["localhost", "127.0.0.1", "*.local", "192.168.*"]
}
Resposta:
{
"code": 200,
"data": {
"message": "Proxy configuration saved successfully"
},
"success": true
}
POST /proxy/test
Testa a conexão através do proxy configurado.
Parâmetros do corpo:
Os mesmos parâmetros do endpoint PUT /proxy/config (exceto bypass_list)
Resposta:
{
"code": 200,
"data": {
"message": "Proxy connection test successful",
"response_time": "245ms"
},
"success": true
}
- HTTP/HTTPS:
http://proxy.example.com:8080 - SOCKS5:
socks5://proxy.example.com:1080 - Com autenticação:
socks5://user:pass@proxy.example.com:1080
Melhores práticas
Para usar a API do KiraGo com eficiência e evitar problemas, considere estas melhores práticas:
Segurança
- Mantenha seus tokens de autenticação em segurança e não os exponha publicamente.
- Use HTTPS em toda comunicação com a API e com seus webhooks.
- Implemente validação adequada dos webhooks recebidos para evitar processar dados maliciosos.
Limites de uso
- Evite enviar muitas mensagens em pouco tempo para reduzir risco de bloqueio pelo WhatsApp.
- Implemente tentativas (retry) com backoff exponencial para lidar com falhas temporárias.
- Monitore o status da conexão e reconecte quando necessário.
Webhooks
- Garanta que seu endpoint de webhook processe requisições rapidamente (menos de 5 segundos).
- Se o processamento for demorado, use uma fila para processar eventos de forma assíncrona.
- Prepare seu servidor para picos de tráfego, especialmente se você gerenciar vários números.
FAQ
/session/connect e escanear o QR novamente. O KiraGo não reconecta automaticamente em caso de logout forçado.
Para reduzir o risco de bloqueio:
- Não envie mensagens em massa para pessoas que não conhecem você
- Não envie a mesma mensagem para muitos contatos em sequência
- Respeite limites de envio (aprox. 50–100 mensagens/dia para números novos)
- Use um número que já tenha histórico de uso no WhatsApp
- Não use a API para spam ou conteúdo inadequado
Todos os Endpoints da API
Esta seção contém todos os endpoints disponíveis na API KiraGo, organizados por categoria. Cada endpoint inclui descrição completa, parâmetros, exemplos de requisição e resposta.
Carregando todos os endpoints do Swagger...