get /pages/{page_id}/conversations/{conversation_id}/messages
GET/public_api/v1/pages/{page_id}/conversations/{conversation_id}/messagesGọi qua 360: GET https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/{page_id}/conversations/{conversation_id}/messages
Sắp mở. API này đã chạy thật qua 360 và đang được chốt giá — bạn có thể đọc tài liệu và chuẩn bị tích hợp trước.
Mô tả API
Tin nhắn của MỘT hội thoại (inbox hoặc bình luận) kèm hồ sơ khách: nội dung, người gửi (khách hay nhân viên nào), tệp đính kèm, SĐT bắt được, quảng cáo khách đã bấm, ghi chú nội bộ. Mỗi lần 30 tin; tăng current_count để lấy tin CŨ hơn. Dùng để đọc lại nội dung tư vấn, chấm lý do chốt / không chốt, nối SĐT về đơn hàng.
- Thứ tự:
current_count=0lấy 30 tin MỚI nhất nhưng trong mảng chúng xếp CŨ → MỚI; lôcurrent_count=30là 30 tin cũ hơn nữa, cũng xếp cũ → mới. Muốn cả hội thoại theo thời gian: lấy các lô rồi ghép lô sau lên TRƯỚC. inserted_atở API này là giờ UTC, trong khi export_data trả giờ VN cho cùng hội thoại — đổi múi giờ trước khi ghép hai nguồn.- Phân biệt tin của trang và của khách bằng
from.id= page_id. - Mã hội thoại sai / không thuộc trang → HTTP 200 với
{"message":"conversation_id not found","success":false,"error_code":120}. - Phản hồi chứa dữ liệu cá nhân (tên, SĐT, nội dung chat) — chỉ lưu ở nơi có kiểm soát quyền. Pancake giới hạn 5 lượt / giây / trang.
Request
Địa chỉ
GET https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/{page_id}/conversations/{conversation_id}/messages
Xác thực & gian hàng
| Tên | Vị trí | Kiểu | Mẫu | Mô tả |
|---|---|---|---|---|
| Authorization | header | header | Bearer q360_live_ab12cd34_… | Khóa API của brand (tạo ở mục API key). Bắt buộc với mọi request. Brand suy từ key — không truyền mã brand. |
| platform_shop_id | query | string | 107896751234567 | page_id đã nối — có thể bỏ (lấy từ đường dẫn). |
Tham số request
| Tên | Vị trí | Kiểu | Bắt buộc | Mẫu | Mô tả |
|---|---|---|---|---|---|
| page_id | path | string | Có | 107896751234567 | Mã trang đã nối với 360 (khác trang đã nối → 404). |
| conversation_id | path | string | Có | 107896751234567_7712345678901234 | Mã hội thoại — id ở danh sách hội thoại (v2 /conversations) hoặc data[].id của export_data. |
| current_count | query | int | Không | 0 | Số tin đã lấy. Bỏ trống / 0 = 30 tin MỚI nhất; 30 = 30 tin cũ hơn tiếp theo; cứ thế cộng 30. |
Phân trang
Gọi current_count = 0, 30, 60… — trả < 30 tin (hoặc 0) là hết. Ví dụ thật: hội thoại có 78 tin → 0 → 30 tin, 30 → 30 tin, 60 → 18 tin, 90 → 0 tin.
Ví dụ request
curl -s "https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/107896751234567/conversations/107896751234567_7712345678901234/messages?current_count=0" \ -H "Authorization: Bearer $KEY"
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.get(
"https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/107896751234567/conversations/107896751234567_7712345678901234/messages",
params={
"current_count": 0
},
headers={"Authorization": f"Bearer {KEY}"},
timeout=60,
)
print(r.status_code)
print(r.json())Node.js
const KEY = 'q360_live_...'; // khóa API của brand
const url = new URL('https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/107896751234567/conversations/107896751234567_7712345678901234/messages');
for (const [k, v] of Object.entries({"current_count":0})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
method: 'GET',
headers: { Authorization: `Bearer ${KEY}` },
});
console.log(r.status, await r.json());PHP
<?php $key = 'q360_live_...'; // khóa API của brand $url = 'https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/107896751234567/conversations/107896751234567_7712345678901234/messages' . '?' . http_build_query(['current_count' => 0]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key]); $res = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status, "\n", $res;
Response
Tham số phản hồi (nguyên của Pancake Chat)
| Tên | Kiểu | Mẫu | Mô tả |
|---|---|---|---|
| success | bool | true | `false` + `message` + `error_code` khi lỗi (HTTP vẫn 200). |
| conversation_id | string | 107896751234567_7712345678901234 | |
| messages | object[] | Tối đa 30 tin / lần, TRONG MỖI LẦN xếp từ CŨ đến MỚI (phần tử cuối là tin mới nhất của lô). | |
| id | string | m_USqS7zkMVsgOX8… | Mã tin (bình luận: `<mã bài>_<mã bình luận>`). |
| type | string | INBOX | `INBOX` · `COMMENT`. |
| message | string | Dạ chị cho em xin SĐT ạ | Nội dung đã dựng (có thể chứa HTML). |
| original_message | string | Dạ chị cho em xin SĐT ạ | Văn bản gốc — nên dùng trường này; rỗng với tin chỉ có ảnh / sticker / mẫu. |
| from | object | Người gửi. | |
| id | string | 107896751234567 | Trùng page_id → TRANG gửi (nhân viên / tự động); khác → khách (PSID). |
| name | string | Khách hàng A | Tên hiển thị. |
| admin_name | string | Nhân viên B | Tên nhân viên gửi (tin của trang). |
| uid | string | 2152700b-5b77-… | UUID nhân viên gửi — khớp `users[].id` của /users; tin cũ hoặc tin tự động có thể không có. |
| admin_id | string | Mã tài khoản quản trị gửi. | |
| ai_generated | bool | false | Tin do AI soạn. |
| is_automated | bool | false | Tin gửi tự động. |
| inserted_at | string | 2026-10-27T11:00:10.000000 | Thời điểm gửi — giờ UTC (cộng 7 giờ ra giờ VN). |
| seen | bool | true | Đã xem. |
| has_phone | bool | false | Tin có SĐT. |
| phone_info | object[] | [] | SĐT phát hiện trong tin này. |
| attachments | object[] | [] | Tệp đính kèm: type (`photo` · `video` · `sticker` · `template` · `system_message`), url, title, payload (với `template`)… |
| is_hidden / is_removed | bool | false | Bình luận bị ẩn / bị xóa. |
| parent_id | string | null | Bình luận cha (với bình luận trả lời). |
| … | Còn: show_info, can_hide, can_like, can_remove, can_reply_privately, private_reply_conversation, message_tags, edit_history, rich_message… | ||
| conv_from | object | Khách sở hữu hội thoại: id (PSID), name, email. | |
| customers | object[] | Hồ sơ khách: id, customer_id, fb_id, global_id, name, can_inbox, recent_phone_numbers, ad_clicks[{ ad_id, post_id, inserted_at }], web_sources, personal_info… | |
| activities | object[] | Nguồn mở hội thoại: type (vd `OPEN_THREAD`), source (vd `ADS`), ad_id, ads_context_data{ ad_title, post_id, photo_url }, inserted_at. | |
| ad_clicks | object | Khóa = mã khách; giá trị = mảng { ad_id, post_id, inserted_at } các lần bấm quảng cáo. | |
| conv_phone_numbers | string[] | [] | SĐT phát hiện trong hội thoại. |
| conv_recent_phone_numbers | object[] | [] | SĐT kèm vị trí: phone_number, captured, m_id, offset, length. |
| can_inbox | bool | true | Trang còn nhắn được cho khách. |
| notes | object[] | null | Ghi chú nội bộ về khách (`null` khi chưa có). |
| read_watermarks | object[] | Mốc đã đọc: psid, message_id, watermark (Unix GIÂY). | |
| post | object | null | Bài viết của hội thoại bình luận; `null` với inbox. |
| … | Còn: gender, birthday, lives_in, global_id, is_banned, banned_count, reported_count, recent_orders, recent_phone_numbers, extra_info, profile_updated_at… |
Mẫu phản hồi
{
"success": true,
"conversation_id": "107896751234567_7712345678901234",
"messages": [
{
"id": "m_USqS7zkM…",
"type": "INBOX",
"message": "Dạ shop gửi chị mẫu mới ạ",
"original_message": "Dạ shop gửi chị mẫu mới ạ",
"from": {
"id": "107896751234567",
"name": "Trang ABC",
"admin_name": "Nhân viên B",
"uid": "2152700b-5b77-…",
"ai_generated": false
},
"inserted_at": "2026-10-27T11:00:10.000000",
"page_id": "107896751234567",
"conversation_id": "107896751234567_7712345678901234",
"seen": true,
"has_phone": false,
"attachments": [],
"is_hidden": false,
"is_removed": false,
"parent_id": null
},
{
"id": "m_PN19myjn…",
"type": "INBOX",
"message": "",
"original_message": "",
"from": {
"id": "107896751234567",
"name": "Trang ABC"
},
"inserted_at": "2026-10-29T11:22:34.000000",
"seen": true,
"has_phone": false,
"attachments": [
{
"type": "template",
"title": "Ưu đãi & thông báo",
"payload": {
"template_type": "generic",
"elements": [
"…"
]
}
}
]
}
],
"conv_from": {
"id": "7712345678901234",
"name": "Khách hàng A",
"email": "7712345678901234@facebook.com"
},
"activities": [
{
"type": "OPEN_THREAD",
"source": "ADS",
"ad_id": "23853767528900251",
"psid": "7712345678901234",
"ref": "",
"inserted_at": "2023-04-12T23:02:04",
"ads_context_data": {
"ad_title": "ad",
"post_id": "1861299050895911",
"photo_url": "…"
}
}
],
"read_watermarks": [
{
"psid": "7712345678901234",
"message_id": "m_USqS7zkM…",
"watermark": 1793098810,
"is_group_conv": null
}
],
"conv_phone_numbers": [],
"conv_recent_phone_numbers": [],
"can_inbox": true,
"notes": null,
"post": null,
"gender": "female",
"is_banned": false
}
Bắt đầu dùng
- Đăng ký tài khoản Partner
- Mở loại dữ liệu thuộc nhóm Hội thoại & tin nhắn ở trang nền tảng
- Tạo API key (tick kênh Pancake Chat)
- Gọi theo ví dụ ở trên