Bài viết

Quản lý bài viết của Blog LadiPage và mục tin tức trên Website LadiPage: liệt kê, xem, tạo bản nháp, sửa, đăng hoặc hẹn giờ đăng, xoá; quản lý danh mục và thẻ. Nội dung bài viết là HTML.

Mọi API trong trang gọi bằng POST https://api.ladipage.net/2.0/api/{tên-api} với header api-key. Xem Xác thực và Mã lỗi.

APIViệc làmLoại
post-list-sitesLiệt kê Blog và Website có bài viếtĐọc
post-listLiệt kê bài viếtĐọc
post-getXem chi tiết bài viếtĐọc
post-list-categoriesLiệt kê danh mục và thẻĐọc
post-createTạo bài viết (bản nháp)Tạo
post-updateSửa bài viếtCập nhật
post-publishĐăng hoặc gỡ bài viếtCập nhật
post-deleteXoá bài viếtXoá
post-create-categoryTạo danh mục bài viếtTạo
post-update-categorySửa danh mục bài viếtCập nhật
post-delete-categoryXoá danh mục bài viếtXoá
post-create-tagTạo thẻ bài viếtTạo
post-update-tagSửa thẻ bài viếtCập nhật
post-delete-tagXoá thẻ bài viếtXoá

Liệt kê Blog và Website có bài viết Đọc

POST/2.0/api/post-list-sites

Liệt kê các Blog và Website của workspace, mỗi nơi kèm site_type và site_id. Gọi trước mọi API post-* khác để lấy cặp site_type + site_id.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typestringLọc theo loại: BLOG = Blog LadiPage, WEBSITE = mục tin tức của Website LadiPage, ALL = cả hai.Giá trị: BLOG, WEBSITE, ALLMặc định: ALL
keywordstringTìm theo tên hoặc tên miền, không phân biệt hoa thường.

Ví dụ

cURL
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": "WEBSITE"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "total": 2,
    "items": [
      {
        "site_type": "WEBSITE",
        "site_id": "6a1f3c9e2b7d4e0012a5c8f1",
        "name": "Thời Trang An",
        "link": "https://thoitrangan.vn"
      },
      {
        "site_type": "BLOG",
        "site_id": "6a0e7b2c4d9f1a0013b6d2e4",
        "name": "Blog Thời Trang An",
        "link": "https://blog.thoitrangan.vn"
      }
    ]
  }
}

link là địa chỉ trang: ưu tiên tên miền riêng đã xác minh, nếu không có thì dùng tên miền mặc định.

Lưu ý

  • site_type phân biệt hai loại nơi chứa bài: BLOG là Blog LadiPage, WEBSITE là mục tin tức của Website LadiPage. Mọi API post-* khác cần đúng cặp site_type + site_id lấy từ đây.
  • Trả tối đa 100 Blog và 100 Website, xếp theo lần cập nhật gần nhất.
  • Nếu vai trò của chủ token trong workspace không được xem Blog hoặc Website, loại đó bị bỏ khỏi danh sách mà không báo lỗi.

Liệt kê bài viết Đọc

POST/2.0/api/post-list

