Instância Uma instância é um número de WhatsApp conectado à PontZap. Aqui você conecta pelo QR code, consulta o estado, desconecta e ajusta perfil e privacidade.
Gera o QR code para parear o número. Sem phone, devolve o QR code em instance.qrcode (data URL PNG). Com phone, devolve um código de pareamento em instance.paircode.
Parâmetros (corpo JSON)
phone string Telefone com DDI e DDD (só dígitos). Se informado, gera código de pareamento em vez de QR code. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/connect' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/connect' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/connect" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Connecting" ,
"connected" : true ,
"loggedIn" : false ,
"jid" : null ,
"request_id" : "93512449-a681-44d2-aa41-71597011b49d" ,
"instance" : {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "connecting" ,
"paircode" : "" ,
"qrcode" : "data:image/png;base64,iVBORw0KGgoAAAANSU…" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
},
"status" : {
"connected" : true ,
"loggedIn" : false ,
"jid" : null
}
} O QR code expira em poucos segundos e é renovado: consulte GET /instance/status em intervalos curtos e mostre o qrcode mais recente. Quando o celular confirma, status passa a connected, loggedIn vira true e chega o webhook connection. Diz se o número está conectado, conectando (com QR code pendente) ou desconectado.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/instance/status' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/status' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/instance/status" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"instance" : {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
},
"status" : {
"connected" : false ,
"loggedIn" : false ,
"jid" : null
}
} Valores de instance.status: disconnected, connecting, connected. Conectado, status.jid sai como objeto {user, agent, device, server}. Encerra a sessão do WhatsApp (logout). Para voltar será preciso um novo QR code. Emite o webhook connection.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/disconnect' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/disconnect' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/disconnect" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Disconnected" ,
"info" : "Sessão encerrada. Será necessário um novo QR code para conectar." ,
"instance" : {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "disconnected by request" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
}
} Derruba e reconecta a sessão já pareada, sem pedir novo QR code. Intervalo mínimo de 10 segundos entre reinícios.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/reset' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/reset' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/reset" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Desconecta o aparelho e remove a instância. O token deixa de funcionar.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X DELETE 'https://api.pontzap.com.br/instance' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance' , {
method: 'DELETE' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.delete(
"https://api.pontzap.com.br/instance" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Instance Deleted" ,
"info" : "O dispositivo foi desconectado com sucesso e a instância foi removida do banco de dados."
} Muda o nome interno da instância (o que aparece para você, não no WhatsApp).
Parâmetros (corpo JSON)
name string obrigatório Novo nome. Vazio responde 400. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/updateInstanceName' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"name": "loja-centro-2"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/updateInstanceName' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"name" : "loja-centro-2"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/updateInstanceName" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"name" : "loja-centro-2" ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro-2" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
} Aparece como online (available) ou offline (unavailable) para todos os contatos.
Parâmetros (corpo JSON)
presence string obrigatório available ou unavailable. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/presence' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"presence": "available"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/presence' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"presence" : "available"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/presence" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"presence" : "available" ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Presence updated successfully"
} Lê as configurações de privacidade da conta no WhatsApp. Exige a instância conectada.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/instance/privacy' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/privacy' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/instance/privacy" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Muda quem vê foto, status, visto por último etc. Só envia ao WhatsApp o que mudou.
Parâmetros (corpo JSON)
groupadd, last, status, profile, readreceipts, online, calladd string Mande só as chaves que quer mudar, com os valores aceitos pelo WhatsApp (ex.: all, contacts, none). Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/privacy' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"last": "contacts",
"profile": "contacts"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/privacy' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"last" : "contacts" ,
"profile" : "contacts"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/privacy" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"last" : "contacts" ,
"profile" : "contacts" ,
},
)
print (resposta.status_code, resposta.json()) Altera o nome que seus contatos veem no WhatsApp.
Parâmetros (corpo JSON)
name string obrigatório Novo nome de perfil. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/profile/name' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"name": "Loja Centro"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/profile/name' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"name" : "Loja Centro"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/profile/name" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"name" : "Loja Centro" ,
},
)
print (resposta.status_code, resposta.json()) Troca a foto do perfil. A imagem é convertida para JPEG 640×640. Use "remove" para apagar.
Parâmetros (corpo JSON)
image string obrigatório URL, data URL ou base64 da imagem, ou "remove". Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/profile/image' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"image": "https://meusite.com.br/logo.png"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/profile/image' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"image" : "https://meusite.com.br/logo.png"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/profile/image" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"image" : "https://meusite.com.br/logo.png" ,
},
)
print (resposta.status_code, resposta.json())
Envio Enviar texto, mídia, contato e localização, direto ou pela fila assíncrona. Todas as rotas aceitam os campos comuns abaixo.
Envia uma mensagem de texto. A resposta traz o id da mensagem; o status de entrega e leitura chega depois pelo webhook messages_update.
Parâmetros (corpo JSON)
text string obrigatório Texto da mensagem.
number string obrigatório Telefone com DDI e DDD (ex.: 5592999999999) ou JID (…@s.whatsapp.net, …@g.us, …@lid, …@newsletter). Telefone é conferido no WhatsApp antes do envio.
async boolean Coloca o envio na fila e responde na hora com status: "Queued". Veja “Fila assíncrona”.
delay number Milissegundos mostrando “digitando…” antes de enviar (máximo 2 minutos).
replyid string Id da mensagem a responder (citação).
mentions string Telefones a mencionar, separados por vírgula.
forward boolean Marca como encaminhada.
track_source / track_id string Seus identificadores (ex.: erp / pedido-4821). Voltam na mensagem, no webhook e servem de filtro em /message/find. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/send/text' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"text": "Seu pedido #4821 saiu para entrega.",
"track_source": "erp",
"track_id": "pedido-4821"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/send/text' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"text" : "Seu pedido #4821 saiu para entrega." ,
"track_source" : "erp" ,
"track_id" : "pedido-4821"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/send/text" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"text" : "Seu pedido #4821 saiu para entrega." ,
"track_source" : "erp" ,
"track_id" : "pedido-4821" ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"id" : "5592988887777:3EB0D8448DC0B9FE593A2C" ,
"messageid" : "3EB0D8448DC0B9FE593A2C" ,
"chatid" : "5592999999999@s.whatsapp.net" ,
"fromMe" : true ,
"isGroup" : false ,
"messageType" : "Conversation" ,
"source" : "api" ,
"messageTimestamp" : 1791933175740 ,
"status" : "Sent" ,
"text" : "Seu pedido #4821 saiu para entrega." ,
"wasSentByApi" : true ,
"sendFunction" : "/send/text" ,
"sendPayload" : {
"number" : "5592999999999" ,
"text" : "Seu pedido #4821 saiu para entrega."
},
"track_source" : "erp" ,
"track_id" : "pedido-4821" ,
"owner" : "5592988887777" ,
"response" : {
"status" : "success" ,
"message" : "Message sent successfully"
}
} Erros comuns 400 — Missing number or text, Invalid number, The number … is not on WhatsApp ou WhatsApp instance is not connected. Com a instância conectada, id sai como owner:messageid (owner = número da instância). As rotas de /message/* aceitam o id completo ou só o messageid. Imagem, vídeo, áudio, documento ou figurinha. O arquivo pode ser uma URL pública, data URL ou base64.
Parâmetros (corpo JSON)
type string obrigatório image, video, videoplay, ptv, audio, myaudio, ptt (áudio de voz, exige OGG/Opus), document ou sticker (exige WebP).
file string obrigatório URL, data URL ou base64.
text string Legenda.
docName string Nome do arquivo (documentos).
mimetype string Força o tipo MIME.
viewOnce boolean Visualização única.
number string obrigatório Telefone com DDI e DDD (ex.: 5592999999999) ou JID (…@s.whatsapp.net, …@g.us, …@lid, …@newsletter). Telefone é conferido no WhatsApp antes do envio.
async boolean Coloca o envio na fila e responde na hora com status: "Queued". Veja “Fila assíncrona”.
delay number Milissegundos mostrando “digitando…” antes de enviar (máximo 2 minutos).
replyid string Id da mensagem a responder (citação).
mentions string Telefones a mencionar, separados por vírgula.
forward boolean Marca como encaminhada.
track_source / track_id string Seus identificadores (ex.: erp / pedido-4821). Voltam na mensagem, no webhook e servem de filtro em /message/find. Erros comuns 400 — Invalid media type, Missing file, Could not download file…, ptt requires an OGG/Opus file.413 — Arquivo grande demais (File too large). Envia um cartão de contato com um ou mais telefones.
Parâmetros (corpo JSON)
fullName string obrigatório Nome do contato.
phoneNumber string obrigatório Um ou mais telefones, separados por vírgula.
organization, email, url string Opcionais.
number string obrigatório Telefone com DDI e DDD (ex.: 5592999999999) ou JID (…@s.whatsapp.net, …@g.us, …@lid, …@newsletter). Telefone é conferido no WhatsApp antes do envio.
async boolean Coloca o envio na fila e responde na hora com status: "Queued". Veja “Fila assíncrona”.
delay number Milissegundos mostrando “digitando…” antes de enviar (máximo 2 minutos).
replyid string Id da mensagem a responder (citação).
mentions string Telefones a mencionar, separados por vírgula.
forward boolean Marca como encaminhada.
track_source / track_id string Seus identificadores (ex.: erp / pedido-4821). Voltam na mensagem, no webhook e servem de filtro em /message/find. Envia um ponto no mapa. Coordenadas fora do intervalo válido respondem 400.
Parâmetros (corpo JSON)
latitude number obrigatório -90 a 90.
longitude number obrigatório -180 a 180.
name, address string Nome e endereço exibidos.
number string obrigatório Telefone com DDI e DDD (ex.: 5592999999999) ou JID (…@s.whatsapp.net, …@g.us, …@lid, …@newsletter). Telefone é conferido no WhatsApp antes do envio.
async boolean Coloca o envio na fila e responde na hora com status: "Queued". Veja “Fila assíncrona”.
delay number Milissegundos mostrando “digitando…” antes de enviar (máximo 2 minutos).
replyid string Id da mensagem a responder (citação).
mentions string Telefones a mencionar, separados por vírgula.
forward boolean Marca como encaminhada.
track_source / track_id string Seus identificadores (ex.: erp / pedido-4821). Voltam na mensagem, no webhook e servem de filtro em /message/find. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/send/location' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"latitude": -3.119,
"longitude": -60.0217,
"name": "Loja Centro",
"address": "Av. Eduardo Ribeiro, 520"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/send/location' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"latitude" : - 3.119 ,
"longitude" : - 60.0217 ,
"name" : "Loja Centro" ,
"address" : "Av. Eduardo Ribeiro, 520"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/send/location" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"latitude" : - 3.119 ,
"longitude" : - 60.0217 ,
"name" : "Loja Centro" ,
"address" : "Av. Eduardo Ribeiro, 520" ,
},
)
print (resposta.status_code, resposta.json()) Mostra para o contato que você está digitando ou gravando áudio. Com delay, mantém por até 5 minutos.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
presence string obrigatório composing, recording ou paused.
delay number Milissegundos para manter a presença. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/presence' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"presence": "composing",
"delay": 3000
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/presence' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"presence" : "composing" ,
"delay" : 3000
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/presence" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"presence" : "composing" ,
"delay" : 3000 ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Chat presence sent successfully"
} Quantos envios esperam na fila e o que ela está fazendo.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/message/async' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/async' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/message/async" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Async queue status" ,
"instanceId" : "r395f3fbc2622e8" ,
"queue" : {
"status" : "waiting_connection" ,
"pending" : 1 ,
"processingNow" : false ,
"acceptingNewMessages" : true ,
"sessionReady" : false ,
"resetting" : false
}
} queue.status: idle (vazia), queued, processing ou waiting_connection (aguardando o número reconectar). Cancela os envios que ainda não saíram. As mensagens ficam com status Canceled.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X DELETE 'https://api.pontzap.com.br/message/async' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/async' , {
method: 'DELETE' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.delete(
"https://api.pontzap.com.br/message/async" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Async queue cleared" ,
"instanceId" : "r395f3fbc2622e8" ,
"stats" : {
"persistedQueuedCanceled" : 1 ,
"trackedJobsCleared" : 0 ,
"bufferedJobsMarkedCanceled" : 0 ,
"drainedChannelJobs" : 0 ,
"clearedOverflowJobs" : 0
}
} Define um intervalo aleatório, em segundos, entre uma mensagem e outra da fila. Ajuda a proteger o número.
Parâmetros (corpo JSON)
msg_delay_min number obrigatório Mínimo em segundos.
msg_delay_max number obrigatório Máximo em segundos (se menor que o mínimo, vira o mínimo). Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/updateDelaySettings' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"msg_delay_min": 2,
"msg_delay_max": 6
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/updateDelaySettings' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"msg_delay_min" : 2 ,
"msg_delay_max" : 6
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/updateDelaySettings" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"msg_delay_min" : 2 ,
"msg_delay_max" : 6 ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"instance" : {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
}
}
Mensagens Buscar mensagens guardadas (enviadas, recebidas e o histórico que o celular manda ao conectar) e agir sobre elas: ler, reagir, editar, apagar, fixar, baixar mídia.
Procura por id, conversa, tipo ou pelos seus identificadores track_source/track_id. Paginado com hasMore.
Parâmetros (corpo JSON)
id string Id completo (owner:messageid) ou curto.
chatid string Telefone ou JID da conversa.
messageType string Tipo da mensagem (ex.: Conversation, ImageMessage).
track_source / track_id string Os identificadores que você mandou no envio.
limit / offset number Paginação. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/find' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"track_source": "erp",
"track_id": "pedido-4821",
"limit": 10
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/find' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"track_source" : "erp" ,
"track_id" : "pedido-4821" ,
"limit" : 10
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/find" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"track_source" : "erp" ,
"track_id" : "pedido-4821" ,
"limit" : 10 ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"messages" : [
{
"id" : "3EB0D8448DC0B9FE593A2C" ,
"messageid" : "3EB0D8448DC0B9FE593A2C" ,
"chatid" : "5592999999999@s.whatsapp.net" ,
"fromMe" : true ,
"isGroup" : false ,
"messageType" : "Conversation" ,
"source" : "api" ,
"messageTimestamp" : 1791933175740 ,
"status" : "Queued" ,
"text" : "Seu pedido #4821 saiu para entrega." ,
"wasSentByApi" : true ,
"sendFunction" : "/send/text" ,
"sendPayload" : {
"number" : "5592999999999" ,
"text" : "Seu pedido #4821 saiu para entrega."
},
"track_source" : "erp" ,
"track_id" : "pedido-4821"
}
],
"pagination" : {
"limit" : 10 ,
"offset" : 0 ,
"hasMore" : false
}
} As mensagens ficam guardadas por 90 dias (configurável). Baixa a mídia de uma mensagem (ou da mensagem citada). Devolve um link público válido por 2 dias e, se pedir, o base64.
Parâmetros (corpo JSON)
id string obrigatório Id da mensagem.
return_base64 boolean Inclui o arquivo em base64 na resposta.
download_quoted boolean Baixa a mídia da mensagem citada. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/download' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": "3EB0D8448DC0B9FE593A2C",
"return_base64": false
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/download' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "3EB0D8448DC0B9FE593A2C" ,
"return_base64" : false
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/download" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : "3EB0D8448DC0B9FE593A2C" ,
"return_base64" : False ,
},
)
print (resposta.status_code, resposta.json()) generate_mp3 e transcribe ainda não são suportados (aceitos e ignorados). Marca uma ou várias mensagens como lidas (os “dois tiques azuis”). Resultado por id.
Parâmetros (corpo JSON)
id string | string[] obrigatório Um id ou uma lista. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/markread' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": [
"3EB0D8448DC0B9FE593A2C"
]
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/markread' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : [
"3EB0D8448DC0B9FE593A2C"
]
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/markread" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : [ "3EB0D8448DC0B9FE593A2C" ],
},
)
print (resposta.status_code, resposta.json()) Reage com um emoji. Emoji vazio ("") remove a reação.
Parâmetros (corpo JSON)
id string obrigatório Id da mensagem.
text string obrigatório O emoji, ou "" para remover. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/react' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": "3EB0D8448DC0B9FE593A2C",
"text": "👍"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/react' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "3EB0D8448DC0B9FE593A2C" ,
"text" : "👍"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/react" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : "3EB0D8448DC0B9FE593A2C" ,
"text" : "👍" ,
},
)
print (resposta.status_code, resposta.json()) Edita o texto de uma mensagem enviada pela própria conta.
Parâmetros (corpo JSON)
id string obrigatório Id da mensagem.
text string obrigatório Novo texto. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/edit' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": "3EB0D8448DC0B9FE593A2C",
"text": "Seu pedido #4821 saiu para entrega (previsão 15h)."
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/edit' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "3EB0D8448DC0B9FE593A2C" ,
"text" : "Seu pedido #4821 saiu para entrega (previsão 15h)."
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/edit" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : "3EB0D8448DC0B9FE593A2C" ,
"text" : "Seu pedido #4821 saiu para entrega (previsão 15h)." ,
},
)
print (resposta.status_code, resposta.json()) Apaga a mensagem para todos. O status Deleted é definitivo e gera o webhook messages_update.
Parâmetros (corpo JSON)
id string obrigatório Id da mensagem. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/delete' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": "3EB0D8448DC0B9FE593A2C"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/delete' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "3EB0D8448DC0B9FE593A2C"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/delete" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : "3EB0D8448DC0B9FE593A2C" ,
},
)
print (resposta.status_code, resposta.json()) Fixa ou desafixa uma mensagem na conversa por 1, 7 ou 30 dias (outro valor vira 7).
Parâmetros (corpo JSON)
id string obrigatório Id da mensagem.
pin boolean obrigatório true fixa, false desafixa.
duration number Dias: 1, 7 ou 30. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/pin' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": "3EB0D8448DC0B9FE593A2C",
"pin": true,
"duration": 7
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/pin' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "3EB0D8448DC0B9FE593A2C" ,
"pin" : true ,
"duration" : 7
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/pin" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : "3EB0D8448DC0B9FE593A2C" ,
"pin" : True ,
"duration" : 7 ,
},
)
print (resposta.status_code, resposta.json()) Lista os recibos de entrega e leitura de uma mensagem enviada em grupo. Os recibos ficam gravados no banco.
Parâmetros (corpo JSON)
id string obrigatório Id da mensagem.
state string Filtra por estado (ex.: Read).
limit / offset number Paginação. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/message/status' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"id": "3EB0D8448DC0B9FE593A2C"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/message/status' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "3EB0D8448DC0B9FE593A2C"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/message/status" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"id" : "3EB0D8448DC0B9FE593A2C" ,
},
)
print (resposta.status_code, resposta.json())
Chats e contatos Conversas, contatos e bloqueios. Os chats ficam guardados no banco da PontZap, então a busca e os contadores funcionam mesmo com o número desconectado.
Filtra conversas por qualquer campo wa_* (ex.: wa_isGroup, wa_unreadCount, wa_archived), com operadores e ordenação.
Parâmetros (corpo JSON)
wa_* / phone qualquer Filtros. Valor com operador na frente: =, !=, ~ (contém), !~, >, >=, <, <=. Ex.: "wa_unreadCount": ">0".
operator string AND (padrão) ou OR entre os filtros.
sort string Campo com + ou - na frente. Ex.: -wa_lastMsgTimestamp.
limit / offset number Padrão 2000 (completo) ou 100 com compact (máximo 200).
compact boolean Resposta enxuta. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/find' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"wa_isGroup": false,
"wa_unreadCount": ">0",
"sort": "-wa_lastMsgTimestamp",
"limit": 20
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/find' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"wa_isGroup" : false ,
"wa_unreadCount" : ">0" ,
"sort" : "-wa_lastMsgTimestamp" ,
"limit" : 20
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/find" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"wa_isGroup" : False ,
"wa_unreadCount" : ">0" ,
"sort" : "-wa_lastMsgTimestamp" ,
"limit" : 20 ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"chats" : [],
"pagination" : {
"totalRecords" : 0 ,
"limit" : 20 ,
"offset" : 0 ,
"hasMore" : false
},
"totalChatsStats" : {
"total" : 0 ,
"unread" : 0 ,
"groups" : 0 ,
"archived" : 0 ,
"pinned" : 0
}
} Erros comuns 400 — Filtro de CRM (lead_*) ainda não suportado. Totais de conversas abertas, arquivadas, de grupo, bloqueadas e não lidas. Lê só o banco.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/chat/totalcount' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/totalcount' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/chat/totalcount" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"total_chats" : {
"total" : 0 ,
"unread" : 0
},
"open_chats" : {
"total" : 0 ,
"unread" : 0
},
"archived_chats" : {
"total" : 0 ,
"unread" : 0
},
"group_chats" : {
"total" : 0 ,
"unread" : 0
},
"blocked_chats" : {
"total" : 0 ,
"unread" : 0
},
"label_counts" : [],
"attendant_counts" : []
} O chat completo, com nome, foto e se é conta comercial.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
preview boolean Foto em miniatura. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/details' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/details' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/details" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
},
)
print (resposta.status_code, resposta.json()) URL da foto do contato ou grupo.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
preview boolean Miniatura. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/avatar' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"preview": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/avatar' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"preview" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/avatar" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"preview" : True ,
},
)
print (resposta.status_code, resposta.json()) Confere se até 500 números têm WhatsApp, e devolve o JID e o nome verificado.
Parâmetros (corpo JSON)
numbers string[] obrigatório Telefones ou JIDs (até 500). Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/check' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"numbers": [
"5592999999999",
"5511988887777"
]
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/check' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"numbers" : [
"5592999999999" ,
"5511988887777"
]
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/check" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"numbers" : [ "5592999999999" , "5511988887777" ],
},
)
print (resposta.status_code, resposta.json()) Arquiva ou desarquiva. Arquivar também desafixa.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
archive boolean obrigatório true arquiva. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/archive' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"archive": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/archive' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"archive" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/archive" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"archive" : True ,
},
)
print (resposta.status_code, resposta.json()) Fixa ou desafixa a conversa no topo.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
pin boolean obrigatório true fixa. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/pin' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"pin": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/pin' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"pin" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/pin" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"pin" : True ,
},
)
print (resposta.status_code, resposta.json()) Silencia por 8 horas, 1 semana ou para sempre.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
muteEndTime number obrigatório 0 (tira o silêncio), 8 (horas), 168 (1 semana) ou -1 (sempre). Outro valor → 400. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/mute' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"muteEndTime": 8
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/mute' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"muteEndTime" : 8
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/mute" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"muteEndTime" : 8 ,
},
)
print (resposta.status_code, resposta.json()) Marca a conversa inteira como lida ou não lida.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
read boolean obrigatório true lida, false não lida. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/read' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"read": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/read' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"read" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/read" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"read" : True ,
},
)
print (resposta.status_code, resposta.json()) Liga ou desliga as mensagens que somem sozinhas numa conversa privada.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
duration string | number obrigatório 0/off, 24h, 7d, 90d ou segundos. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/ephemeral' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"duration": "7d"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/ephemeral' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"duration" : "7d"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/ephemeral" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"duration" : "7d" ,
},
)
print (resposta.status_code, resposta.json()) Apaga o chat no banco da PontZap e, se pedir, no WhatsApp. Sem flags, apaga só o registro local.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
deleteChatDB boolean Apaga o chat no banco.
deleteMessagesDB boolean Apaga as mensagens no banco.
deleteChatWhatsApp boolean Apaga a conversa no WhatsApp. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/delete' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"deleteChatDB": true,
"deleteMessagesDB": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/delete' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"deleteChatDB" : true ,
"deleteMessagesDB" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/delete" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"deleteChatDB" : True ,
"deleteMessagesDB" : True ,
},
)
print (resposta.status_code, resposta.json()) A resposta traz {response, actions, errors} com o resultado de cada ação. Contatos da sessão do WhatsApp. Exige a instância conectada.
Mesma agenda, em páginas.
Parâmetros (corpo JSON)
contactScope string all ou address_book (só os salvos).
limit / offset number Paginação (hasMore, nextOffset). Bloqueia ou desbloqueia. Devolve a lista de bloqueados atualizada.
Parâmetros (corpo JSON)
number string obrigatório Telefone ou JID.
block boolean obrigatório true bloqueia. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/chat/block' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"number": "5592999999999",
"block": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/block' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"number" : "5592999999999" ,
"block" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/chat/block" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"number" : "5592999999999" ,
"block" : True ,
},
)
print (resposta.status_code, resposta.json()) Lista os contatos bloqueados. Exige a instância conectada.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/chat/blocklist' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/chat/blocklist' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/chat/blocklist" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json())
Grupos e comunidades Criar e administrar grupos e comunidades do WhatsApp. A lista de grupos fica em cache (sincroniza uma vez por conexão); force: true consulta o WhatsApp na hora.
Lista os grupos do número, com busca por nome, JID, descrição ou comunidade. Página padrão 50, máximo 1000.
Parâmetros (corpo JSON)
search string Texto a procurar.
limit / offset number Paginação.
noParticipants boolean Omite a lista de participantes (resposta menor).
force boolean Ignora o cache e consulta o WhatsApp. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/list' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"search": "clientes",
"limit": 50,
"offset": 0,
"noParticipants": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/list' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"search" : "clientes" ,
"limit" : 50 ,
"offset" : 0 ,
"noParticipants" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/list" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"search" : "clientes" ,
"limit" : 50 ,
"offset" : 0 ,
"noParticipants" : True ,
},
)
print (resposta.status_code, resposta.json()) Erros comuns 408 — O WhatsApp não respondeu a tempo. Versão antiga, sem paginação: devolve todos os grupos do cache.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/group/list' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/list' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/group/list" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"groups" : []
} Nome, descrição, participantes e configurações. Link de convite e pedidos de entrada só aparecem se o número for admin.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo (…@g.us).
getInviteLink boolean Inclui o link de convite.
getRequestsParticipants boolean Inclui os pedidos de entrada pendentes.
force boolean Consulta o WhatsApp em vez do cache. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/info' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"getInviteLink": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/info' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"getInviteLink" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/info" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"getInviteLink" : True ,
},
)
print (resposta.status_code, resposta.json()) Cria um grupo com os participantes. Números inválidos ou bloqueados pela privacidade voltam em failed.
Parâmetros (corpo JSON)
name string obrigatório Nome do grupo.
participants string[] obrigatório Telefones ou JIDs. O próprio número é ignorado. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/create' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"name": "Clientes VIP",
"participants": [
"5592999999999",
"5592988887777"
]
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/create' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"name" : "Clientes VIP" ,
"participants" : [
"5592999999999" ,
"5592988887777"
]
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/create" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"name" : "Clientes VIP" ,
"participants" : [ "5592999999999" , "5592988887777" ],
},
)
print (resposta.status_code, resposta.json()) Devolve o link de convite do grupo (o número precisa ser admin).
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/group/invitelink/{groupJID}' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/invitelink/{groupJID}' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/group/invitelink/ {groupJID} " ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"inviteLink" : "https://chat.whatsapp.com/AbCdEfGhIjK"
} Mostra os dados de um grupo a partir do código ou link de convite, sem entrar nele. Link revogado → 400.
Parâmetros (corpo JSON)
invitecode string obrigatório Código ou link completo. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/inviteInfo' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"invitecode": "https://chat.whatsapp.com/AbCdEfGhIjK"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/inviteInfo' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"invitecode" : "https://chat.whatsapp.com/AbCdEfGhIjK"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/inviteInfo" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"invitecode" : "https://chat.whatsapp.com/AbCdEfGhIjK" ,
},
)
print (resposta.status_code, resposta.json()) Entra no grupo pelo código ou link de convite.
Parâmetros (corpo JSON)
invitecode string obrigatório Código ou link completo. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/join' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"invitecode": "AbCdEfGhIjK"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/join' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"invitecode" : "AbCdEfGhIjK"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/join" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"invitecode" : "AbCdEfGhIjK" ,
},
)
print (resposta.status_code, resposta.json()) O número sai do grupo.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/leave' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/leave' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/leave" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
},
)
print (resposta.status_code, resposta.json()) Revoga o link atual e gera outro.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/resetInviteCode' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/resetInviteCode' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/resetInviteCode" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
},
)
print (resposta.status_code, resposta.json()) Adiciona, remove, promove a admin, rebaixa, aprova ou recusa pedidos de entrada. Resultado por participante.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
action string obrigatório add, remove, promote, demote, approve ou reject.
participants string[] obrigatório Telefones ou JIDs. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateParticipants' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"action": "add",
"participants": [
"5592977776666"
]
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateParticipants' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"action" : "add" ,
"participants" : [
"5592977776666"
]
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateParticipants" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"action" : "add" ,
"participants" : [ "5592977776666" ],
},
)
print (resposta.status_code, resposta.json()) Quem a privacidade impede de ser adicionado volta com Error: 403 e um AddRequest (convite). Muda o nome do grupo e devolve o grupo relido.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
name string obrigatório Novo nome. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateName' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"name": "Clientes VIP 2026"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateName' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"name" : "Clientes VIP 2026"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateName" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"name" : "Clientes VIP 2026" ,
},
)
print (resposta.status_code, resposta.json()) Nesta e nas outras rotas updateX: se a releitura falhar, a resposta traz o cache com needs_refresh: true. Muda a descrição (até 2048 caracteres; acima disso → 413).
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
description string obrigatório Texto. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateDescription' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"description": "Avisos de promoções e novidades."
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateDescription' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"description" : "Avisos de promoções e novidades."
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateDescription" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"description" : "Avisos de promoções e novidades." ,
},
)
print (resposta.status_code, resposta.json()) Troca a foto. Imagem que não dá para decodificar → 415.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
image string obrigatório URL, data URL ou base64. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateImage' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"image": "https://meusite.com.br/logo.png"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateImage' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"image" : "https://meusite.com.br/logo.png"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateImage" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"image" : "https://meusite.com.br/logo.png" ,
},
)
print (resposta.status_code, resposta.json()) Liga ou desliga o modo em que só administradores mandam mensagem.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
announce boolean obrigatório true = só admins enviam. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateAnnounce' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"announce": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateAnnounce' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"announce" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateAnnounce" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"announce" : True ,
},
)
print (resposta.status_code, resposta.json()) Define se só administradores podem mudar nome, foto e descrição.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
locked boolean obrigatório true = só admins editam. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateLocked' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"locked": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateLocked' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"locked" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateLocked" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"locked" : True ,
},
)
print (resposta.status_code, resposta.json()) Exige aprovação de um admin para quem entra pelo link.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
IsJoinApprovalRequired boolean obrigatório true liga a aprovação. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateJoinApproval' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"IsJoinApprovalRequired": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateJoinApproval' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"IsJoinApprovalRequired" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateJoinApproval" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"IsJoinApprovalRequired" : True ,
},
)
print (resposta.status_code, resposta.json()) Define se só admins ou todos os membros podem adicionar pessoas.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
MemberAddMode string obrigatório admin_add ou all_member_add. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/updateMemberAddMode' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"MemberAddMode": "admin_add"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/updateMemberAddMode' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"MemberAddMode" : "admin_add"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/updateMemberAddMode" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"MemberAddMode" : "admin_add" ,
},
)
print (resposta.status_code, resposta.json()) Liga ou desliga as mensagens que somem sozinhas.
Parâmetros (corpo JSON)
groupjid string obrigatório JID do grupo.
duration string | number obrigatório 0/off, 24h, 7d, 90d ou segundos. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/group/ephemeral' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"groupjid": "120363012345678901@g.us",
"duration": "24h"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/group/ephemeral' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"groupjid" : "120363012345678901@g.us" ,
"duration" : "24h"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/group/ephemeral" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"groupjid" : "120363012345678901@g.us" ,
"duration" : "24h" ,
},
)
print (resposta.status_code, resposta.json())
Webhooks Webhook é o endereço do seu sistema que a PontZap chama quando algo acontece: mensagem recebida, mensagem lida, número desconectado. Cada instância pode ter vários.
Sem action, configura o webhook principal (cria se não existir). Com action add, update ou delete, gerencia vários webhooks. Responde a lista atualizada.
Parâmetros (corpo JSON)
url string obrigatório Endereço http(s) do seu sistema. Precisa ser público (veja a nota).
events string[] Eventos a receber: connection, messages, messages_update, history, chats, groups, newsletter_messages, status_posts (ou all).
excludeMessages string[] Filtros de messages: wasSentByApi, wasNotSentByApi, fromMeYes, fromMeNo, isGroupYes, isGroupNo.
addUrlEvents boolean Acrescenta o evento ao fim da URL (…/messages).
addUrlTypesMessages boolean Acrescenta o tipo da mensagem ao fim da URL.
enabled boolean Liga/desliga sem apagar.
action / id string add, update ou delete; id é obrigatório em update/delete. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/webhook' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://meusistema.com.br/webhooks/pontzap",
"events": [
"messages",
"messages_update",
"connection"
],
"excludeMessages": [
"wasSentByApi"
]
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/webhook' , {
method: 'POST' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"url" : "https://meusistema.com.br/webhooks/pontzap" ,
"events" : [
"messages" ,
"messages_update" ,
"connection"
],
"excludeMessages" : [
"wasSentByApi"
]
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/webhook" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" , "Content-Type" : "application/json" },
json = {
"url" : "https://meusistema.com.br/webhooks/pontzap" ,
"events" : [ "messages" , "messages_update" , "connection" ],
"excludeMessages" : [ "wasSentByApi" ],
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar [
{
"id" : "wh_db2aff2c34" ,
"enabled" : true ,
"url" : "https://meusistema.com.br/webhooks/pontzap" ,
"events" : [
"messages" ,
"messages_update" ,
"connection"
],
"addUrlTypesMessages" : false ,
"addUrlEvents" : false ,
"excludeMessages" : [
"wasSentByApi"
]
}
] Erros comuns 400 — Missing webhook url, Invalid webhook url, Invalid event: …, Webhook not found, Invalid action. newsletter_messages e status_posts só chegam se estiverem listados pelo nome.A PontZap só entrega para endereços públicos: localhost e IPs internos são recusados na entrega. Para testar na sua máquina, use um túnel (ngrok, Cloudflare Tunnel). Lista os webhooks da instância.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/webhook' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/webhook' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/webhook" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar [
{
"id" : "wh_db2aff2c34" ,
"enabled" : true ,
"url" : "https://meusistema.com.br/webhooks/pontzap" ,
"events" : [
"messages" ,
"messages_update" ,
"connection"
],
"addUrlTypesMessages" : false ,
"addUrlEvents" : false ,
"excludeMessages" : [
"wasSentByApi"
]
}
] As 20 últimas entregas que falharam de vez, com o payload, o status HTTP e o erro.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/webhook/errors' \
-H 'token: SEU_TOKEN_DA_INSTANCIA' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/webhook/errors' , {
method: 'GET' ,
headers: {
token: 'SEU_TOKEN_DA_INSTANCIA' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/webhook/errors" ,
headers = { "token" : "SEU_TOKEN_DA_INSTANCIA" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar [
{
"created" : "2026-10-13T23:20:00Z" ,
"url" : "https://meusistema.com.br/webhooks/pontzap" ,
"type" : "local" ,
"event" : "messages" ,
"message_type" : "Conversation" ,
"status_code" : 500 ,
"attempts" : 6 ,
"error" : "webhook returned non-success status: 500 Internal Server Error" ,
"payload" : {
"EventType" : "messages" ,
"…" : "…"
},
"stage" : "http" ,
"delivery_id" : "1842"
}
]
Administração Rotas da conta (header admintoken): criar e listar instâncias, campos administrativos, rotação de token e o webhook global. Mais as rotas públicas de saúde.
Cria uma instância desconectada e devolve o token dela. Guarde o token: é ele que autoriza as demais chamadas da instância.
Parâmetros (corpo JSON)
name string obrigatório Nome para você identificar (ex.: a loja ou o cliente).
systemName string Nome do seu sistema.
adminField01 / adminField02 string Campos livres para seu controle (ex.: id do cliente). Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/create' \
-H 'admintoken: SEU_ADMINTOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "loja-centro",
"systemName": "meu-erp"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/create' , {
method: 'POST' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"name" : "loja-centro" ,
"systemName" : "meu-erp"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/create" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" , "Content-Type" : "application/json" },
json = {
"name" : "loja-centro" ,
"systemName" : "meu-erp" ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"response" : "Instance created successfully" ,
"instance" : {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
},
"status" : {
"connected" : false ,
"loggedIn" : false ,
"jid" : null
},
"name" : "loja-centro" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"info" : "Instância criada desconectada. Use /instance/connect para gerar o QR code."
} Todas as instâncias da conta, com estado e token.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/instance/all' \
-H 'admintoken: SEU_ADMINTOKEN' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/all' , {
method: 'GET' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/instance/all" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" },
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar [
{
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
}
] Atualiza adminField01/adminField02 de uma instância.
Parâmetros (corpo JSON)
id string obrigatório Id da instância (r…).
adminField01 / adminField02 string Novos valores. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/updateAdminFields' \
-H 'admintoken: SEU_ADMINTOKEN' \
-H 'Content-Type: application/json' \
-d '{
"id": "r395f3fbc2622e8",
"adminField01": "cliente-42"
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/updateAdminFields' , {
method: 'POST' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "r395f3fbc2622e8" ,
"adminField01" : "cliente-42"
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/updateAdminFields" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" , "Content-Type" : "application/json" },
json = {
"id" : "r395f3fbc2622e8" ,
"adminField01" : "cliente-42" ,
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"id" : "r395f3fbc2622e8" ,
"token" : "7f3c2a1e-…-token-da-instancia" ,
"status" : "disconnected" ,
"paircode" : "" ,
"qrcode" : "" ,
"name" : "loja-centro" ,
"profileName" : "" ,
"isBusiness" : false ,
"systemName" : "meu-erp" ,
"owner" : "" ,
"current_presence" : "unavailable" ,
"currentPresence" : "unavailable" ,
"lastDisconnect" : "" ,
"lastDisconnectReason" : "" ,
"adminField01" : "cliente-42" ,
"adminField02" : "" ,
"created" : "2026-10-13 23:12:52.232Z" ,
"updated" : "2026-10-13 23:12:52.232Z"
} Erros comuns 404 — Instance not found. Gera um novo token. O antigo para de valer na hora — atualize seu sistema antes de confirmar.
Parâmetros (corpo JSON)
id string obrigatório Id da instância.
confirm_impacts boolean obrigatório Precisa ser true. Sem isso, responde 409 listando os impactos. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/instance/token/rotate' \
-H 'admintoken: SEU_ADMINTOKEN' \
-H 'Content-Type: application/json' \
-d '{
"id": "r395f3fbc2622e8",
"confirm_impacts": true
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/instance/token/rotate' , {
method: 'POST' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"id" : "r395f3fbc2622e8" ,
"confirm_impacts" : true
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/instance/token/rotate" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" , "Content-Type" : "application/json" },
json = {
"id" : "r395f3fbc2622e8" ,
"confirm_impacts" : True ,
},
)
print (resposta.status_code, resposta.json()) Erros comuns 409 — Sem confirm_impacts: true (requires_confirmation, impacts, warnings). 404 — Instance not found. Um único endereço que recebe os eventos de todas as instâncias da conta, com os mesmos filtros do webhook de instância.
Parâmetros (corpo JSON)
url string obrigatório Endereço público.
events string[] obrigatório Eventos (mesma lista do webhook de instância).
excludeMessages, addUrlEvents, addUrlTypesMessages, enabled — Como no webhook de instância. Exemplo de requisição cURL JavaScript Python
Copiar curl -X POST 'https://api.pontzap.com.br/globalwebhook' \
-H 'admintoken: SEU_ADMINTOKEN' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://meusistema.com.br/webhooks/todas",
"events": [
"connection",
"messages"
]
}' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/globalwebhook' , {
method: 'POST' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
'Content-Type' : 'application/json' ,
},
body: JSON . stringify ({
"url" : "https://meusistema.com.br/webhooks/todas" ,
"events" : [
"connection" ,
"messages"
]
}),
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.post(
"https://api.pontzap.com.br/globalwebhook" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" , "Content-Type" : "application/json" },
json = {
"url" : "https://meusistema.com.br/webhooks/todas" ,
"events" : [ "connection" , "messages" ],
},
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"id" : "wh_ea62dad75e" ,
"enabled" : true ,
"url" : "https://meusistema.com.br/webhooks/todas" ,
"events" : [
"connection" ,
"messages"
],
"addUrlTypesMessages" : false ,
"addUrlEvents" : false ,
"excludeMessages" : []
} Erros comuns 400 — Missing url or events. Mostra a configuração atual. 404 se ainda não houver.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/globalwebhook' \
-H 'admintoken: SEU_ADMINTOKEN' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/globalwebhook' , {
method: 'GET' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/globalwebhook" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" },
)
print (resposta.status_code, resposta.json()) Últimas entregas que falharam de vez no webhook global (type: "global").
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/globalwebhook/errors' \
-H 'admintoken: SEU_ADMINTOKEN' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/globalwebhook/errors' , {
method: 'GET' ,
headers: {
admintoken: 'SEU_ADMINTOKEN' ,
},
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/globalwebhook/errors" ,
headers = { "admintoken" : "SEU_ADMINTOKEN" },
)
print (resposta.status_code, resposta.json()) Status do servidor GET /status
pública, sem token
Público. Versão e quantas instâncias estão em cada estado.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/status' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/status' , {
method: 'GET' ,
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/status" ,
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"info" : "Server health check completed" ,
"build" : {
"version" : "0.2.0" ,
"revision" : "dev" ,
"date" : ""
},
"instance_counts" : {
"total" : 0 ,
"connected" : 0 ,
"connecting" : 0 ,
"disconnected" : 0 ,
"observed_at" : "2026-10-13T23:12:37Z"
},
"status" : {
"server_status" : "running" ,
"total_instances" : 0 ,
"last_check" : "2026-10-13T23:12:37Z"
}
} Health check GET /health
pública, sem token
Público. Responde {"status":"ok"} se o processo está de pé.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/health' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/health' , {
method: 'GET' ,
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/health" ,
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"status" : "ok"
} Pronto para atender GET /health/ready
pública, sem token
Público. Confere o banco de dados; 503 com ready: false se algo falhar.
Exemplo de requisição cURL JavaScript Python
Copiar curl -X GET 'https://api.pontzap.com.br/health/ready' Copiar const resposta = await fetch ( 'https://api.pontzap.com.br/health/ready' , {
method: 'GET' ,
});
const dados = await resposta. json ();
console. log (resposta.status, dados); Copiar import requests
resposta = requests.get(
"https://api.pontzap.com.br/health/ready" ,
)
print (resposta.status_code, resposta.json()) Exemplo de resposta 200 OK · JSON Copiar {
"ready" : true
}
Em breve
Rotas do contrato uazapi que a PontZap ainda não implementou. Hoje elas respondem 501 com a onda prevista,
então uma integração que as chame recebe um erro claro em vez de um comportamento diferente.
Onda 2 — Contatos na agenda 2 rotas POST /contact/add Adiciona um contato à agenda POST /contact/remove Remove um contato da agenda Onda 3 — Etiquetas e mensagens interativas 13 rotas POST /message/payment/status Atualizar pagamento e pedido POST /send/carousel Enviar carrossel de mídia com botões POST /send/event Enviar evento POST /send/group-invite Enviar convite de grupo POST /send/location-button Solicitar localização do usuário POST /send/menu Enviar menu interativo (botões, carrossel, lista ou enquete) POST /send/pix-button Enviar botão PIX POST /send/request-payment Solicitar pagamento POST /send/status Enviar status (stories) POST /chat/labels Gerencia labels de um chat POST /label/edit Criar, editar ou deletar etiqueta GET /labels Buscar todas as etiquetas POST /labels/refresh Iniciar recarga de etiquetas do WhatsApp Onda 4 — Canais, campanhas em massa, chamadas e SSE 37 rotas POST /call/make Iniciar chamada de voz POST /call/reject Rejeitar chamada recebida POST /sender/advanced Criar envio em massa avançado DELETE /sender/clearall Limpar toda fila de mensagens POST /sender/cleardone Limpar mensagens enviadas POST /sender/edit Controlar campanha de envio em massa GET /sender/listfolders Listar campanhas de envio POST /sender/listmessages Listar mensagens de uma campanha POST /sender/simple Criar nova campanha (Simples) GET /sender/stats Consultar estado e métricas das campanhas POST /newsletter/admin/accept Aceitar convite de admin do canal POST /newsletter/admin/invite Convidar admin do canal POST /newsletter/admin/remove Remover admin do canal POST /newsletter/admin/revoke Revogar convite de admin do canal POST /newsletter/create Criar canal POST /newsletter/delete Deletar canal POST /newsletter/description Atualizar descrição do canal POST /newsletter/follow Seguir canal POST /newsletter/info Buscar informações de um canal POST /newsletter/link Buscar canal por link-chave de convite GET /newsletter/list Listar canais inscritos POST /newsletter/messages Buscar mensagens de um canal POST /newsletter/messages/delete Deletar mensagem recente de um canal POST /newsletter/messages/edit Editar mensagem recente de um canal POST /newsletter/mute Silenciar canal POST /newsletter/name Atualizar nome do canal POST /newsletter/owner/transfer Transferir dono do canal POST /newsletter/picture Atualizar foto do canal POST /newsletter/reaction Reagir a um post do canal POST /newsletter/search Pesquisar canais públicos POST /newsletter/settings Atualizar configurações do canal POST /newsletter/subscribe Assinar live updates temporários de um canal POST /newsletter/unfollow Deixar de seguir canal POST /newsletter/unmute Remover mute do canal POST /newsletter/updates Buscar updates de mensagens de um canal POST /newsletter/viewed Marcar posts do canal como visualizados GET /sse Server-Sent Events (SSE) Onda 5 — Chatwoot, catálogo, respostas rápidas, CRM e proxy 38 rotas POST /message/history-sync Solicitar histórico sob demanda de um chat POST /message/reload Recuperar mensagem que não abriu POST /admin/restart Reiniciar a aplicação POST /admin/token/rotate Rotacionar admin token DELETE /business/catalog/collection/{id} Apagar coleção do catálogo PATCH /business/catalog/collection/{id} Editar coleção do catálogo POST /business/catalog/collection/create Criar coleção no catálogo GET /business/catalog/collection/list Listar coleções do catálogo POST /business/catalog/delete Deletar um produto do catálogo POST /business/catalog/hide Ocultar um produto do catálogo POST /business/catalog/info Obter informações de um produto do catálogo POST /business/catalog/list Listar os produtos do catálogo POST /business/catalog/save Criar ou editar um produto do catálogo POST /business/catalog/show Mostrar um produto do catálogo GET /business/get/categories Obter as categorias de negócios POST /business/get/profile Obter o perfil comercial POST /business/update/profile Atualizar o perfil comercial POST /chat/notes Consultar notas internas do chat POST /chat/notes/edit Editar notas internas do chat POST /chat/notes/refresh Recarregar notas internas do chat no WhatsApp POST /chat/editLead Edita informações de lead POST /instance/updateFieldsMap Nomear campos personalizados de leads POST /lead/resolve Conclui conversas (aguardando você) GET /lead/tags Lista tags de lead POST /lead/tags/edit Cria, edita ou apaga uma tag de lead GET /instance/history-sync/status Consultar o processamento do histórico inicial GET /instance/wa_messages_limits Consultar limites atuais de novas conversas no WhatsApp GET /chatwoot/config Obter configuração do Chatwoot PUT /chatwoot/config Atualizar configuração do Chatwoot GET /instance/proxy Obter configuração de proxy da instância POST /instance/proxy Configurar ou alterar o proxy GET /proxy-managed/cities Proxy Interno - Listar cidades disponíveis GET /proxy-managed/countries Proxy Interno - Listar países disponíveis GET /quick-replies Listar respostas rápidas POST /quick-replies Criar resposta rápida DELETE /quick-replies/{id} Apagar resposta rápida GET /quick-replies/{id} Ver resposta rápida PATCH /quick-replies/{id} Editar resposta rápida