myINFO

Cửa API cho khách

Phần mềm của bạn gọi thẳng vào myINFO: đọc bài, đọc kênh, đọc số liệu, và xếp lịch đăng. Dùng cho những việc mà mở màn hình ra bấm tay thì không xuể — máy chủ đơn hàng tự hẹn bài cho đơn mới, bảng theo dõi của công ty tự kéo số về, phần mềm nội bộ đẩy lịch sang đây thay vì nhập hai lần.

Cửa này không phải cửa của tiện ích trình duyệt. Hai tiện ích myINFO đi lối riêng, bằng thẻ riêng, và có hạn gọi riêng. Khách gọi nhiều không làm tiện ích đăng bài lỡ giờ.

Phát một khoá

Vào Quản trị → Khoá API → Thêm mới. Chỉ cần đặt tên khoá — khoá này cắm vào đâu, ví dụ Máy chủ đơn hàng hay Bản chạy thử.

Bấm Lưu là khoá hiện ra trong một hộp kèm nút Chép. Chép rồi cắm thẳng vào cấu hình bên bạn, xong bấm nút xác nhận đã lưu để đóng hộp.

🔴 Hộp ấy là lần duy nhất khoá hiện trên màn. Đóng rồi thì không ai đọc lại được nữa, kể cả bạn: hệ thống không giữ chuỗi khoá, chỉ giữ dấu của nó. Mất khoá thì thu hồi khoá cũ rồi phát khoá mới — không có cách nào xem lại.

Điều cần biết
Khoá chạy dưới tên bạn Nó không bao giờ làm được nhiều hơn chính bạn làm được trên màn hình. Bạn không có quyền xem bài thì khoá của bạn cũng không.
Không ai đọc lại được khoá Cả công ty nhìn thấy bảng khoá — để còn dọn khoá của người đã nghỉ — nhưng bảng chỉ bày tên khoá và tám ký tự cuối, đủ để bạn đối chiếu với chuỗi đang cắm ở máy mình.
Giữ bao nhiêu khoá cũng được Nên mỗi chỗ cắm một khoá: chỗ nào có chuyện thì thu hồi đúng chỗ ấy, không ảnh hưởng nơi khác.
Thu hồi là ngừng ngay Không lấy lại được. Dòng vẫn nằm trong bảng để bạn biết khoá ấy từng có và nghỉ lúc nào.
Cột Dùng gần nhất Khoá im nhiều tháng thì hoặc đã bỏ, hoặc đã lọt ra ngoài mà bạn chưa biết. Cả hai đều là lý do thu hồi.

Gọi thế nào

Khoá đi trong tiêu đề, không đi trên đường dẫn:

Authorization: Bearer info_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Đường dẫn nằm trong nhật ký máy chủ, trong lịch sử trình duyệt và trong tiêu đề Referer gửi sang trang khác. Khoá gửi kiểu ?access_token= bị chối, cố ý.

Thử khoá vừa phát:

curl -H "Authorization: Bearer <khoá của bạn>" https://<site của bạn>/api/v1/info/me

Chín cửa

Cửa Việc Quyền cần có
GET /api/v1/info/me Khoá này của ai, thuộc công ty nào —
GET /api/v1/info/posts Danh sách bài. Lọc thêm ?status=ready Xem bài viết
GET /api/v1/info/posts/{id} Một bài, kèm thân bài Xem bài viết
POST /api/v1/info/posts Soạn một bài mới Thêm bài viết
GET /api/v1/info/channels Danh sách kênh Xem nhóm kênh
GET /api/v1/info/schedules Danh sách lịch đăng. Lọc thêm ?status=pending Xem bài viết
POST /api/v1/info/schedules Xếp một lượt đăng Thêm bài viết
DELETE /api/v1/info/schedules/{id} Huỷ một lượt chưa đăng Sửa bài viết
GET /api/v1/info/figures Số liệu tóm tắt Xem bài viết

Cửa nào trả danh sách thì phân trang: ?page=2&per_page=50, mặc định 25, cao nhất 100. Thân trả về có khối meta kèm total và last_page.

Soạn một bài

curl -X POST https://<site của bạn>/api/v1/info/posts \
  -H "Authorization: Bearer <khoá của bạn>" \
  -H "Content-Type: application/json" \
  -d '{"title": "Hàng mới về", "content": "Áo khoác thu đông đã lên kệ.", "status": "ready"}'
Ô
content Bắt buộc, tối đa 10.000 ký tự.
title Không bắt buộc, tối đa 255 ký tự. Tiêu đề chỉ để bạn nhận ra bài trong danh sách, nó không lên tường.
status draft (mặc định) hoặc ready. Không nhận cảnh nào khác — xem ngay dưới đây.
category_id Không bắt buộc. Phải là chuyên mục của công ty bạn, không thì cửa trả 404.
notes Không bắt buộc, ghi chú nội bộ, tối đa 2.000 ký tự.