Liệt kê bài viết của một Blog hoặc Website, có phân trang, lọc theo trạng thái, danh mục và từ khoá. Dùng để lấy post_id cho các API xem, sửa, đăng, xoá bài.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG = Blog LadiPage; WEBSITE = mục tin tức của Website LadiPage. Lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website, lấy từ post-list-sites.
keywordstringTìm trong tiêu đề, mô tả ngắn hoặc đường dẫn bài, không phân biệt dấu. Khi có keyword, status và category_id bị bỏ qua.
statusstringLọc theo trạng thái: PUBLISH = đang hiển thị, DRAFT = bản nháp, ALL = tất cả.Giá trị: ALL, PUBLISH, DRAFTMặc định: ALL
category_idstringChỉ lấy bài thuộc danh mục này. Lấy id từ post-list-categories.
pageintegerSố trang, bắt đầu từ 1.Mặc định: 1
limitintegerSố bài mỗi trang, tối đa 50.Mặc định: 20

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-list \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "BLOG",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "status": "PUBLISH",
  "page": 1,
  "limit": 20
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "site_link": "https://blog.thoitrangan.vn",
    "total": 2,
    "page": 1,
    "limit": 20,
    "items": [
      {
        "post_id": "6a2b9d4e1c7f3a0014c8e5b2",
        "title": "Cách chọn giày chạy bộ cho người mới",
        "url": "cach-chon-giay-chay-bo",
        "status": "PUBLISH",
        "published_at": "2026-10-20T09:00:00+07:00",
        "updated_at": "2026-10-22T14:35:12+07:00"
      },
      {
        "post_id": "6a2c1e7f3b9d4a0015d2f6c3",
        "title": "5 mẹo phối đồ công sở mùa thu",
        "url": "5-meo-phoi-do-cong-so-mua-thu",
        "status": "DRAFT",
        "published_at": null,
        "updated_at": "2026-10-27T16:10:45+07:00"
      }
    ]
  }
}

url là đường dẫn (slug) của bài; status là PUBLISH (đang hiển thị) hoặc DRAFT (bản nháp).

Lưu ý

  • Bài đã xoá (trong Thùng rác) không có trong danh sách.
  • status của bài là PUBLISH hoặc DRAFT; với Blog có thể gặp thêm ONLY_FOR_SUBSCRIBER (bài chỉ dành cho người đăng ký, đặt trong ứng dụng LadiPage). Lọc status=PUBLISH không trả các bài này.
  • Blog xếp bài nổi bật trước, rồi bài ghim, rồi bài cập nhật gần nhất. Với Website và khi tìm theo keyword, thứ tự bài chưa được đảm bảo.
  • Ghép link với url để có địa chỉ đầy đủ của bài: <site_link>/<url>.

Xem chi tiết bài viết Đọc

POST/2.0/api/post-get

Lấy đầy đủ một bài viết: nội dung HTML, trường SEO, danh mục và thẻ. Gọi trước post-update để biết giá trị hiện tại.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, đúng loại nơi chứa bài.Giá trị: BLOG, WEBSITE
post_idbắt buộcstringId bài viết, lấy từ post-list.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-get \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "post_id": "66f0a2b4c8d1e3f5a7b9c0d2"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "post_id": "6a2b9d4e1c7f3a0014c8e5b2",
    "site_type": "BLOG",
    "site_id": "6a0e7b2c4d9f1a0013b6d2e4",
    "status": "PUBLISH",
    "published_at": "2026-10-20T09:00:00+07:00",
    "title": "Cách chọn giày chạy bộ cho người mới",
    "url": "cach-chon-giay-chay-bo",
    "link": "https://blog.thoitrangan.vn/cach-chon-giay-chay-bo",
    "description": "Những tiêu chí quan trọng khi chọn đôi giày chạy bộ đầu tiên.",
    "thumbnail": "https://w.ladicdn.com/s800x600/giay-chay-bo.jpg",
    "categories": [
      {
        "id": "6a1f4d2b8c3e5a0016e7a9d1",
        "name": "Kinh nghiệm"
      }
    ],
    "tags": ["giày chạy bộ", "người mới"],
    "meta_title": "Cách chọn giày chạy bộ cho người mới | Thời Trang An",
    "meta_description": "Hướng dẫn chọn giày chạy bộ phù hợp dáng chân và cự ly.",
    "meta_keywords": "giày chạy bộ, chọn giày, chạy bộ",
    "meta_thumbnail": "https://w.ladicdn.com/s1200x630/giay-chay-bo-share.jpg",
    "content": "<h2>Xác định dáng chân</h2><p>Trước khi mua giày, hãy kiểm tra vòm bàn chân của bạn...</p>",
    "content_truncated": true
  }
}

link là địa chỉ đầy đủ của bài; tags là danh sách tên thẻ; content là HTML. content_truncated chỉ có khi nội dung bị cắt.

