Giới thiệu API LadiPage
API LadiPage cho phép hệ thống của bạn đọc và ghi dữ liệu trong tài khoản LadiPage: bài viết Blog và tin tức Website, khách hàng, giao dịch và công việc trên LadiWork, đơn hàng của cửa hàng. Hiện có 86 API. Mọi API gọi bằng HTTPS, dữ liệu gửi và nhận ở dạng JSON.
Yêu cầu khi dùng API
- Mọi lời gọi cần token LadiPage MCP của tài khoản. Xem Xác thực.
- Mỗi token gọi tối đa 60 lượt mỗi phút. Xem Giới hạn và quyền.
- API làm được đúng những việc tài khoản của token làm được trong LadiPage: cùng workspace, cùng vai trò, cùng gói dịch vụ.
- Gọi API từ máy chủ của bạn. Không đặt token trong mã chạy trên trình duyệt hay ứng dụng di động.
Xác thực
Mỗi lời gọi gửi token trong header api-key. Token bắt đầu bằng lfm_. Đây cũng là token bạn dùng để kết nối LadiPage MCP với trợ lý AI.
Lấy token
- Đăng nhập LadiPage.
- Mở trang Tài khoản, tìm mục MCP Server.
- Chọn cách kết nối bằng token, bấm Hiện token rồi Sao chép.
Mỗi tài khoản có một token đang dùng. Token không tự hết hạn, chỉ ngừng hoạt động khi bạn tạo token mới.
Token mang quyền của tài khoản bạn: ai có token là làm được những việc bạn làm được qua API. Nếu lộ token, bấm Tạo lại token ở mục MCP Server. Token cũ ngừng hoạt động ngay, mọi kết nối đang dùng nó (kể cả trợ lý AI) cần cập nhật token mới.
Các API này không nhận khoá API cũ cấp riêng cho từng workspace, cũng không nhận phiên đăng nhập của ứng dụng LadiPage.
Cấu trúc lời gọi
POSThttps://api.ladipage.net/2.0/api/{tên-api}
| Header | Giá trị |
|---|---|
api-key | Token của bạn, dạng lfm_... |
Content-Type | application/json |
Tên API viết thường, các từ nối bằng dấu gạch ngang, ví dụ post-list, lw-list-deals. Tên viết bằng dấu gạch dưới như trong LadiPage MCP (post_list) cũng được nhận. Body là một đối tượng JSON chứa tham số của API. API không cần tham số thì gửi {}.
Kết quả
Mọi phản hồi có cùng khuôn gồm code (trùng mã HTTP), message và data. Thành công thì code là 200 và dữ liệu nằm trong data. Lỗi thì data là null và message nêu lý do.
{
"code": 200,
"message": "Success",
"data": {
"total": 1,
"items": [
{
"store_id": "5f2b8c9d1e3a4b5c6d7e8f90",
"ladipage_store_id": "5f2b8c9d1e3a4b5c6d7e8f90",
"ladisales_store_id": "1024",
"name": "Cửa hàng Mẫu",
"is_owner": true
}
]
}
}Thao tác ghi (tạo, sửa, đăng, huỷ, xoá) chạy ngay khi gọi, không có bước xác nhận. Kiểm tra kỹ tham số trước khi gọi, nhất là với bài viết đang hiển thị và đơn hàng.
Chọn workspace
Dữ liệu LadiPage thuộc về từng workspace. Gọi account-list-workspaces để lấy danh sách workspace mà token được vào, rồi truyền mã workspace vào các API khác.
| Nhóm API | Tham số | Lấy từ |
|---|---|---|
| Bài viết, LadiWork | store_id | Trường store_id của account-list-workspaces |
| Đơn hàng cửa hàng | workspace_id | Trường ladisales_store_id của account-list-workspaces, hoặc shop-list-workspaces |
Tài khoản chỉ thuộc một workspace thì bỏ trống được. Tài khoản thuộc từ hai workspace trở lên nên luôn truyền mã workspace: thiếu mã, API có thể dùng workspace bạn sở hữu hoặc trả lỗi kèm danh sách workspace hợp lệ. Truyền mã của workspace mà token không được vào thì bị từ chối.
Liệt kê workspace Đọc
POST/2.0/api/account-list-workspaces
Trả về các workspace mà chủ token có quyền truy cập, kèm store_id của từng workspace. Gọi đầu tiên để lấy store_id truyền cho các API có tham số store_id.
Tham số
Không có tham số. Gửi body {}.
Ví dụ
curl -X POST https://api.ladipage.net/2.0/api/account-list-workspaces \
-H "api-key: $LADIPAGE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Kết quả
{
"code": 200,
"message": "Success",
"data": {
"total": 2,
"items": [
{
"store_id": "5f2b8c9d1e3a4b5c6d7e8f90",
"ladipage_store_id": "5f2b8c9d1e3a4b5c6d7e8f90",
"ladisales_store_id": "1024",
"name": "Cửa hàng Mẫu",
"is_owner": true
},
{
"store_id": "64c1a7e2f9b3d50012c4e8a1",
"ladipage_store_id": "64c1a7e2f9b3d50012c4e8a2",
"name": "Agency Đối tác",
"is_owner": false
}
]
}
}ladisales_store_id chỉ có khi workspace đã kết nối cửa hàng LadiSales. is_owner là true nếu chủ token là chủ workspace.
Lưu ý
- Không cần tham số. Danh sách gồm workspace do chủ token sở hữu và các workspace họ được mời vào làm thành viên.
store_idlà giá trị truyền vào tham sốstore_idcủa các APIpost-*; các API này cũng nhậnladipage_store_idthay chostore_id.ladisales_store_id(chuỗi số) là mã cửa hàng LadiSales gắn với workspace, cùng giá trị vớiworkspace_idcủa các APIshop-*.- Tài khoản chưa có workspace nào thì API trả lỗi.
Giới hạn và quyền
- 60 lượt mỗi phút cho mỗi token, tính chung mọi API. Vượt mức nhận HTTP 429; chờ sang phút sau rồi gọi lại. Lượt gọi API không trừ vào hạn mức lượt gọi LadiPage MCP.
- Quyền theo người giữ token. API áp đúng vai trò của bạn trong workspace (chủ sở hữu, quản lý, nhân viên...) và gói dịch vụ của workspace. Nhân viên chỉ thấy dữ liệu trong phạm vi được giao, giống trong ứng dụng.
- Xoá chỉ có ở bài viết.
post-delete,post-delete-category,post-delete-taglà các API xoá duy nhất. Khách hàng, giao dịch, công việc và đơn hàng không xoá được qua API. - Mỗi trang tối đa 50 bản ghi ở các API danh sách có phân trang. Dùng
pageđể lấy trang tiếp theo.
Mã lỗi
| Mã HTTP | Khi nào | Cách xử lý |
|---|---|---|
| 200 | Thành công. | Đọc data. |
| 400 | Tham số sai hoặc thiếu, không có quyền, không tìm thấy dữ liệu, hoặc thao tác bị từ chối. message nêu lý do. | Sửa theo message rồi gọi lại. |
| 401 | Thiếu header api-key, token sai hoặc đã được tạo lại. Tên API viết sai cũng nhận mã này. | Kiểm tra token ở mục MCP Server và tên API trong danh mục. |
| 429 | Quá 60 lượt mỗi phút với cùng một token. | Chờ sang phút sau, giãn nhịp gọi. |
| 500 | Lỗi phía LadiPage. | Gọi lại sau ít phút. Lỗi kéo dài thì báo LadiPage kèm thời điểm và tên API. |
Thông báo lỗi nghiệp vụ hiện viết bằng tiếng Việt. Dựa vào mã HTTP để xử lý, dùng message để ghi log và hiển thị.
Ví dụ trọn luồng
Ví dụ dưới đây lấy danh sách Blog, tạo một bài nháp rồi đăng bài. Đặt token vào biến môi trường LADIPAGE_TOKEN trước khi chạy.
# 1. Lấy site_id của Blog
curl -X POST https://api.ladipage.net/2.0/api/post-list-sites \
-H "api-key: $LADIPAGE_TOKEN" -H "Content-Type: application/json" \
-d '{"site_type": "BLOG"}'
# 2. Tạo bài nháp, ghi lại data.post_id
curl -X POST https://api.ladipage.net/2.0/api/post-create \
-H "api-key: $LADIPAGE_TOKEN" -H "Content-Type: application/json" \
-d '{"site_type": "BLOG", "site_id": "65a1c3e7b2d94f0012ab34cd", "title": "Ra mắt sản phẩm mới", "content": "<p>Nội dung bài viết.</p>"}'
# 3. Đăng bài
curl -X POST https://api.ladipage.net/2.0/api/post-publish \
-H "api-key: $LADIPAGE_TOKEN" -H "Content-Type: application/json" \
-d '{"site_type": "BLOG", "site_id": "65a1c3e7b2d94f0012ab34cd", "post_ids": ["66f0a2b4c8d1e3f5a7b9c0d2"], "action": "PUBLISH"}'// Node.js 18 trở lên
const API = "https://api.ladipage.net/2.0/api/";
async function call(name, body) {
const res = await fetch(API + name, {
method: "POST",
headers: {
"api-key": process.env.LADIPAGE_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const json = await res.json();
if (json.code !== 200) throw new Error(json.code + " " + json.message);
return json.data;
}
const sites = await call("post-list-sites", { site_type: "BLOG" });
const blog = sites.items[0];
const post = await call("post-create", {
site_type: "BLOG",
site_id: blog.site_id,
title: "Ra mắt sản phẩm mới",
content: "<p>Nội dung bài viết.</p>",
});
await call("post-publish", {
site_type: "BLOG",
site_id: blog.site_id,
post_ids: [post.post_id],
action: "PUBLISH",
});# pip install requests
import os
import requests
API = "https://api.ladipage.net/2.0/api/"
HEADERS = {"api-key": os.environ["LADIPAGE_TOKEN"]}
def call(name, body):
res = requests.post(API + name, json=body, headers=HEADERS, timeout=30)
payload = res.json()
if payload["code"] != 200:
raise RuntimeError(f"{payload['code']} {payload['message']}")
return payload["data"]
blog = call("post-list-sites", {"site_type": "BLOG"})["items"][0]
post = call("post-create", {
"site_type": "BLOG",
"site_id": blog["site_id"],
"title": "Ra mắt sản phẩm mới",
"content": "<p>Nội dung bài viết.</p>",
})
call("post-publish", {
"site_type": "BLOG",
"site_id": blog["site_id"],
"post_ids": [post["post_id"]],
"action": "PUBLISH",
})Danh mục API
| Nhóm | Số API | Dùng để |
|---|---|---|
| Workspace | 1 | Lấy mã workspace để truyền vào các API khác. |
| Bài viết | 14 | API đọc, tạo, sửa, đăng và xoá bài viết, danh mục, thẻ của Blog LadiPage và mục tin tức Website LadiPage. |
| LadiWork · Khách hàng | 19 | API tìm, lọc, đếm, xem chi tiết, xuất và tạo khách hàng trên LadiWork, cùng lịch sử hoạt động, cuộc gọi, ghi chú, đơn hàng của khách. |
| LadiWork · Giao dịch | 16 | API liệt kê, xem và tạo giao dịch, công việc, việc con, bình luận trên LadiWork, cùng đơn hàng LadiWork. |
| LadiWork · Báo cáo | 22 | API chiến dịch, automation, chuỗi tin, báo cáo giao dịch, credit và nhật ký hoạt động trên LadiWork. |
| Đơn hàng cửa hàng | 14 | API liệt kê, xem, tạo đơn hàng, cập nhật ghi chú, thẻ, thanh toán, huỷ đơn và vận đơn của cửa hàng LadiSales. |