MasterOSTài liệu
Tài liệu

Tài liệu API

Các REST endpoint thật được MasterOS API expose, tổ chức theo resource, dưới prefix /v1.

Đây là các endpoint thật, hôm nay

Tài liệu tham chiếu này mô tả API đúng như nó đang được triển khai ngay bây giờ. Nó không được sinh ra từ một file spec; hãy theo dõi Changelog để biết các thay đổi.

Mọi endpoint đều tương đối so với base URL của API, dưới prefix /v1 (xem Versioning). Mọi endpoint có xác thực đều dùng một session cookie httpOnly được thiết lập bởi POST /v1/auth/login — hiện chưa có cơ chế xác thực bằng API key riêng biệt (xem Authentication).

auth

MethodPathAuthGhi chú
POST/v1/auth/register{ email, password }. Mật khẩu phải từ 12–128 ký tự.
POST/v1/auth/login{ email, password }. Thiết lập session cookie. Bị giới hạn tần suất theo IP và theo email độc lập với nhau.
POST/v1/auth/logoutsessionXoá session cookie.
GET/v1/auth/mesessionTrả về người dùng hiện tại.
GET/v1/auth/googleChuyển hướng tới Google OAuth.
GET/v1/auth/google/callbackCallback OAuth; chuyển hướng vào ứng dụng khi thành công.
GET/v1/auth/facebookChuyển hướng tới Facebook OAuth.
GET/v1/auth/facebook/callbackCallback OAuth; chuyển hướng vào ứng dụng khi thành công.
POST/v1/auth/forgot-password{ email }. Luôn trả về cùng một thông điệp, bất kể email đó đã đăng ký hay chưa.
POST/v1/auth/reset-password{ token, password }. Token chỉ dùng được một lần và có hạn.

chat

MethodPathAuthGhi chú
POST/v1/chatsession{ model, messages, conversationId?, idempotencyKey }. Stream về một response body dạng plain-text; header x-conversation-id của response mang conversation id. idempotencyKey là bắt buộc — một request được gửi lại với cùng key sẽ không bao giờ bị tính phí lại hoặc gọi lại provider.

skills

MethodPathAuthGhi chú
POST/v1/skillssession{ name, instruction, input_schema?, output_schema? }. Tạo một Skill riêng tư cho tài khoản của bạn.
GET/v1/skillssessionLiệt kê các Skill của chính bạn.
GET/v1/skills/templatessessionLiệt kê các template khởi điểm bạn có thể nhân bản thành Skill của riêng bạn.
POST/v1/skills/templates/:id/duplicatesessionSao chép một template thành một Skill mới của riêng bạn.
POST/v1/skills/importsession{ name, instruction, input_schema?, output_schema?, version? } — đúng hình dạng mà GET /v1/skills/:id/export tạo ra, nên export → import round-trip được. Bất kỳ field nào khác (id, owner_id, organization_id, allowed_tools) đều bị từ chối thẳng; một Skill được import không bao giờ mang theo tool binding từ file.
GET/v1/skills/:idsessionMột Skill bạn sở hữu, cùng tất cả các version của nó.
GET/v1/skills/:id/exportsessionHình dạng dữ liệu di động { name, instruction, input_schema, output_schema, version }, khớp với input của endpoint import.
POST/v1/skills/:id/versionssession{ instruction, input_schema?, output_schema? }. Xuất bản một version mới, bất biến.
POST/v1/skills/:id/runsession{ model, input, conversationId?, idempotencyKey }. Đi lại vào cùng pipeline chat như POST /v1/chat, với input đóng vai trò tin nhắn người dùng duy nhất — cùng hành vi idempotency/quota/ledger.

conversations

MethodPathAuthGhi chú
GET/v1/conversationssessionLiệt kê các cuộc trò chuyện của chính bạn.
GET/v1/conversations/:idsessionMột cuộc trò chuyện đơn lẻ cùng các tin nhắn của nó. Trả về 404 cho một cuộc trò chuyện bạn không sở hữu.

files

MethodPathAuthGhi chú
GET/v1/filessessionLiệt kê các file bạn đã tải lên.
POST/v1/filessessionUpload dạng multipart, tên field là file. Chấp nhận văn bản thuần, Markdown, PDF, và .docx, tối đa 20 MB.
DELETE/v1/files/:idsessionXoá một file bạn sở hữu (đối tượng storage + bản ghi).

plans

MethodPathAuthGhi chú
GET/v1/plans— (công khai)Liệt kê các gói kèm giá và model được phép — cố ý công khai để giá cả được nhìn thấy trước khi đăng nhập.

billing

MethodPathAuthGhi chú
POST/v1/billing/checkoutsession{ planId, provider: "sepay" | "paddle" }. Số tiền bị tính phí luôn đến từ việc tra cứu gói ở phía server, không bao giờ từ client. Gói Free và Enterprise không thể checkout theo cách này.
GET/v1/billing/quotasessionGiới hạn quota hằng ngày hiện tại và số dư còn lại của bạn.

Có thêm hai resource tồn tại trong API đang chạy nhưng không được tài liệu hoá như một bề mặt hướng tới khách hàng ở đây: /v1/webhooks/* (chỉ nhận vào, được gọi bởi SePay/Paddle — không phải thứ bạn tự gọi) và /v1/admin/* (nội bộ, chỉ dành cho admin).