Acelere sua integração!
Baixe nossa coleção do Postman com todos os endpoints desta página pré-configurados.
Baixar coleção Postman
13 requisições · JSON · Collection v2.1
Esta é a API do
WhatsApp não oficial (WhatsApp Web). Para o número verificado da
sua empresa, com templates aprovados pela Meta, veja a
API Oficial de WhatsApp .
Como funciona
A API WhatsApp da Atys permite que você gerencie conexões WhatsApp Web e envie mensagens através
de canais conectados. Com esta API você pode:
Conectar WhatsApp
Gere QR codes para conectar números WhatsApp.
Gerenciar conexões
Crie, atualize e delete conexões WhatsApp.
Enviar mensagens
Envie mensagens de texto e arquivos via WhatsApp.
Listas e validações
Obtenha listas de contatos e grupos e valide números em massa.
1) Listar WhatsApps
Lista todas as conexões WhatsApp da sua conta com filtros opcionais.
GET
https://api.atys.pro/api/whatsapps
Listar conexões WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Acceptapplication/json Tipo de resposta esperada
Parâmetros de query (opcionais)
Parâmetro Tipo Descrição Exemplo
filterstring Busca textual no nome ou número da conexão ?filter=suporte
loggedboolean Filtrar por status de conexão (true/false) ?logged=true
orderBystring Campo para ordenação (padrão: id) ?orderBy=name
orderModestring Modo de ordenação: ASC ou DESC (padrão: ASC) ?orderMode=DESC
perPageinteger Itens por página (padrão: 100) ?perPage=50
created_atJSON array Intervalo de datas de criação [início, fim] ?created_at=["2025-01-01","2025-12-31"]
updated_atJSON array Intervalo de datas de atualização ?updated_at=["2025-01-01","2025-12-31"]
Dica: você pode combinar múltiplos parâmetros. Exemplo:
?filter=vendas&logged=true&perPage=20&orderBy=name
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapps?filter=suporte&logged=true&perPage=20', {
method: 'GET',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Accept': 'application/json'
}
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.get(
'https://api.atys.pro/api/whatsapps',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Accept': 'application/json'
},
params={
'filter': 'suporte',
'logged': 'true',
'perPage': 20
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapps?filter=suporte&logged=true&perPage=20');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Accept: application/json'
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->get('https://api.atys.pro/api/whatsapps', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Accept' => 'application/json'
],
'query' => [
'filter' => 'suporte',
'logged' => 'true',
'perPage' => 20
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest(
"GET",
"https://api.atys.pro/api/whatsapps?filter=suporte&logged=true&perPage=20",
nil,
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X GET "https://api.atys.pro/api/whatsapps?filter=suporte&logged=true&perPage=20" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Accept: application/json"
2) Gerar QR Code
Gera um QR code para conectar um número WhatsApp à plataforma. O QR code deve ser escaneado usando
o aplicativo WhatsApp no celular.
POST
https://api.atys.pro/api/whatsapp-qrcode
Gerar QR code para conexão WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão WhatsApp
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
osstring Sim Sistema operacional (ex.: "Linux", "Windows", "Mac OS")
browserstring Sim Navegador (ex.: "Chrome", "Firefox", "Safari")
Obrigatoriedade: informe id OU key. Pelo menos um dos
dois é obrigatório.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-qrcode', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 123,
key: '5511999999999',
os: 'Linux',
browser: 'Chrome'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-qrcode',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 123,
'key': '5511999999999',
'os': 'Linux',
'browser': 'Chrome'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-qrcode');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 123,
'key' => '5511999999999',
'os' => 'Linux',
'browser' => 'Chrome'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-qrcode', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 123,
'key' => '5511999999999',
'os' => 'Linux',
'browser' => 'Chrome'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 123,
"key": "5511999999999",
"os": "Linux",
"browser": "Chrome",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-qrcode",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-qrcode \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 123,
"key": "5511999999999",
"os": "Linux",
"browser": "Chrome"
}'
3) Criar conexão WhatsApp
Cria uma nova conexão WhatsApp na plataforma.
POST
https://api.atys.pro/api/whatsapp-create
Criar nova conexão WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
namestring Sim Nome da conexão
keystring Sim Número de telefone com código do país (formato: 5511999999999)
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-create', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
name: 'WhatsApp Suporte',
key: '5511999999999'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-create',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'name': 'WhatsApp Suporte',
'key': '5511999999999'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-create');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'name' => 'WhatsApp Suporte',
'key' => '5511999999999'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-create', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'name' => 'WhatsApp Suporte',
'key' => '5511999999999'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"name": "WhatsApp Suporte",
"key": "5511999999999",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-create",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-create \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "WhatsApp Suporte",
"key": "5511999999999"
}'
4) Atualizar conexão WhatsApp
Atualiza os dados de uma conexão WhatsApp existente.
POST
https://api.atys.pro/api/whatsapp-update
Atualizar conexão WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão a ser atualizada
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
namestring Não Novo nome da conexão
new_keystring Não Novo número (formato: 5511999999999) para atualizar a conexão
Obrigatoriedade: informe id OU key. Pelo menos um dos
dois é obrigatório.
Atenção: se você está atualizando a chave do WhatsApp, deve informar a chave
antiga e a nova chave.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-update', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 123,
key: '5511999999999',
name: 'WhatsApp Vendas',
new_key: '5511888888888'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-update',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 123,
'key': '5511999999999',
'name': 'WhatsApp Vendas',
'new_key': '5511888888888'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-update');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 123,
'key' => '5511999999999',
'name' => 'WhatsApp Vendas',
'new_key' => '5511888888888'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-update', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 123,
'key' => '5511999999999',
'name' => 'WhatsApp Vendas',
'new_key' => '5511888888888'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 123,
"key": "5511999999999",
"name": "WhatsApp Vendas",
"new_key": "5511888888888",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-update",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-update \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 123,
"key": "5511999999999",
"name": "WhatsApp Vendas",
"new_key": "5511888888888"
}'
5) Deletar conexão WhatsApp
Remove uma conexão WhatsApp da plataforma.
POST
https://api.atys.pro/api/whatsapp-delete
Deletar conexão WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão a ser deletada
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
Obrigatoriedade: informe id OU key. Pelo menos um dos
dois é obrigatório.
Atenção: esta ação é irreversível. Ao deletar uma conexão WhatsApp, todas as
conversas e mensagens associadas podem ser perdidas.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-delete', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 29,
key: '5511999999999'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-delete',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 29,
'key': '5511999999999'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-delete');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 29,
'key' => '5511999999999'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-delete', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 29,
'key' => '5511999999999'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 29,
"key": "5511999999999",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-delete",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-delete \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 29,
"key": "5511999999999"
}'
6) Logout do WhatsApp
Desconecta uma sessão WhatsApp ativa, fechando a conexão com o WhatsApp Web.
POST
https://api.atys.pro/api/whatsapp-logout
Fazer logout de uma conexão WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão WhatsApp
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
Obrigatoriedade: informe id OU key. Pelo menos um dos
dois é obrigatório.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-logout', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 29,
key: '5511999999999'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-logout',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 29,
'key': '5511999999999'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-logout');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 29,
'key' => '5511999999999'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-logout', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 29,
'key' => '5511999999999'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 29,
"key": "5511999999999",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-logout",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-logout \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 29,
"key": "5511999999999"
}'
7) Obter lista de contatos
Recupera a lista de contatos de uma conexão WhatsApp específica.
POST
https://api.atys.pro/api/whatsapp-contact-list
Obter lista de contatos do WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão WhatsApp
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
Obrigatoriedade: informe id OU key. Pelo menos um dos
dois é obrigatório.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-contact-list', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 123,
key: '5511999999999'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-contact-list',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 123,
'key': '5511999999999',
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-contact-list');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 123,
'key' => '5511999999999',
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-contact-list', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 123,
'key' => '5511999999999',
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 123,
"key": "5511999999999",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-contact-list",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-contact-list \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 123,
"key": "5511999999999"
}'
8) Obter lista de grupos
Recupera a lista de grupos de uma conexão WhatsApp específica.
POST
https://api.atys.pro/api/whatsapp-group-list
Obter lista de grupos do WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão WhatsApp
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
Obrigatoriedade: informe id OU key. Pelo menos um dos
dois é obrigatório.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-group-list', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 123,
key: '5511999999999'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-group-list',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 123,
'key': '5511999999999'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-group-list');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 123,
'key' => '5511999999999'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-group-list', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 123,
'key' => '5511999999999'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 123,
"key": "5511999999999",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-group-list",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-group-list \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 123,
"key": "5511999999999"
}'
9) Verificar números no WhatsApp
Verifica se uma lista de números possui WhatsApp ativo. Útil para validação em massa de números.
POST
https://api.atys.pro/api/whatsapp-check-on-whatsapp
Verificar múltiplos números no WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros do body (JSON)
Parâmetro Tipo Obrigatório Descrição
idinteger Sim* ID da conexão WhatsApp que fará a verificação
keystring Sim* Número de telefone com código do país (formato: 5511999999999)
numbersarray Sim Array de números a verificar (formato: ["5511999999999", "5511888888888"])
are_groupsboolean Não Se os números são de grupos (padrão: false)
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/whatsapp-check-on-whatsapp', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 123,
key: '5511999999999',
numbers: ['5511999999999', '5511988888888']
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/whatsapp-check-on-whatsapp',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 123,
'key': '5511999999999',
'numbers': ['5511999999999', '5511988888888']
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/whatsapp-check-on-whatsapp');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 123,
'key' => '5511999999999',
'numbers' => ['5511999999999', '5511988888888']
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/whatsapp-check-on-whatsapp', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 123,
'key' => '5511999999999',
'numbers' => ['5511999999999', '5511988888888']
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 123,
"key": "5511999999999",
"numbers": []string{"5511999999999", "5511988888888"},
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/whatsapp-check-on-whatsapp",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/whatsapp-check-on-whatsapp \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 123,
"key": "5511999999999",
"numbers": ["5511999999999", "5511988888888"]
}'
10) Enviar mensagem via WhatsApp
Para enviar mensagens via WhatsApp, utilize o endpoint de envio de mensagens. Este endpoint
permite enviar mensagens de texto e arquivos.
Documentação completa: consulte a documentação de
Envio de Mensagens para ver todos os detalhes,
exemplos de código e parâmetros disponíveis.
POST
https://api.atys.pro/api/api-send-message
Enviar mensagem via WhatsApp
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Parâmetros principais
Parâmetro Tipo Obrigatório Descrição
platformstring Sim Deve ser whatsapp
sender_keystring Sim Número do remetente (canal WhatsApp conectado)
contact_keystring Sim
Número do destinatário. Exemplo: para contato individual 5511999999999 e para grupo 5511999999999-1672123456 ou 5511999999999. Não é necessário @c.us, @g.us ou @s.whatsapp.net.
contact_is_groupboolean Sim
Se o destinatário é um grupo (true) ou contato individual (false). Para grupos, o sender_key deve ser membro do grupo e ter permissão para enviar mensagens (não estar restrito por modo anúncio)
enqueueboolean Não Se true, enfileira a mensagem. Se false, envia imediatamente. (Padrão: true)
textstring Sim* Texto da mensagem
filefile Sim* Arquivo a ser enviado (imagem, PDF, vídeo, etc.)
* Importante: você deve fornecer text OU file .
Pelo menos um dos dois é obrigatório.
Atenção — envio para grupos: se você está enviando uma mensagem para um grupo
(
contact_is_group: true), é obrigatório que o número do WhatsApp remetente
(
sender_key) seja membro do grupo de destino.
Validação automática: o sistema verifica se o remetente é membro do grupo
antes de tentar enviar a mensagem. Se não for membro, a requisição retorna
400 Bad Request e a mensagem é marcada como falha por falta de autorização.
Modo anúncio: se o grupo estiver em modo anúncio (announce mode ), apenas
administradores podem enviar mensagens. O sistema também valida isso automaticamente. Se o
remetente não for administrador em um grupo com modo anúncio ativo, a requisição retorna
400 Bad Request e a mensagem é marcada como falha por falta de autorização.
Envio de arquivos: para enviar imagem, PDF, vídeo ou outros documentos, use
Content-Type: multipart/form-data e envie o campo file. Não defina o
header Content-Type manualmente quando usar FormData; o
navegador/cliente cuidará disso.
Exemplos de código — mensagem de texto
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/api-send-message', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
platform: 'whatsapp',
sender_key: '5511999999999',
contact_key: '5511988888888',
contact_is_group: false,
enqueue: true,
text: 'Olá! Como posso ajudar?'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/api-send-message',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'platform': 'whatsapp',
'sender_key': '5511999999999',
'contact_key': '5511988888888',
'contact_is_group': False,
'enqueue': True,
'text': 'Olá! Como posso ajudar?'
}
)
data = response.json()
print(data)
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/api-send-message');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'platform' => 'whatsapp',
'sender_key' => '5511999999999',
'contact_key' => '5511988888888',
'contact_is_group' => false,
'enqueue' => true,
'text' => 'Olá! Como posso ajudar?'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/api-send-message', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'platform' => 'whatsapp',
'sender_key' => '5511999999999',
'contact_key' => '5511988888888',
'contact_is_group' => false,
'enqueue' => true,
'text' => 'Olá! Como posso ajudar?'
]
]);
$data = json_decode($response->getBody(), true);
print_r($data);
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"platform": "whatsapp",
"sender_key": "5511999999999",
"contact_key": "5511988888888",
"contact_is_group": false,
"enqueue": true,
"text": "Olá! Como posso ajudar?",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest(
"POST",
"https://api.atys.pro/api/api-send-message",
bytes.NewBuffer(jsonData),
)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/api-send-message \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"platform": "whatsapp",
"sender_key": "5511999999999",
"contact_key": "5511988888888",
"contact_is_group": false,
"enqueue": true,
"text": "Olá! Como posso ajudar?"
}'
Exemplos de código — mensagem com arquivo
Use multipart/form-data e envie file junto com os demais campos. Pelo
menos text ou file deve ser enviado.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch + FormData)
Copiar
Copiado!
// Enviar arquivo com FormData
const formData = new FormData();
formData.append('platform', 'whatsapp');
formData.append('sender_key', '5511999999999');
formData.append('contact_key', '5511988888888');
formData.append('contact_is_group', 'false');
formData.append('text', 'Segue o documento solicitado');
formData.append('file', fileInput.files[0]); // arquivo do input type="file"
const response = await fetch('https://api.atys.pro/api/api-send-message', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Accept': 'application/json'
// Não defina Content-Type aqui; o navegador define automaticamente
},
body: formData
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
files = {'file': open('caminho/para/arquivo.pdf', 'rb')}
data = {
'platform': 'whatsapp',
'sender_key': '5511999999999',
'contact_key': '5511988888888',
'contact_is_group': 'false',
'text': 'Segue o documento solicitado'
}
response = requests.post(
'https://api.atys.pro/api/api-send-message',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Accept': 'application/json'
},
data=data,
files=files
)
print(response.json())
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/api-send-message');
$payload = [
'platform' => 'whatsapp',
'sender_key' => '5511999999999',
'contact_key' => '5511988888888',
'contact_is_group' => 'false',
'text' => 'Segue o documento solicitado',
'file' => new CURLFile('/caminho/para/arquivo.pdf')
];
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/api-send-message', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Accept' => 'application/json',
],
'multipart' => [
['name' => 'platform', 'contents' => 'whatsapp'],
['name' => 'sender_key', 'contents' => '5511999999999'],
['name' => 'contact_key', 'contents' => '5511988888888'],
['name' => 'contact_is_group', 'contents' => 'false'],
['name' => 'text', 'contents' => 'Segue o documento solicitado'],
[
'name' => 'file',
'contents' => fopen('/caminho/para/arquivo.pdf', 'r'),
'filename' => 'arquivo.pdf'
],
]
]);
echo $response->getBody();
?>
Go (multipart/form-data)
Copiar
Copiado!
package main
import (
"bytes"
"fmt"
"mime/multipart"
"net/http"
"os"
)
func main() {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
writer.WriteField("platform", "whatsapp")
writer.WriteField("sender_key", "5511999999999")
writer.WriteField("contact_key", "5511988888888")
writer.WriteField("contact_is_group", "false")
writer.WriteField("text", "Segue o documento solicitado")
file, _ := os.Open("/caminho/para/arquivo.pdf")
defer file.Close()
part, _ := writer.CreateFormFile("file", "arquivo.pdf")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.atys.pro/api/api-send-message", body)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Accept", "application/json")
req.Header.Set("Content-Type", writer.FormDataContentType())
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
respBody, _ := io.ReadAll(resp.Body)
fmt.Println(string(respBody))
}
curl -X POST https://api.atys.pro/api/api-send-message \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Accept: application/json" \
-F "platform=whatsapp" \
-F "sender_key=5511999999999" \
-F "contact_key=5511988888888" \
-F "contact_is_group=false" \
-F "text=Segue o documento solicitado" \
-F "file=@/caminho/para/arquivo.pdf"
11) Editar mensagem
Edita o conteúdo de uma mensagem de texto já enviada. A edição é propagada ao WhatsApp do
destinatário (aparece como "editada") e o conteúdo é atualizado no Atys.
POST
https://api.atys.pro/api/edit-message
Editar o texto de uma mensagem enviada
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Request body
Parâmetro Tipo Obrigatório Descrição
idinteger Sim ID interno da mensagem no Atys (não é o ID externo do WhatsApp)
textstring Sim Novo conteúdo de texto da mensagem
Limitações: apenas mensagens com external_id (já confirmadas pelo
provedor) podem ser editadas. A edição é suportada nos canais WhatsApp, WhatsApp Oficial e
Minichat. A aceitação final depende do provedor (o WhatsApp permite editar mensagens recentes).
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/edit-message', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
id: 12345,
text: 'Texto corrigido da mensagem'
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/edit-message',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'id': 12345,
'text': 'Texto corrigido da mensagem'
}
)
print(response.json())
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/edit-message');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'id' => 12345,
'text' => 'Texto corrigido da mensagem'
]));
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/edit-message', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'id' => 12345,
'text' => 'Texto corrigido da mensagem'
]
]);
print_r(json_decode($response->getBody(), true));
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"id": 12345,
"text": "Texto corrigido da mensagem",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.atys.pro/api/edit-message", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/edit-message \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": 12345,
"text": "Texto corrigido da mensagem"
}'
Resposta de sucesso
200 OK — mensagem atualizada
Copiar
Copiado!
{
"id": 12345,
"text": "Texto corrigido da mensagem",
"edited": true,
"external_id": "3EB0XXXXXXXXXXXXXXXX",
"company_channel_id": 87,
"contact_channel_id": 4521,
"message_type_id": 1,
"updated_at": "2025-06-24T14:32:10.000000Z"
}
Erros possíveis
Código Mensagem Causa
509Parâmetros inválidos id ou text ausentes no corpo da requisição
509Registro não encontrado Não existe mensagem com o id informado
509Mensagem sem ID externo, não é possível editar no WhatsApp A mensagem ainda não tem external_id (não confirmada pelo provedor)
401Unauthenticated Token inválido, expirado ou ausente
12) Revogar / eliminar mensagem
Remove ou revoga uma ou mais mensagens. Permite remover apenas para você (somente no Atys) ou
revogar para todos (apaga no WhatsApp do destinatário, exibindo "Esta mensagem foi apagada").
POST
https://api.atys.pro/api/revoke-messages
Revogar / eliminar mensagens
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Content-Typeapplication/json Tipo do conteúdo enviado
Acceptapplication/json Tipo de resposta esperada
Request body
Parâmetro Tipo Obrigatório Descrição
idsarray Sim Lista de IDs internos das mensagens a remover/revogar
scopestring Não me (padrão) = remover apenas para mim · all = revogar para todos
remove_mediaboolean Não Se true, também remove o arquivo de mídia associado (padrão: false)
Remover apenas para mim (scope: "me"): a mensagem é apagada somente
no Atys. Não há chamada ao provedor — o destinatário continua vendo a mensagem no WhatsApp. O
registro é excluído fisicamente da base.
Revogar para todos (scope: "all"): a mensagem é revogada no provedor
e aparece como "Esta mensagem foi apagada" para o destinatário. A mensagem é marcada como revogada
no Atys (ou excluída, se já estava revogada). Suportado em WhatsApp e WhatsApp Oficial. Instagram
e Messenger não suportam revogação; Minichat e Telegram não estão habilitados.
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const response = await fetch('https://api.atys.pro/api/revoke-messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
ids: [12345, 12346],
scope: 'all', // 'me' = só para mim · 'all' = para todos
remove_media: false
})
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import requests
response = requests.post(
'https://api.atys.pro/api/revoke-messages',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={
'ids': [12345, 12346],
'scope': 'all', # 'me' = só para mim · 'all' = para todos
'remove_media': False
}
)
print(response.json())
PHP (cURL)
Copiar
Copiado!
<?php
$ch = curl_init('https://api.atys.pro/api/revoke-messages');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'ids' => [12345, 12346],
'scope' => 'all',
'remove_media' => false
]));
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.atys.pro/api/revoke-messages', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Content-Type' => 'application/json',
'Accept' => 'application/json'
],
'json' => [
'ids' => [12345, 12346],
'scope' => 'all',
'remove_media' => false
]
]);
print_r(json_decode($response->getBody(), true));
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"ids": []int{12345, 12346},
"scope": "all",
"remove_media": false,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.atys.pro/api/revoke-messages", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X POST https://api.atys.pro/api/revoke-messages \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"ids": [12345, 12346],
"scope": "all",
"remove_media": false
}'
Resposta de sucesso
Retorna um array com a resposta do provedor para cada mensagem processada.
200 OK — mensagens revogadas
Copiar
Copiado!
[
{
"Status": true,
"Message": "Message revoked successfully"
},
{
"Status": true,
"Message": "Message revoked successfully"
}
]
Erros possíveis
Código Mensagem Causa
509Parâmetros inválidos ids ausente/não-array, ou scope diferente de me/all
509Erro ao revogar mensagens Falha interna ao processar a revogação
401Unauthenticated Token inválido, expirado ou ausente
Lista as conversas (contact channels) da empresa, com paginação, ordenação e um amplo conjunto de
filtros. Pode incluir o contato relacionado e outras entidades através do parâmetro
with.
GET
https://api.atys.pro/api/contact-channels
Listar conversas / contact channels
Headers obrigatórios
Header Valor Descrição
AuthorizationBearer YOUR_ACCESS_TOKEN Token de autenticação
Acceptapplication/json Tipo de resposta esperada
Paginação, ordenação e inclusão
Parâmetro Tipo Descrição Exemplo
perPageinteger Itens por página (padrão: 20) ?perPage=50
orderBystring Campo de ordenação (padrão: id) ?orderBy=last_message_at
orderModestring ASC ou DESC (padrão: desc)?orderMode=DESC
withJSON array Relações a incluir. Use contact para trazer o contato relacionado ?with=["contact","tags","sector","user"]
Incluir o Contact relacionado: por padrão a listagem retorna apenas o contact
channel. Para trazer o contact aninhado (e outras relações), envie o parâmetro with
como um array JSON, por exemplo ?with=["contact"].
Filtros disponíveis
Filtro Parâmetro(s) Descrição
Texto filterBusca por nome/chave do canal e por nome/e-mail do contato
Etiqueta (tags) tags_ids, tags_operationtags_ids é um JSON com contactTags, ticketTags e crmBusinessTags. tags_operation: XAND (todas), XOR (qualquer) ou AND padrão
Setor sector_id, without_sectorFiltra por setor; without_sector=true traz os sem setor
Status status_id, status_ids, show_all_statuses, include_closedPor padrão exclui Resolvidos/Cancelados/Spam/Banidos. status_ids é um array JSON
Canal channel_type_id, channelable_type, channel_key, company_channel_idTipo de canal (1=Minichat, 2=WhatsApp, 3=WhatsApp Oficial, 4=Instagram, 5=Messenger, 6=Telegram)
Canal oficial channel_type_id=3, ofc_window_min_minutes, ofc_window_max_minutesWhatsApp Oficial via channel_type_id=3; janela de atendimento (em minutos) por ofc_window_*
Atendente user_id, without_user, never_responded_attendantFiltra por atendente atribuído; sem atendente; nunca respondidos por atendente
Origem contact_channel_origin_idFiltra por origem do contact channel
Datas created_at, updated_at, last_message_atIntervalos como array JSON [início, fim]
Outros is_group, muted, pinned, opened, only_unreadFiltros booleanos diversos (grupo, silenciado, fixado, aberto, apenas não lidos)
Exemplos de código
JavaScript
Python
PHP (cURL)
PHP (Guzzle)
Go
cURL
JavaScript (Fetch API)
Copiar
Copiado!
const params = new URLSearchParams({
with: JSON.stringify(['contact', 'tags', 'sector', 'user']),
perPage: '20',
orderBy: 'last_message_at',
orderMode: 'DESC',
channel_type_id: '2', // 2 = WhatsApp
sector_id: '3'
});
const response = await fetch(`https://api.atys.pro/api/contact-channels?${params}`, {
method: 'GET',
headers: {
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Accept': 'application/json'
}
});
const data = await response.json();
console.log(data);
Python (Requests)
Copiar
Copiado!
import json
import requests
params = {
'with': json.dumps(['contact', 'tags', 'sector', 'user']),
'perPage': 20,
'orderBy': 'last_message_at',
'orderMode': 'DESC',
'channel_type_id': 2, # 2 = WhatsApp
'sector_id': 3
}
response = requests.get(
'https://api.atys.pro/api/contact-channels',
headers={
'Authorization': 'Bearer SEU_ACCESS_TOKEN',
'Accept': 'application/json'
},
params=params
)
print(response.json())
PHP (cURL)
Copiar
Copiado!
<?php
$query = http_build_query([
'with' => json_encode(['contact', 'tags', 'sector', 'user']),
'perPage' => 20,
'orderBy' => 'last_message_at',
'orderMode' => 'DESC',
'channel_type_id' => 2,
'sector_id' => 3
]);
$ch = curl_init('https://api.atys.pro/api/contact-channels?' . $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer SEU_ACCESS_TOKEN',
'Accept: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
?>
PHP (Guzzle HTTP Client)
Copiar
Copiado!
<?php
// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->get('https://api.atys.pro/api/contact-channels', [
'headers' => [
'Authorization' => 'Bearer SEU_ACCESS_TOKEN',
'Accept' => 'application/json'
],
'query' => [
'with' => json_encode(['contact', 'tags', 'sector', 'user']),
'perPage' => 20,
'orderBy' => 'last_message_at',
'orderMode' => 'DESC',
'channel_type_id' => 2,
'sector_id' => 3
]
]);
print_r(json_decode($response->getBody(), true));
?>
Go (net/http)
Copiar
Copiado!
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
params := url.Values{}
params.Set("with", `["contact","tags","sector","user"]`)
params.Set("perPage", "20")
params.Set("orderBy", "last_message_at")
params.Set("orderMode", "DESC")
params.Set("channel_type_id", "2")
params.Set("sector_id", "3")
endpoint := "https://api.atys.pro/api/contact-channels?" + params.Encode()
req, _ := http.NewRequest("GET", endpoint, nil)
req.Header.Set("Authorization", "Bearer SEU_ACCESS_TOKEN")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
curl -X GET "https://api.atys.pro/api/contact-channels?with=%5B%22contact%22%5D&perPage=20&orderBy=last_message_at&orderMode=DESC&channel_type_id=2§or_id=3" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Accept: application/json"
Resposta de sucesso
Resposta paginada (padrão do Laravel). Cada item inclui o contact quando solicitado
via with.
200 OK — listagem paginada
Copiar
Copiado!
{
"current_page": 1,
"per_page": 20,
"total": 134,
"data": [
{
"id": 4521,
"company_id": 10,
"contact_id": 980,
"channel_type_id": 2,
"name": "João Silva",
"key": "5511988888888",
"is_group": false,
"sector_id": 3,
"user_id": 7,
"status_id": 67,
"last_message_at": "2025-06-24T14:30:00.000000Z",
"contact": {
"id": 980,
"name": "João Silva",
"email": "joao@exemplo.com"
},
"tags": [],
"sector": { "id": 3, "name": "Vendas" },
"user": { "id": 7, "name": "Atendente 1" }
}
]
}
Erros possíveis
Código Mensagem Causa
401Unauthenticated Token inválido, expirado ou ausente
403Forbidden Usuário sem permissão para visualizar os canais filtrados
14) Erros comuns
401
Unauthenticated
Causa: token de autenticação inválido, expirado ou não fornecido.
Solução: obtenha um novo access_token através do endpoint de autenticação .
404
Registro não encontrado
Causa: o ID da conexão WhatsApp especificado não existe ou não pertence à sua conta.
Solução: verifique se o ID está correto usando o endpoint GET /api/whatsapps.
400
Bad Request
Causas possíveis:
Parâmetros obrigatórios não foram fornecidos ou estão em formato inválido.
Envio para grupos: o número do WhatsApp remetente (sender_key) não é membro do grupo de destino.
Modo anúncio: o grupo está em modo anúncio e o remetente não é administrador.
Solução:
Verifique se todos os parâmetros obrigatórios estão presentes e no formato correto.
Para grupos: certifique-se de que o sender_key é membro do grupo antes de enviar.
Para grupos em modo anúncio: use um sender_key que seja administrador do grupo.
Remetente não é membro do grupo
{
"message": "Sender WhatsApp number is not a member of the group.",
"sender_key": "5521999999999",
"group_key": "120363123456789@g.us"
}
Grupo em modo anúncio e remetente não é admin
{
"message": "Sender cannot send messages to this group. Group is in announce mode and sender is not an admin.",
"sender_key": "5521999999999",
"group_key": "120363123456789@g.us",
"is_announce_mode": true
}
Dicas e boas práticas
Recomendações
Sempre valide números antes de enviar mensagens.
Mantenha suas conexões ativas e monitore o status.
Use nomes descritivos para suas conexões.
Armazene o QR code com segurança.
Implemente tratamento de erros apropriado.
Monitore logs de eventos no painel.
Limitações
Cada conexão suporta apenas um número WhatsApp.
QR codes expiram após alguns minutos.
Respeite as políticas do WhatsApp para evitar bloqueios.
Evite envio em massa não autorizado.
A sessão pode expirar por inatividade.
Não compartilhe suas credenciais de API.