curl --request GET \
--url https://api.ararahq.com/v1/messages/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ararahq.com/v1/messages/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.ararahq.com/v1/messages/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ararahq.com/v1/messages/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"id": "ara_msg_k9Bf2Xq",
"status": "PENDING",
"mode": "LIVE",
"sender": "whatsapp:+5511888888888",
"receiver": "whatsapp:+5511999999999",
"body": "Oi João, seu pedido 12345 foi confirmado!",
"cost": 0.068,
"reason": null
}{
"timestamp": "2026-09-15T14:30:00.000+00:00",
"status": 401,
"error": "Unauthorized",
"path": "/v1/messages"
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Muitas requisições. Tente de novo em instantes.",
"details": {}
}
}Consultar mensagem
Devolve a mensagem no mesmo formato do envio, com status e reason
atualizados. Em produção, prefira o webhook message.status_updated a
consultar em laço.
Só devolve mensagens enviadas pelo mesmo usuário dono da chave. Mensagem de
outro membro da organização responde 403 sem corpo, e ID inexistente
responde 404 sem corpo. Para qualquer mensagem da organização, use
GET /dashboard/messages/{id}.
Permissão: READ.
curl --request GET \
--url https://api.ararahq.com/v1/messages/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ararahq.com/v1/messages/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.ararahq.com/v1/messages/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ararahq.com/v1/messages/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"id": "ara_msg_k9Bf2Xq",
"status": "PENDING",
"mode": "LIVE",
"sender": "whatsapp:+5511888888888",
"receiver": "whatsapp:+5511999999999",
"body": "Oi João, seu pedido 12345 foi confirmado!",
"cost": 0.068,
"reason": null
}{
"timestamp": "2026-09-15T14:30:00.000+00:00",
"status": 401,
"error": "Unauthorized",
"path": "/v1/messages"
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Muitas requisições. Tente de novo em instantes.",
"details": {}
}
}Authorizations
Chave de API da Arara (ara_live_...), enviada no header Authorization: Bearer ara_live_.... Crie e gerencie as chaves no painel: https://app.ararahq.com/dashboard/apikeys. O valor completo aparece uma única vez, na criação.
Path Parameters
ID da mensagem, como veio no campo id do envio (ex. ara_msg_k9Bf2Xq).
"ara_msg_k9Bf2Xq"
Response
Mensagem
Estado atual, sempre em maiúsculas:
PENDING: criada, na fila.SCHEDULED: agendada.PROCESSING: em processamento.SENT: aceita pelo provedor.DELIVERED: entregue no aparelho.READ: lida.FAILED: falhou. Vejareason.CANCELED: cancelada antes do envio.
O webhook message.status_updated usa os mesmos estados em
minúsculas, com PENDING virando queued.
PENDING, SCHEDULED, PROCESSING, SENT, DELIVERED, READ, FAILED, CANCELED Todo envio por chave de API é LIVE.
LIVE Número que enviou.
Número do destinatário.
ID público da mensagem. Use para consultar e para casar com o webhook.
"ara_msg_k9Bf2Xq"
Conteúdo final enviado, com as variáveis aplicadas. Pode vir null.
Custo em reais. Pode vir null. Os valores dos exemplos são ilustrativos.
Motivo da falha quando status é FAILED.