Consultar reações
Após uma mensagem ser enviada ou recebida, você pode consultar todas as reações ativas. Cada número de telefone pode ter no máximo uma reação ativa por mensagem. A última reação enviada substitui a anterior.
Esta página cobre a consulta de reações. Para enviar ou remover uma reação, veja Enviar reação.
Consultar reações
Para listar as reações de uma mensagem, faça uma requisição GET informando o message_id retornado no envio.
Endpoint: GET /v1/messages/{message_id}/reactions para o número principal. Para números extras, use GET /v1/numbers/{ref}/messages/{message_id}/reactions, em que {ref} é o alias atual do número ou o id do número (num_…, o number_id da mensagem).
Escopo obrigatório: messages:read
Parâmetros de caminho:
| Parâmetro | Tipo | Descrição |
|---|---|---|
ref | string | (apenas na rota de número extra) Alias do número ao qual a mensagem pertence (main ou o alias de um número extra) ou o id dele (num_…). |
message_id | string | Identificador público da mensagem (msg_{hex32}) |
curl -X GET \ https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions \ -H "Authorization: Bearer SUA_CHAVE"const response = await fetch( 'https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions', { method: 'GET', headers: { 'Authorization': 'Bearer SUA_CHAVE' } });
const result = await response.json();console.log(result);import requests
url = "https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions"headers = { "Authorization": "Bearer SUA_CHAVE"}
response = requests.get(url, headers=headers)result = response.json()print(result)package main
import ( "fmt" "io" "net/http")
func main() { req, _ := http.NewRequest("GET", "https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions", nil) req.Header.Set("Authorization", "Bearer SUA_CHAVE") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))}<?php$url = 'https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions';
$options = [ 'http' => [ 'header' => [ 'Authorization: Bearer SUA_CHAVE' ], 'method' => 'GET' ]];
$context = stream_context_create($options);$result = file_get_contents($url, false, $context);$response = json_decode($result, true);var_dump($response);?>var client = new HttpClient();client.DefaultRequestHeaders.Add("Authorization", "Bearer SUA_CHAVE");
var response = await client.GetAsync( "https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions");var result = await response.Content.ReadAsStringAsync();Console.WriteLine(result);import java.net.http.*;import java.net.URI;
public class TurboNotify { public static void main(String[] args) throws Exception { var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder() .uri(URI.create("https://api.turbonotify.com/v1/messages/msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7/reactions")) .header("Authorization", "Bearer SUA_CHAVE") .GET() .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); }}Exemplos de resposta
Com reações
Status HTTP: 200
{
"message_id": "msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7",
"reactions": [
{
"from": {
"number": "5511988887777",
"contact_id": "ct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"name": "Ana Souza"
},
"emoji": "👍",
"at": "2025-07-16T10:05:00Z",
"direction": "inbound"
},
{
"from": {
"number": "5511977776666"
},
"emoji": "❤️",
"at": "2025-07-16T10:06:30Z",
"direction": "inbound"
}
]
} Sem reações
Status HTTP: 200
{
"message_id": "msg_0198d3c5a1b24d3e9f01a2b3c4d5e6f7",
"reactions": []
} Estrutura da resposta
| Campo | Tipo | Descrição |
|---|---|---|
message_id | string | Identificador público da mensagem. |
reactions | array | Lista de reações ativas (uma por número de telefone). |
reactions[].from | object | Remetente da reação. |
reactions[].from.number | string | Telefone de quem reagiu (sem +). |
reactions[].from.contact_id | string | Identificador público do contato (ct_{hex32}). Omitido quando não disponível. |
reactions[].from.name | string | Nome do remetente no WhatsApp. Omitido quando não disponível. |
reactions[].emoji | string | Emoji da reação. |
reactions[].at | string | Data e hora ISO 8601 em que a reação foi registrada. |
reactions[].direction | string | "inbound" (reação de contato) ou "outbound" (reação do número da organização). |
Erros possíveis
| Status | Código de erro | Descrição |
|---|---|---|
401 | not_authenticated | A chave de API está inválida ou ausente. |
403 | insufficient_scope | A chave de API não possui o escopo messages:read. |
404 | not_found | A mensagem não foi encontrada, pertence a outra organização ou pertence a um número diferente do da URL (na rota atalho sem {ref}, o número principal): todos esses casos devolvem a mesma resposta, sem distinção. |
404 | number_not_found | (apenas na rota com {ref}) O alias ou o id informado na URL não corresponde a nenhum número cadastrado. |
400 | invalid_number_id | (apenas na rota com {ref}) O valor na URL começa com num_, mas não é um id de número válido. |
500 | internal_error | Erro interno inesperado no servidor. |