Lưu ý

  • content là HTML. Nội dung dài hơn 200.000 ký tự bị cắt và có content_truncated: true; khi đó không gửi lại content này qua post-update vì phần bị cắt sẽ mất.
  • Bài đã xoá trả lỗi không tìm thấy.

Liệt kê danh mục và thẻ Đọc

POST/2.0/api/post-list-categories

Liệt kê danh mục và thẻ của một Blog hoặc Website. Dùng để lấy category_id, tag_id cho các API tạo, sửa, xoá bài, danh mục và thẻ.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website, lấy từ post-list-sites.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-list-categories \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "categories": [
      {
        "id": "6a1f4d2b8c3e5a0016e7a9d1",
        "name": "Kinh nghiệm",
        "parent_id": null,
        "is_default": true,
        "position": 0
      },
      {
        "id": "6a1f4d2b8c3e5a0017f1b3c2",
        "name": "Phối đồ",
        "parent_id": "6a1f4d2b8c3e5a0016e7a9d1",
        "is_default": false,
        "position": 1
      }
    ],
    "tags": [
      {
        "id": "6a2a7c3d9e1f4b0018a4c6e9",
        "name": "giày chạy bộ",
        "url": "giay-chay-bo",
        "total_post": 4
      },
      {
        "id": "6a2a7c3d9e1f4b0019b5d7f0",
        "name": "công sở",
        "url": "cong-so",
        "total_post": 2
      }
    ]
  }
}

Lưu ý

  • Trả tối đa 500 danh mục và 500 thẻ; thẻ xếp theo số bài giảm dần.
  • is_default: true là danh mục mặc định của Blog / Website: không xoá được, và nhận các bài của danh mục bị xoá.
  • parent_id rỗng nghĩa là danh mục cấp cao nhất.

Tạo bài viết (bản nháp) Tạo

POST/2.0/api/post-create

Tạo bài viết mới trong một Blog hoặc Website, luôn ở dạng bản nháp, người đọc chưa thấy. Gọi post-publish sau đó để đăng bài.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG = Blog LadiPage; WEBSITE = mục tin tức của Website LadiPage. Lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website, lấy từ post-list-sites.
titlebắt buộcstringTiêu đề bài, không được trùng với bài khác trong cùng Blog / Website.
contentbắt buộcstringNội dung bài dạng HTML (<p>, <h2>, <ul>, <img src>, <a href>...). Không dùng thẻ script.
descriptionstringMô tả ngắn, hiển thị ở danh sách bài.
thumbnailstringURL ảnh đại diện (https).
urlstringĐường dẫn (slug) của bài, vd "cach-chon-giay-chay-bo". Giá trị gửi lên được chuẩn hoá thành slug. Bỏ trống thì tạo từ tiêu đề. Tối đa 200 ký tự; không được trùng với bài khác.
category_idsarray<string>Danh sách id danh mục, lấy từ post-list-categories. Bài chưa có danh mục sẽ được đưa vào danh mục mặc định khi đăng.
tagsarray<string>Danh sách tên thẻ; thẻ chưa có sẽ được tạo mới. Tối đa 30 thẻ, phần dư bị bỏ.
meta_titlestringTiêu đề SEO.
meta_descriptionstringMô tả SEO.
meta_keywordsstringTừ khoá SEO, ngăn cách bằng dấu phẩy.
meta_thumbnailstringURL ảnh hiển thị khi chia sẻ bài lên mạng xã hội.
pinbooleantrue = ghim bài lên đầu danh sách bài. Phải là boolean (true/false), không nhận chuỗi.
outstandbooleantrue = bài nổi bật (trang tin tức hiển thị tối đa 3 bài nổi bật: bài nổi bật mới nhất trước, thiếu thì bù bằng bài mới nhất). Phải là boolean.

Ví dụ

