curl -X GET "https://suasofia.online/api/user/whatsapp/session-status?sender_id=12&recipient_phone=+1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
const params = new URLSearchParams({
sender_id: '12',
recipient_phone: '+1234567890'
});
const response = await fetch(
`https://suasofia.online/api/user/whatsapp/session-status?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.session_status.can_send_freeform) {
console.log('Sessão ativa — mensagens livres permitidas');
} else {
console.log('Sessão expirada — use uma mensagem de modelo');
}
import requests
response = requests.get(
'https://suasofia.online/api/user/whatsapp/session-status',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sender_id': 12,
'recipient_phone': '+1234567890'
}
)
data = response.json()
session = data['session_status']
if session['can_send_freeform']:
print('Sessão ativa — mensagens livres permitidas')
else:
print('Sessão expirada — use uma mensagem de modelo')
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-24T10:30:00+00:00",
"session_status": {
"is_open": true,
"can_send_freeform": true,
"requires_template": false,
"message": "Sessão aberta (23 hr 45 min restantes). Mensagens livres ilimitadas permitidas.",
"minutes_remaining": 1425,
"expires_at": "2026-02-25T10:30:00+00:00"
}
}
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-22T14:00:00+00:00",
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Sessão expirada. Envie um modelo ou aguarde o cliente responder.",
"expired_at": "2026-02-23T14:00:00+00:00"
}
}
{
"success": true,
"has_conversation": false,
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Nenhuma conversa existe com este destinatário. Envie uma mensagem de modelo primeiro."
}
}
{
"success": false,
"error": "Remetente não encontrado",
"error_code": "SENDER_NOT_FOUND"
}
WhatsApp
Obter Status da Sessão
Verifique o status da janela de mensagens de 24 horas para uma conversa do WhatsApp
GET
/
user
/
whatsapp
/
session-status
curl -X GET "https://suasofia.online/api/user/whatsapp/session-status?sender_id=12&recipient_phone=+1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
const params = new URLSearchParams({
sender_id: '12',
recipient_phone: '+1234567890'
});
const response = await fetch(
`https://suasofia.online/api/user/whatsapp/session-status?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.session_status.can_send_freeform) {
console.log('Sessão ativa — mensagens livres permitidas');
} else {
console.log('Sessão expirada — use uma mensagem de modelo');
}
import requests
response = requests.get(
'https://suasofia.online/api/user/whatsapp/session-status',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sender_id': 12,
'recipient_phone': '+1234567890'
}
)
data = response.json()
session = data['session_status']
if session['can_send_freeform']:
print('Sessão ativa — mensagens livres permitidas')
else:
print('Sessão expirada — use uma mensagem de modelo')
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-24T10:30:00+00:00",
"session_status": {
"is_open": true,
"can_send_freeform": true,
"requires_template": false,
"message": "Sessão aberta (23 hr 45 min restantes). Mensagens livres ilimitadas permitidas.",
"minutes_remaining": 1425,
"expires_at": "2026-02-25T10:30:00+00:00"
}
}
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-22T14:00:00+00:00",
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Sessão expirada. Envie um modelo ou aguarde o cliente responder.",
"expired_at": "2026-02-23T14:00:00+00:00"
}
}
{
"success": true,
"has_conversation": false,
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Nenhuma conversa existe com este destinatário. Envie uma mensagem de modelo primeiro."
}
}
{
"success": false,
"error": "Remetente não encontrado",
"error_code": "SENDER_NOT_FOUND"
}
Este endpoint verifica se existe uma janela de mensagens ativa de 24 horas entre o seu remetente do WhatsApp e um destinatário específico. Use isso para determinar se você pode enviar mensagens livres ou se precisa usar uma mensagem de modelo.
Parâmetros de Consulta
integer
required
O ID do remetente do WhatsApp (obtido do endpoint Obter Remetentes)
string
required
O número de telefone do destinatário no formato internacional (ex:
+1234567890)Campos de Resposta
boolean
Se a solicitação foi bem-sucedida
boolean
Se existe uma conversa com este destinatário
integer
O ID da conversa (apenas presente quando
has_conversation é true)string
O nome do cliente, se disponível (apenas presente quando
has_conversation é true)string
Timestamp ISO 8601 da última mensagem do cliente (apenas presente quando
has_conversation é true)object
Show Propriedades do status da sessão
Show Propriedades do status da sessão
boolean
Se a janela de mensagens de 24 horas está atualmente aberta
boolean
Se mensagens livres (não-template) podem ser enviadas agora
boolean
Se uma mensagem de modelo é necessária para enviar mensagem a este destinatário
string
Descrição legível por humanos do estado atual da sessão
integer
Minutos restantes na janela de 24 horas (apenas presente quando a sessão está aberta)
string
Timestamp ISO 8601 quando a sessão expira (presente quando a sessão está aberta ou não existe mensagem do cliente)
string
Timestamp ISO 8601 quando a sessão expirou (apenas presente quando a sessão expirou)
Respostas de Erro
curl -X GET "https://suasofia.online/api/user/whatsapp/session-status?sender_id=12&recipient_phone=+1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
const params = new URLSearchParams({
sender_id: '12',
recipient_phone: '+1234567890'
});
const response = await fetch(
`https://suasofia.online/api/user/whatsapp/session-status?${params}`,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.session_status.can_send_freeform) {
console.log('Sessão ativa — mensagens livres permitidas');
} else {
console.log('Sessão expirada — use uma mensagem de modelo');
}
import requests
response = requests.get(
'https://suasofia.online/api/user/whatsapp/session-status',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'sender_id': 12,
'recipient_phone': '+1234567890'
}
)
data = response.json()
session = data['session_status']
if session['can_send_freeform']:
print('Sessão ativa — mensagens livres permitidas')
else:
print('Sessão expirada — use uma mensagem de modelo')
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-24T10:30:00+00:00",
"session_status": {
"is_open": true,
"can_send_freeform": true,
"requires_template": false,
"message": "Sessão aberta (23 hr 45 min restantes). Mensagens livres ilimitadas permitidas.",
"minutes_remaining": 1425,
"expires_at": "2026-02-25T10:30:00+00:00"
}
}
{
"success": true,
"has_conversation": true,
"conversation_id": 1234,
"customer_name": "John Doe",
"last_customer_message_at": "2026-02-22T14:00:00+00:00",
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Sessão expirada. Envie um modelo ou aguarde o cliente responder.",
"expired_at": "2026-02-23T14:00:00+00:00"
}
}
{
"success": true,
"has_conversation": false,
"session_status": {
"is_open": false,
"can_send_freeform": false,
"requires_template": true,
"message": "Nenhuma conversa existe com este destinatário. Envie uma mensagem de modelo primeiro."
}
}
{
"success": false,
"error": "Remetente não encontrado",
"error_code": "SENDER_NOT_FOUND"
}
Fluxo de Trabalho Típico
Use este endpoint como parte de um fluxo de envio de mensagens:- Verifique o status da sessão antes de enviar uma mensagem
- Se
can_send_freeformétrue→ use Enviar Mensagem Livre - Se
requires_templateétrue→ use Enviar Mensagem de Modelo
Notas
- A janela de 24 horas é baseada no timestamp da última mensagem de entrada do cliente.
- Cada nova mensagem do cliente reinicia o temporizador de 24 horas.
- Este endpoint não consome nenhum saldo — é uma verificação de status somente leitura.

