get /pages/{page_id}/page_customers
GET/public_api/v1/pages/{page_id}/page_customersGọi qua 360: GET https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/{page_id}/page_customers
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
Danh sách KHÁCH của trang tạo (hoặc cập nhật) trong khoảng thời gian, có phân trang: tên, PSID, SĐT, email, giới tính, ngày sinh, ghi chú, mã hội thoại. Dùng để đồng bộ tệp khách inbox về CRM, đếm khách mới theo kỳ.
- Thiếu tham số → HTTP 200 +
success:false:since is required!·page_number is required!. - Khoảng quá dài làm Pancake lỗi: thử thật 400 ngày chạy được (22.278 khách), ~3 năm → HTTP 500
"Server internal error". Quét lịch sử nên chia từng quý / năm. - Mặc định lọc theo NGÀY TẠO khách: một ngày có thể
total = 0khách mới nhưng vẫn có khách cũ quay lại — muốn bắt cả khách cũ dùngorder_by=updated_at. - Thời gian trả về là giờ UTC. Phản hồi chứa tên, SĐT khách — chỉ lưu ở nơi có kiểm soát quyền.
Request
Địa chỉ
GET https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/{page_id}/page_customers
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. |
| since | query | timestamp | Có | 1790614800 | Từ (Unix giây, UTC). |
| until | query | timestamp | Có | 1793206799 | Đến (Unix giây, UTC). |
| page_number | query | int | Có | 1 | Trang số, từ 1. |
| page_size | query | int | Không | 100 | Số khách / trang, tối đa 100 (gửi lớn hơn vẫn chỉ trả 100; bỏ trống cũng là 100). |
| order_by | query | string | Không | inserted_at | inserted_at (mặc định — lọc + xếp theo ngày tạo khách) · updated_at (lọc + xếp theo lần cập nhật cuối). Xếp giảm dần. |
Phân trang
Tăng page_number (1, 2, 3…) tới khi customers trả ít hơn page_size; total = tổng số khách khớp bộ lọc.
Ví dụ request
curl -s "https://partner.quantri360.com/v1/pancake_chat/public_api/v1/pages/107896751234567/page_customers?since=1790614800&until=1793206799&page_number=1&page_size=100" \ -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/page_customers",
params={
"since": 1790614800,
"until": 1793206799,
"page_number": 1,
"page_size": 100
},
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/page_customers');
for (const [k, v] of Object.entries({"since":1790614800,"until":1793206799,"page_number":1,"page_size":100})) 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/page_customers' . '?' . http_build_query(['since' => 1790614800, 'until' => 1793206799, 'page_number' => 1, 'page_size' => 100]); $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` khi lỗi (HTTP vẫn 200). |
| total | int | 879 | Tổng số khách khớp bộ lọc. |
| customers | object[] | Khách trên trang. | |
| id | string | f05276aa-cc41-… | Mã khách trên trang. |
| customer_id | string | 5ff5aea0-dc05-… | Mã khách toàn cục Pancake. |
| name | string | Khách hàng A | Tên. |
| alias_name | string | null | Tên gợi nhớ do nhân viên đặt. |
| psid | string | 7712345678901234 | PSID khách trên trang. |
| thread_id | string | 107896751234567_7712345678901234 | Mã hội thoại inbox (`null` với khách chỉ bình luận). |
| phone_numbers | string[] | ["0901234567"] | SĐT đã lưu. |
| emails | string[] | [] | Email (có thể `null`). |
| gender | string | female | `male` · `female` · `null`. |
| birthday | string | null | `YYYY-MM-DD` (phần chưa biết là `00`). |
| lives_in | string | null | Nơi sống. |
| can_inbox | bool | true | Trang còn nhắn được cho khách. |
| notes | object[] | null | Ghi chú: message, created_by{ fb_name, uid }, created_at (Unix mili giây)… |
| recent_orders | object[] | null | Đơn gần đây (nếu dùng Pancake POS). |
| inserted_at | string | 2026-10-29T06:29:52 | Tạo khách — giờ UTC. |
| updated_at | string | 2026-10-29T06:29:52 | Cập nhật cuối — giờ UTC. |
Mẫu phản hồi
{
"total": 17,
"success": true,
"customers": [
{
"id": "f05276aa-cc41-4468-…",
"customer_id": "5ff5aea0-dc05-465f-…",
"name": "Khách hàng A",
"alias_name": null,
"psid": "7712345678901234",
"thread_id": null,
"phone_numbers": [],
"emails": [],
"gender": null,
"birthday": null,
"can_inbox": false,
"notes": null,
"recent_orders": null,
"inserted_at": "2026-10-29T06:29:52",
"updated_at": "2026-10-29T06:29:52"
}
]
}
Bắt đầu dùng
- Đăng ký tài khoản Partner
- Mở loại dữ liệu thuộc nhóm Khách hàng của trang ở trang nền tảng
- Tạo API key (tick kênh Pancake Chat)
- Gọi theo ví dụ ở trên