Cửa này không đẩy gì lên tường. Nó chỉ dựng bản bài; muốn bài lên kênh thì gọi thêm POST /schedules. Tách làm hai lượt là có chủ ý: dựng nhầm một bài thì xoá đi không ai thấy, còn dựng nhầm một lượt đăng là bài lên tường thật.

Cảnh của bài không phải muốn khai gì cũng được. published là nói dối về quá khứ — không lượt nào đã chạy mà cột lại bảo đã đăng — và cảnh ấy xếp lịch được ngay, tức một lối đi vòng qua bước duyệt. pending_review là quyết định của hệ thống, không phải lời khai của bạn.

Nếu chủ khoá không có quyền duyệt bài mà bạn xin ready, bài được lưu ở cảnh Chờ duyệt và thân trả về kèm một câu nói rõ. Đó đúng là điều xảy ra khi người ấy soạn bài trên màn hình — khoá API không phải lối đi vòng.

Chưa nhận ảnh trong bản này. Cột ảnh giữ mã tệp của kho ảnh, mà mã gửi từ ngoài vào thì phải soi lại có thuộc công ty bạn không; thiếu phép soi ấy là đoán số đọc được tệp của công ty khác. Cần thì báo.

Không có phép chống gọi trùng ở cửa này, khác POST /schedules: hai lượt đăng y hệt là một bài lên tường hai lần, còn hai bản nháp y hệt thì chưa hại ai, mà bài lại không có khoá tự nhiên nào để so. Gọi lại sau một lượt hỏng thì xoá bản thừa đi.

Xếp một lượt đăng

curl -X POST https://<site của bạn>/api/v1/info/schedules \
  -H "Authorization: Bearer <khoá của bạn>" \
  -H "Content-Type: application/json" \
  -d '{"post_id": 566, "channel_id": 1247, "scheduled_at": "2026-10-01T09:30:00+07:00"}'
Ô
post_id Bài phải ở cảnh Chờ đăng hoặc Đã đăng. Bài nháp hay bài đang chờ duyệt thì cửa chối — vì làn đăng cũng sẽ giữ nó lại, và bạn sẽ nhìn một dòng đứng im qua giờ hẹn mà không biết vì sao.
channel_id Kênh phải đang bật.
scheduled_at Nên kèm múi giờ như ví dụ trên. Không kèm thì myINFO hiểu theo múi giờ công ty bạn, không phải múi giờ máy chủ.

Gọi lại y hệt một lượt đã xếp thì không đẻ dòng thứ hai: bạn nhận lại đúng dòng cũ kèm một câu nói rõ. Nhờ vậy lượt gọi đứt giữa chừng cứ gọi lại là được, không sợ một bài lên tường hai lần.

Huỷ chỉ huỷ được lượt chưa đăng. Bài đã lên tường rồi thì xoá dòng lịch chỉ xoá sổ bên này chứ không gỡ bài xuống, nên cửa chối và nói thẳng.

Hạn gọi

60 lượt mỗi phút cho mỗi khoá. Quá thì nhận mã 429; chờ hết phút là gọi tiếp được. Đếm theo từng khoá chứ không theo địa chỉ máy, nên hai khoá của bạn không giành hạn của nhau.

Khi hỏng

Cửa này luôn trả JSON, kể cả lúc hỏng, kể cả khi mã của bạn không khai Accept. Câu giải thích nằm ở khoá message.

Mã Nghĩa
401 Thiếu khoá, khoá sai, hoặc khoá đã thu hồi. Ba cảnh nói cùng một câu — cố ý, để không ai dò được khoá nào có thật.
403 Khoá đúng nhưng chủ khoá không có quyền ấy, hoặc đã rời công ty.
404 Không có bản ghi ấy trong công ty của bạn.
422 Lời khai không dùng được: bài chưa duyệt, kênh đang tắt, giờ nằm trong quá khứ.
429 Quá hạn gọi.

Hai thứ cửa này KHÔNG mở

Bài đã quét nhóm. Đó là tên, đường hồ sơ và chữ của người ngoài công ty bạn — dữ liệu cá nhân theo Nghị định 13/2023. Đẩy nó ra ngoài qua một khoá tự phát là chuyển dữ liệu cá nhân cho bên thứ ba mà người bị thu thập không biết. Xem trên màn Bài đã quét.

Ảnh trong bài. Xem lý do ở mục Soạn một bài.

Mục tài liệu