cURL
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": "Cách chọn giày chạy bộ cho người mới",
  "content": "<p>Giày chạy bộ phù hợp giúp bạn tránh chấn thương.</p><h2>1. Chọn đúng size</h2><p>...</p>",
  "category_ids": [
    "66e1b3c5d7f9a1b2c3d4e5f6"
  ],
  "tags": [
    "chạy bộ",
    "giày"
  ]
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "created",
    "post_id": "6a2c1e7f3b9d4a0015d2f6c3",
    "post_status": "DRAFT",
    "title": "5 mẹo phối đồ công sở mùa thu",
    "url": "5-meo-phoi-do-cong-so-mua-thu",
    "message": "Đã tạo bài viết ở dạng bản nháp."
  }
}

Bài mới luôn ở trạng thái DRAFT; url là đường dẫn (slug) đã tạo.

Lưu ý

  • Bài luôn được tạo ở trạng thái DRAFT, người đọc không thấy cho tới khi gọi post-publish.
  • Báo lỗi nếu tiêu đề hoặc đường dẫn đã có ở bài khác của cùng Blog / Website.
  • Website: số bài bị giới hạn theo gói của workspace; vượt giới hạn thì báo lỗi.
  • Website: nếu bài đã tạo nhưng không lưu được pin / outstand, API trả lỗi kèm post_id trong thông báo; gọi post-update với post_id đó để đặt lại, không tạo bài lần nữa.
  • Quyền: Blog cần vai trò Chủ sở hữu, Quản lý, Trưởng nhóm hoặc Biên tập viên; tin tức Website chỉ Chủ sở hữu hoặc Quản lý.

Sửa bài viết Cập nhật

POST/2.0/api/post-update

Sửa nội dung, đường dẫn, danh mục, thẻ, SEO hoặc cờ ghim / nổi bật của một bài. Chỉ các trường được gửi mới thay đổi; không đổi trạng thái đăng (dùng post-publish).

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, đúng loại nơi chứa bài.Giá trị: BLOG, WEBSITE
post_idbắt buộcstringId bài viết, lấy từ post-list.
titlestringTiêu đề mới; không được rỗng, không trùng bài khác trong cùng Blog / Website.
contentstringNội dung HTML mới, thay toàn bộ nội dung cũ. Không dùng thẻ script.
descriptionstringMô tả ngắn.
thumbnailstringURL ảnh đại diện (https).
urlstringĐường dẫn (slug) mới, được chuẩn hoá thành slug. Tối đa 200 ký tự, không trùng bài khác. Đổi url thì địa chỉ cũ của bài không còn dùng được.
category_idsarray<string>Danh sách id danh mục (post-list-categories). Gửi lên là THAY toàn bộ danh mục hiện tại; bỏ trống để giữ nguyên.
tagsarray<string>Danh sách tên thẻ, thẻ chưa có sẽ được tạo. Gửi lên là THAY toàn bộ thẻ hiện tại; bỏ trống để giữ nguyên. Tối đa 30 thẻ.
meta_titlestringTiêu đề SEO.
meta_descriptionstringMô tả SEO.
meta_keywordsstringTừ khoá SEO, ngăn cách bằng dấu phẩy.
meta_thumbnailstringURL ảnh khi chia sẻ lên mạng xã hội.
pinbooleantrue = ghim, false = bỏ ghim. Bỏ trống để giữ nguyên. Phải là boolean.
outstandbooleantrue = bài nổi bật, false = bỏ nổi bật. Bỏ trống để giữ nguyên. Phải là boolean.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-update \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "BLOG",
  "post_id": "66f0a2b4c8d1e3f5a7b9c0d2",
  "meta_description": "Hướng dẫn chọn giày chạy bộ cho người mới bắt đầu, theo dáng chân và mặt đường."
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "post_id": "6a2b9d4e1c7f3a0014c8e5b2",
    "title": "Cách chọn giày chạy bộ cho người mới",
    "post_status": "PUBLISH",
    "changes": ["title", "description", "tags"],
    "status": "saved",
    "message": "Đã lưu thay đổi bài viết."
  }
}

title là tiêu đề TRƯỚC khi sửa; post_status là PUBLISH hoặc DRAFT; changes liệt kê các trường đã đổi.

