Get a specific WABA message
Agent Skill
Automate this endpoint with an AI agent using the 2chat-whatsapp-waba skill:
npx skills add 2ChatCo/agent-skills -s 2chat-whatsapp-waba
This endpoint returns a single message you sent or received on a WhatsApp Business API number, identified by its UUID within the conversation it belongs to.
Endpoint
GET https://api.p.2chat.io/open/waba/message/{session_key}/{message_uuid}
Authentication
Include your API key in the X-User-API-Key header. Learn more about authentication.
Parameters
| Parameter | In | Required | Description |
|---|---|---|---|
session_key | path | Yes | The conversation the message belongs to (e.g. WA-WAN95841312-b54d-46e3-b0bc-6414f4a5296b-5215512345432) |
message_uuid | path | Yes | The UUID of the message (e.g. MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485) |
Both values come back on every message returned by Get Messages, on every outbound webhook, and in the reply to Send Message — store them if you plan to look a message up later.
Invocation
- cURL
- Python
- JavaScript
- PHP
curl --location --request GET 'https://api.p.2chat.io/open/waba/message/WA-WAN95841312-b54d-46e3-b0bc-6414f4a5296b-5215512345432/MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485' \
--header 'X-User-API-Key: your_api_key_here'
import requests
session_key = "WA-WAN95841312-b54d-46e3-b0bc-6414f4a5296b-5215512345432"
message_uuid = "MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485"
url = f"https://api.p.2chat.io/open/waba/message/{session_key}/{message_uuid}"
headers = {
"X-User-API-Key": "your_api_key_here"
}
response = requests.get(url, headers=headers)
print(response.json())
const axios = require('axios');
const sessionKey = 'WA-WAN95841312-b54d-46e3-b0bc-6414f4a5296b-5215512345432';
const messageUuid = 'MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485';
const response = await axios.get(`https://api.p.2chat.io/open/waba/message/${sessionKey}/${messageUuid}`, {
headers: {
'X-User-API-Key': 'your_api_key_here'
}
});
console.log(response.data);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.p.2chat.io/open/waba/message/WA-WAN95841312-b54d-46e3-b0bc-6414f4a5296b-5215512345432/MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'X-User-API-Key: your_api_key_here'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Response
Success (HTTP 200 OK)
{
"success": true,
"message": {
"id": "MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485",
"uuid": "MSGaf1fa3a1-0d8d-4aa5-b117-f9425b651485",
"session_key": "WA-WAN95841312-b54d-46e3-b0bc-6414f4a5296b-5215512345432",
"message": {
"text": "hi, do you have this in stock?"
},
"created_at": "2026-09-20T14:03:11",
"remote_phone_number": "+5215512345432",
"sent_by": "user",
"is_from_flow_run": false,
"is_from_api": false,
"is_from_chatter": true,
"is_from_agent": false,
"wa_msg_id": "wamid.HBgMNTIxNTUxMjM0NTQzMhUCABIYFjNBOEFFMEJFREE5N0UyRjk5NTU3AA==",
"wa_msg_ack": 3,
"processed": true,
"error": false,
"sent": true,
"received": true,
"read": true
}
}
| Field | Description |
|---|---|
id | The unique identifier of the message |
uuid | Same as id |
session_key | The conversation the message belongs to |
message.text | The text content of the message, when present |
message.media.url | The 2Chat-hosted media file URL, when the message carries media |
message.media.type | The type of media |
message.media.mime_type | The MIME type of the media |
created_at | When the message was sent, UTC |
remote_phone_number | The contact's phone number |
sent_by | Who sent it: user (the contact), agent, or api |
is_from_flow_run | true if the message was sent by a flow reply |
is_from_api | true if the message was sent through 2Chat's API |
is_from_chatter | true if the contact sent it |
is_from_agent | true if you or one of your agents sent it |
wa_msg_id | The id WhatsApp assigned to the message on their network |
wa_msg_ack | 0: created, 1: sent, 2: delivered, 3: read |
processed | true once WhatsApp has acknowledged the message |
error | true if WhatsApp reported the message as not sent |
sent | true if the message was sent |
received | true if the recipient received it |
read | true if the recipient read it, and has read receipts enabled |
The delivery fields (processed, error, sent, received, read) are only present once WhatsApp has reported a status for the message.
Error
{
"error": true,
"error_message": "Chat session not found"
}
| HTTP | When |
|---|---|
404 | The conversation is not yours, is not a WABA conversation, or holds no message with that UUID |
422 | message_uuid is not a well-formed MSG… identifier |