VI | EN
Nhắn Messenger
Dành cho developer

Get page customers information — API Pancake Chat

get /pages/{page_id}/page_customers · gọi qua Quantri360 bằng một API key cho chính tài khoản / tài sản bạn đã kết nối và ủy quyền — 360 lo việc ký request và làm mới phiên đăng nhập bạn đã cấp.

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 = 0 khách mới nhưng vẫn có khách cũ quay lại — muốn bắt cả khách cũ dùng order_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ênVị tríKiểuMẫuMô tả
AuthorizationheaderheaderBearer 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_idquerystring107896751234567page_id đã nối — có thể bỏ (lấy từ đường dẫn).

Tham số request

TênVị tríKiểuBắt buộcMẫuMô tả
page_idpathstringCó107896751234567Mã trang đã nối với 360.
sincequerytimestampCó1790614800Từ (Unix giây, UTC).
untilquerytimestampCó1793206799Đến (Unix giây, UTC).
page_numberqueryintCó1Trang số, từ 1.
page_sizequeryintKhông100Số 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_byquerystringKhônginserted_atinserted_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ênKiểuMẫuMô tả
successbooltrue`false` + `message` khi lỗi (HTTP vẫn 200).
totalint879Tổng số khách khớp bộ lọc.
customersobject[]Khách trên trang.
idstringf05276aa-cc41-…Mã khách trên trang.
customer_idstring5ff5aea0-dc05-…Mã khách toàn cục Pancake.
namestringKhách hàng ATên.
alias_namestringnullTên gợi nhớ do nhân viên đặt.
psidstring7712345678901234PSID khách trên trang.
thread_idstring107896751234567_7712345678901234Mã hội thoại inbox (`null` với khách chỉ bình luận).
phone_numbersstring[]["0901234567"]SĐT đã lưu.
emailsstring[][]Email (có thể `null`).
genderstringfemale`male` · `female` · `null`.
birthdaystringnull`YYYY-MM-DD` (phần chưa biết là `00`).
lives_instringnullNơi sống.
can_inboxbooltrueTrang còn nhắn được cho khách.
notesobject[]nullGhi chú: message, created_by{ fb_name, uid }, created_at (Unix mili giây)…
recent_ordersobject[]nullĐơn gần đây (nếu dùng Pancake POS).
inserted_atstring2026-10-29T06:29:52Tạo khách — giờ UTC.
updated_atstring2026-10-29T06:29:52Cậ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

  1. Đăng ký tài khoản Partner
  2. Mở loại dữ liệu thuộc nhóm Khách hàng của trang ở trang nền tảng
  3. Tạo API key (tick kênh Pancake Chat)
  4. Gọi theo ví dụ ở trên