Lưu ý

  • Lưu ngay, không có bước xác nhận. Nếu bài đang hiển thị (PUBLISH), người đọc thấy thay đổi ngay lập tức; bài nháp vẫn là nháp.
  • Phải gửi ít nhất một trường cần đổi, nếu không API báo lỗi.
  • Nếu không gửi content mà hệ thống tạm thời không đọc được nội dung hiện tại, API từ chối lưu để tránh xoá trắng bài; thử lại sau hoặc gửi kèm content đầy đủ.
  • Quyền: Blog cần vai trò Chủ sở hữu, Quản lý, Trưởng nhóm hoặc Biên tập viên; tin tức Website chỉ Chủ sở hữu hoặc Quản lý.

Đăng hoặc gỡ bài viết Cập nhật

POST/2.0/api/post-publish

Đăng bài lên trang (PUBLISH) hoặc gỡ bài khỏi trang về bản nháp (UNPUBLISH), tối đa 20 bài mỗi lần; có thể hẹn giờ đăng.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website chứa các bài.
post_idsbắt buộcarray<string>Danh sách id bài (post-list), tối đa 20; id thứ 21 trở đi bị bỏ qua. Bài không thuộc site_id này được trả về trong not_found.
actionbắt buộcstringPUBLISH = đăng bài; UNPUBLISH = gỡ khỏi trang, bài trở về bản nháp.Giá trị: PUBLISH, UNPUBLISH
publish_atstringChỉ dùng với PUBLISH, ngày giờ ISO 8601 (vd "2026-11-05T08:00:00+07:00"). Blog: phải là thời điểm trong tương lai = hẹn giờ đăng. Website AI: thời điểm tương lai = hẹn giờ (bài tự hiện lên trang từ lúc đó); thời điểm quá khứ = giữ ngày đăng gốc (dùng khi chuyển bài cũ từ nơi khác sang). Website thường không hỗ trợ (báo lỗi). Bỏ trống để đăng ngay.

Ví dụ

cURL
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": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "post_ids": [
    "66f0a2b4c8d1e3f5a7b9c0d2"
  ],
  "action": "PUBLISH"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "action": "PUBLISH",
    "publish_at": "2026-11-05T08:00:00+07:00",
    "posts": [
      {
        "post_id": "6a2c1e7f3b9d4a0015d2f6c3",
        "title": "5 mẹo phối đồ công sở mùa thu",
        "current_status": "DRAFT"
      }
    ],
    "not_found": ["6a2d0f8a4c1e5b001ae3a7d4"],
    "status": "done",
    "success": 1,
    "failed": 0,
    "site_link": "https://blog.thoitrangan.vn",
    "message": "Đã hẹn giờ đăng 1 bài viết."
  }
}

current_status là trạng thái của bài TRƯỚC khi đổi. publish_at và not_found chỉ có khi có giá trị.

Lưu ý

  • Chạy ngay, không có bước xác nhận: PUBLISH làm bài hiện với người đọc, UNPUBLISH gỡ bài khỏi trang ngay. Bộ nhớ đệm của trang có thể mất khoảng một phút để cập nhật.
  • Không bao giờ gửi email cho người theo dõi Blog khi đăng.
  • Khi đăng, bài chưa có danh mục được đưa vào danh mục mặc định; sitemap được cập nhật theo.
  • Blog có gói đã hết hạn thì không đăng được (UNPUBLISH vẫn chạy).
  • post-list-sites không cho biết website nào là website AI; gửi publish_at cho website thường sẽ nhận lỗi, khi đó bỏ publish_at để đăng ngay.
  • Quyền: Blog cần vai trò Chủ sở hữu, Quản lý, Trưởng nhóm hoặc Biên tập viên; tin tức Website chỉ Chủ sở hữu hoặc Quản lý.

Xoá bài viết Xoá

POST/2.0/api/post-delete

