WhatsApp API
Gerencie conexões WhatsApp e envie mensagens programaticamente através da API Atys.
Baixe nossa coleção completa do Postman com todos os endpoints pré-configurados.
access_token válido para usar estes endpoints.
Consulte a documentação de autenticação para obter seu token.
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/grupos e valide números em massa
1) Listar WhatsApps
Lista todas as conexões WhatsApp da sua conta com filtros opcionais.
https://api.atys.pro/api/whatsapps
Listar conexões WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros de Query (opcionais)
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
filter |
string | Busca textual no nome ou número da conexão | ?filter=suporte |
logged |
boolean | Filtrar por status de conexão (true/false) | ?logged=true |
orderBy |
string | Campo para ordenação (padrão: id) | ?orderBy=name |
orderMode |
string | Modo de ordenação: ASC ou DESC (padrão: ASC) | ?orderMode=DESC |
perPage |
integer | Items por página (padrão: 100) | ?perPage=50 |
created_at |
JSON array | Intervalo de datas de criação [inicio, fim] | ?created_at=["2025-01-01","2025-12-31"] |
updated_at |
JSON array | Intervalo de datas de atualização | ?updated_at=["2025-01-01","2025-12-31"] |
?filter=vendas&logged=true&perPage=20&orderBy=name
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-qrcode
Gerar QR code para conexão WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão WhatsApp |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
os |
string | ✅ Sim | Sistema operacional (ex: "Linux", "Windows", "Mac OS") |
browser |
string | ✅ Sim | Navegador (ex: "Chrome", "Firefox", "Safari") |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-create
Criar nova conexão WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | ✅ Sim | Nome da conexão |
key |
string | ✅ Sim | Número de telefone com código do país (formato: 5511999999999) |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-update
Atualizar conexão WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão a ser atualizada |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
name |
string | ❌ Não | Novo nome da conexão |
new_key |
string | ❌ Não | Novo número (formato: 5511999999999) para atualizar a conexão |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-delete
Deletar conexão WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão a ser deletada |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-logout
Fazer logout de uma conexão WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão WhatsApp |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-contact-list
Obter lista de contatos do WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão WhatsApp |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-group-list
Obter lista de grupos do WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão WhatsApp |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
https://api.atys.pro/api/whatsapp-check-on-whatsapp
Verificar múltiplos números no WhatsApp
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros do Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | ⚠️ Sim* | ID da conexão WhatsApp que fará a verificação |
key |
string | ⚠️ Sim* | Número de telefone com código do país (formato: 5511999999999) |
numbers |
array | ✅ Sim | Array de números a verificar (formato: ["5511999999999", "5511888888888"]) |
are_groups |
boolean | ❌ Não | Se os números são de grupos (padrão: false) |
Exemplos de Código
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);
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
$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
// 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);
?>
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.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization |
Bearer YOUR_ACCESS_TOKEN | Token de autenticação |
Content-Type |
application/json | Tipo do conteúdo enviado |
Accept |
application/json | Tipo de resposta esperada |
Parâmetros Principais
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
platform |
string | ✅ Sim | Deve ser "whatsapp" |
sender_key |
string | ✅ Sim | Número do remetente (canal WhatsApp conectado) |
contact_key |
string | ✅ 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_group |
boolean | ✅ Sim | Se o destinatário é um grupo (true) ou contato individual (false) Nota: 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)
|
enqueue |
boolean | ❌ Não | Se true, enfileira a mensagem. Se false, envia imediatamente: você cuida do envio. (Padrão: true) |
text |
string | ⚠️ Sim* | Texto da mensagem |
file |
file | ⚠️ Sim* | Arquivo a ser enviado (imagem, PDF, vídeo, etc) |
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 automaticamente se o remetente é membro do grupo antes de tentar enviar a mensagem. Se não for membro, a requisição retornará erro
400 Bad Request e a mensagem será marcada como falha por falta de autorização.
400 Bad Request e
a mensagem será marcada como falha por falta de autorização.
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
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);
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
$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
// 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);
?>
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.
// 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);
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
$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
// 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();
?>
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) Erros Comuns
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.
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.
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_keyque seja administrador do grupo
Exemplos de resposta:
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