Xoá tối đa 20 bài của một Blog hoặc Website, giống nút Xoá trong ứng dụng: bài bị gỡ khỏi trang và chuyển vào Thùng rác.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website chứa các bài.
post_idsbắt buộcarray<string>Danh sách id bài (post-list), tối đa 20; id thứ 21 trở đi bị bỏ qua. Chỉ bài thuộc đúng site_id này mới bị xoá; id khác trả về trong not_found.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-delete \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "BLOG",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "post_ids": [
    "66f0a2b4c8d1e3f5a7b9c0d2",
    "66f0a2b4c8d1e3f5a7b9c0d3"
  ]
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "deleted",
    "success": 1,
    "failed": 0,
    "not_found": ["6a2d0f8a4c1e5b001ae3a7d4"],
    "site_link": "https://blog.thoitrangan.vn"
  }
}

success là số bài đã xoá. not_found (chỉ có khi có) liệt kê id không thuộc site hoặc đã bị xoá.

Lưu ý

  • Chạy ngay, không có bước xác nhận. Bài đang hiển thị biến mất khỏi trang và sitemap ngay; bài đang hẹn giờ đăng bị huỷ hẹn giờ.
  • Đây là xoá mềm: bài chuyển về bản nháp và nằm trong tab Thùng rác của ứng dụng LadiPage, khôi phục được từ đó (khôi phục xong vẫn là bản nháp, cần post-publish lại). API không có xoá vĩnh viễn hay khôi phục.
  • Quyền: Blog cần vai trò Chủ sở hữu, Quản lý, Trưởng nhóm hoặc Biên tập viên; tin tức Website chỉ Chủ sở hữu hoặc Quản lý.

Tạo danh mục bài viết Tạo

POST/2.0/api/post-create-category

Tạo danh mục bài viết mới trong một Blog hoặc Website, có thể đặt làm danh mục con.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website.
namebắt buộcstringTên danh mục; không trùng danh mục khác. Đường dẫn (slug) của danh mục được tạo tự động từ tên.
descriptionstringMô tả danh mục.
parent_idstringId danh mục cha (post-list-categories). Bỏ trống để tạo danh mục cấp cao nhất.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-create-category \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "name": "Kinh nghiệm chạy bộ"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "created",
    "name": "Phối đồ",
    "message": "Đã tạo danh mục."
  }
}

Không trả id danh mục: gọi post-list-categories để lấy.

Lưu ý

  • Danh mục hiển thị công khai ngay sau khi tạo.
  • Báo lỗi nếu tên hoặc đường dẫn danh mục đã tồn tại.
  • Website: số danh mục bị giới hạn theo gói của workspace.
  • Quyền: Blog cần vai trò Chủ sở hữu, Quản lý, Trưởng nhóm hoặc Biên tập viên; tin tức Website chỉ Chủ sở hữu hoặc Quản lý.

Sửa danh mục bài viết Cập nhật

POST/2.0/api/post-update-category

Sửa tên, đường dẫn, mô tả, danh mục cha, SEO hoặc thứ tự của một danh mục tin tức Website. Chỉ các trường được gửi mới thay đổi. Chỉ dùng cho Website.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringChỉ nhận WEBSITE; gửi BLOG sẽ báo lỗi.Giá trị: WEBSITE
site_idbắt buộcstringId của Website, lấy từ post-list-sites.
category_idbắt buộcstringId danh mục, lấy từ post-list-categories.
namestringTên mới, 1–255 ký tự.
urlstringĐường dẫn (slug) mới, vd "kinh-nghiem": chỉ chữ thường không dấu, chữ số và dấu "-", tối đa 200 ký tự.
descriptionstringMô tả danh mục.
parent_idstringId một danh mục khác của cùng Website để làm danh mục cha, hoặc "" để đưa lên cấp cao nhất. Danh mục mặc định không được có danh mục cha.
meta_titlestringTiêu đề SEO.
meta_descriptionstringMô tả SEO.
meta_keywordsstringTừ khoá SEO.
meta_thumbnailstringURL ảnh https khi chia sẻ lên mạng xã hội, hoặc "" để xoá.
positionintegerThứ tự trong danh sách danh mục, số nhỏ đứng trước. Số nguyên từ 0 đến 100000.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-update-category \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "category_id": "66e1b3c5d7f9a1b2c3d4e5f6",
  "name": "Kinh nghiệm",
  "url": "kinh-nghiem"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "updated",
    "category_id": "6a1f4d2b8c3e5a0017f1b3c2",
    "site_link": "https://thoitrangan.vn"
  }
}

Lưu ý

  • Chạy ngay, không có bước xác nhận; thay đổi hiện trên trang ngay. Đổi url thì địa chỉ cũ của trang danh mục không còn dùng được.
  • Phải gửi ít nhất một trong các trường name, url, description, parent_id, meta_*, position.
  • Báo lỗi nếu tên hoặc đường dẫn trùng danh mục khác.
  • Quyền: chỉ Chủ sở hữu hoặc Quản lý.

Xoá danh mục bài viết Xoá

POST/2.0/api/post-delete-category

Xoá tối đa 20 danh mục của một Blog hoặc Website, giống thao tác xoá trong ứng dụng. Danh mục con bị xoá theo; bài viết không bị xoá mà được chuyển sang danh mục mặc định.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringBLOG hoặc WEBSITE, lấy từ post-list-sites.Giá trị: BLOG, WEBSITE
site_idbắt buộcstringId của Blog hoặc Website chứa các danh mục.
category_idsbắt buộcarray<string>Danh sách id danh mục (post-list-categories), tối đa 20; id thứ 21 trở đi bị bỏ qua. Chỉ danh mục thuộc đúng site_id này mới bị xoá; id khác trả về trong not_found.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-delete-category \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "BLOG",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "category_ids": [
    "66e1b3c5d7f9a1b2c3d4e5f6"
  ]
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "deleted",
    "success": 2,
    "failed": 0,
    "not_found": ["6a1f4d2b8c3e5a001bc2d4e3"]
  }
}

success là số danh mục đã xoá, tính cả danh mục con bị xoá theo. not_found chỉ có khi có id không tìm thấy.

Lưu ý

  • Chạy ngay, không có bước xác nhận, và không khôi phục được qua API hay trong ứng dụng.
  • Mọi danh mục con (nhiều cấp) của danh mục bị xoá cũng bị xoá.
  • Bài viết thuộc các danh mục bị xoá vẫn giữ nguyên trạng thái (đang hiển thị vẫn hiển thị): chúng được gỡ khỏi danh mục đó và gắn vào danh mục mặc định, kể cả bài còn thuộc danh mục khác.
  • Danh mục mặc định (is_default: true) không xoá được. Nếu danh sách có danh mục mặc định, API trả lỗi "Xoá thành công X bản ghi và không thành công Y bản ghi" nhưng các danh mục còn lại VẮN đã bị xoá; nên loại danh mục mặc định trước khi gọi.
  • Quyền: Blog cần vai trò Chủ sở hữu, Quản lý, Trưởng nhóm hoặc Biên tập viên; tin tức Website chỉ Chủ sở hữu hoặc Quản lý.

Tạo thẻ bài viết Tạo

POST/2.0/api/post-create-tag

Tạo thẻ (tag) mới cho tin tức của một Website. Chỉ dùng cho Website; với Blog, thẻ được tạo qua trường tags của post-create / post-update.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringChỉ nhận WEBSITE; gửi BLOG sẽ báo lỗi.Giá trị: WEBSITE
site_idbắt buộcstringId của Website, lấy từ post-list-sites.
namebắt buộcstringTên thẻ, 1–255 ký tự, không trùng thẻ khác.
urlstringĐường dẫn (slug): chỉ chữ thường không dấu, chữ số và dấu "-", tối đa 200 ký tự. Bỏ trống thì tạo từ tên.
descriptionstringMô tả thẻ.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-create-tag \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "name": "Chạy bộ"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "created",
    "tag_id": "6a2a7c3d9e1f4b0019b5d7f0",
    "name": "công sở",
    "url": "cong-so",
    "site_link": "https://thoitrangan.vn"
  }
}

Lưu ý

  • Thẻ có trang riêng hiển thị công khai ngay sau khi tạo.
  • Báo lỗi nếu tên hoặc đường dẫn đã tồn tại.
  • Số thẻ bị giới hạn theo gói của workspace.
  • Quyền: chỉ Chủ sở hữu hoặc Quản lý.

Sửa thẻ bài viết Cập nhật

POST/2.0/api/post-update-tag

Đổi tên, đường dẫn hoặc mô tả của một thẻ tin tức Website. Chỉ các trường được gửi mới thay đổi. Chỉ dùng cho Website.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringChỉ nhận WEBSITE; gửi BLOG sẽ báo lỗi.Giá trị: WEBSITE
site_idbắt buộcstringId của Website, lấy từ post-list-sites.
tag_idbắt buộcstringId thẻ, lấy từ post-list-categories (tags[].id).
namestringTên mới, 1–255 ký tự, không trùng thẻ khác.
urlstringĐường dẫn (slug) mới: chỉ chữ thường không dấu, chữ số và dấu "-", tối đa 200 ký tự.
descriptionstringMô tả thẻ.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-update-tag \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "tag_id": "66d2c4e6f8a0b1c2d3e4f5a6",
  "name": "Chạy bộ đường dài",
  "url": "chay-bo-duong-dai"
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "updated",
    "tag_id": "6a2a7c3d9e1f4b0019b5d7f0",
    "name": "thời trang công sở",
    "url": "thoi-trang-cong-so",
    "site_link": "https://thoitrangan.vn"
  }
}

name và url là giá trị sau khi sửa.

Lưu ý

  • Chạy ngay, không có bước xác nhận; thay đổi hiện trên trang ngay. Đổi url thì địa chỉ cũ của trang thẻ không còn dùng được.
  • Phải gửi ít nhất một trong name, url, description.
  • Báo lỗi nếu tên hoặc đường dẫn trùng thẻ khác.
  • Quyền: chỉ Chủ sở hữu hoặc Quản lý.

Xoá thẻ bài viết Xoá

POST/2.0/api/post-delete-tag

Xoá tối đa 20 thẻ tin tức của một Website. Thẻ được gỡ khỏi mọi bài đang gắn nó; bài viết không bị xoá. Chỉ dùng cho Website.

Tham số

Tham sốKiểuMô tả
store_idstringWorkspace cần thao tác, lấy từ account-list-workspaces (nhận store_id hoặc ladipage_store_id). Bỏ trống thì dùng workspace mà chủ token sở hữu. Chủ token không sở hữu workspace nào mà là thành viên của từ hai workspace trở lên thì bắt buộc truyền.
site_typebắt buộcstringChỉ nhận WEBSITE; gửi BLOG sẽ báo lỗi.Giá trị: WEBSITE
site_idbắt buộcstringId của Website chứa các thẻ.
tag_idsbắt buộcarray<string>Danh sách id thẻ (post-list-categories, tags[].id), tối đa 20; id thứ 21 trở đi bị bỏ qua. Chỉ thẻ thuộc đúng site_id này mới bị xoá; id khác trả về trong not_found.

Ví dụ

cURL
curl -X POST https://api.ladipage.net/2.0/api/post-delete-tag \
  -H "api-key: $LADIPAGE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "site_type": "WEBSITE",
  "site_id": "65a1c3e7b2d94f0012ab34cd",
  "tag_ids": [
    "66d2c4e6f8a0b1c2d3e4f5a6"
  ]
}'

Kết quả

Phản hồi mẫu · JSON
{
  "code": 200,
  "message": "Success",
  "data": {
    "status": "deleted",
    "success": 2,
    "failed": 0,
    "not_found": ["6a2a7c3d9e1f4b001cd6e8a1"],
    "site_link": "https://thoitrangan.vn"
  }
}

success là số thẻ đã xoá. not_found chỉ có khi có id không tìm thấy.

Lưu ý

  • Chạy ngay, không có bước xác nhận, và không khôi phục được qua API hay trong ứng dụng.
  • Trang của thẻ bị gỡ khỏi Website; các bài gắn thẻ vẫn giữ nguyên, chỉ mất thẻ đó.
  • Quyền: chỉ Chủ sở hữu hoặc Quản lý.