Viết lại văn bản, kiểm tra ngữ pháp, tóm tắt, dịch và kiểm tra đạo văn trong 56 ngôn ngữ. REST đơn giản, phục vụ từ mạng biên của Cloudflare.
Cùng nguồn gốc
Hiện API chỉ phục vụ yêu cầu từ chính adeptwrite.com (không có tiêu đề CORS). Quyền truy cập bên ngoài bằng khóa API được lên kế hoạch cùng gói Pro. Tài liệu này được công bố sớm để bạn nắm hợp đồng và chuẩn bị trước.
Tóm tắt
API AdeptWrite v1 có ba điểm cuối đang hoạt động. POST /api/v1/run nhận JSON gồm task, mode, lang và text (tối đa 6.000 ký tự) rồi trả văn bản từ một mô hình Cloudflare Workers AI chọn theo ngôn ngữ; POST /api/v1/plagiarism so văn bản với các nguồn mở và liệt kê mọi nguồn đã tra; GET /api/v1/health trả trạng thái dịch vụ. Văn bản không được lưu hay ghi nhật ký; giới hạn 30 yêu cầu AI mỗi phút cho mỗi IP.
Thông tin cơ bản
Địa chỉ gốc:https://adeptwrite.com/api/v1
Định dạng: yêu cầu và phản hồi đều là JSON (Content-Type: application/json, UTF-8).
Xác thực: chưa có; yêu cầu phải đến từ các trang adeptwrite.com (cùng nguồn gốc). Khóa API sẽ có cùng gói Pro.
Quyền riêng tư: trường text không bao giờ được lưu hay ghi nhật ký; phản hồi mang tiêu đề Cache-Control: no-store.
Phiên bản: đường dẫn /v1/ sẽ không thay đổi theo cách làm hỏng tương thích; thay đổi phá vỡ sẽ dùng /v2/.
POST/api/v1/run
Chạy một tác vụ AI trên văn bản và trả kết quả dạng văn bản thuần (không lời dẫn, không khung mã Markdown).
Yêu cầu
Field
Type
Required
Notes
task
string
✓
Tên tác vụ; xem danh sách tác vụ bên dưới.
text
string
✓
Văn bản đầu vào, từ 1 đến 6.000 ký tự.
lang
string
✓
Ngôn ngữ của kết quả: một trong 56 mã ngôn ngữ của trang (en, id, vi, pt-pt, zh-hant…; thẻ BCP 47 như pt-BR được ánh xạ) hoặc auto nghĩa là “cùng ngôn ngữ với đầu vào”.
mode
string
—
Một chế độ có sẵn cho công cụ đó, ví dụ Formal, Akademik, Ringkas, Poin-poin (tên chế độ là nhãn tiếng Indonesia của registry). Bị bỏ qua với tác vụ không có chế độ.
options
object
—
Tùy chọn riêng theo tác vụ: from / to cho translate (từ bất kỳ ngôn ngữ được hỗ trợ sang bất kỳ ngôn ngữ nào khác; from có thể là auto; sr-Cyrl yêu cầu tiếng Serbia chữ Cyrillic), platform (instagram / tiktok / linkedin) cho caption, và các fields có nhãn tùy chọn cho bio, coverletter và meta. Các khóa khác bị bỏ qua.
POST /api/v1/run HTTP/1.1
Content-Type: application/json
{
"task": "paraphrase",
"mode": "Formal",
"lang": "vi",
"text": "Viết tốt thật sự quan trọng với sinh viên.",
"options": {}
}
Phản hồi
Trạng thái 200 với ok: true, kết quả trong output, mô hình thực sự đã trả lời trong model (khác đi khi một mô hình dự phòng thay thế) và thời gian xử lý tính bằng mili giây. truncated: true được thêm vào khi câu trả lời chạm giới hạn độ dài hoặc thời gian và bị cắt.
{
"ok": true,
"output": "Kỹ năng viết có vai trò thiết yếu đối với sinh viên.",
"model": "@cf/qwen/qwen3-30b-a3b-fp8",
"ms": 812
}
Ví dụ: curl
curl -X POST https://adeptwrite.com/api/v1/run \
-H "Content-Type: application/json" \
-d '{"task":"grammar","lang":"vi","text":"Chúng tôi sẽ gữi báo cáo vào ngày mai."}'
Ví dụ: JavaScript (fetch)
const res = await fetch('/api/v1/run', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ task: 'summarize', mode: 'Poin-poin', lang: 'vi', text }),
});
const data = await res.json();
if (!data.ok) throw new Error(data.error.code + ': ' + data.error.message);
console.log(data.output);
POST/api/v1/plagiarism
Chọn 4–8 cụm từ đặc trưng trong văn bản, tìm chúng trong các nguồn mở theo ngôn ngữ của văn bản (Wikipedia, Wikisource, toàn văn Internet Archive, Europe PMC, DOAJ, arXiv; nhà cung cấp tìm kiếm web chỉ khi được cấu hình và được yêu cầu) rồi chấm mức trùng lặp. Chỉ những cụm từ ngắn đó rời khỏi máy chủ.
Yêu cầu
Field
Type
Required
Notes
text
string
✓
Tối thiểu 30 từ, tối đa 6.000 ký tự.
lang
string
✓
Một mã ngôn ngữ của trang hoặc auto.
options
object
—
web: true truy vấn thêm nhà cung cấp tìm kiếm web khi bên vận hành đã cấu hình; webSearched trong phản hồi cho biết nó có thực sự trả lời hay không.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json
{ "text": "…ít nhất 30 từ…", "lang": "vi", "options": { "web": false } }
Phản hồi
Trạng thái 200 với score (số từ trùng ÷ số từ, từ 0 đến 1), matches theo từng nguồn kèm các đoạn passages được tô sáng (vị trí ký tự trong văn bản của bạn), sourcesSearched (đúng những nguồn có câu trả lời nằm trong kết quả), sourcesSkipped kèm lý do, và webSearched.
curl -X POST https://adeptwrite.com/api/v1/plagiarism \
-H "Content-Type: application/json" \
-d '{"lang":"vi","text":"…ít nhất 30 từ…"}'
GET/api/v1/health
Cho biết những dịch vụ nào đang bật. Không có nội dung gửi kèm và không tính vào hạn mức.
Phản hồi
Trạng thái 200. ai là false khi công tắc tắt AI đang bật; plagiarism liệt kê các nguồn mà công cụ kiểm tra đạo văn có thể truy vấn; aidetect mô tả phần phân tích sâu phía máy chủ của công cụ nhận diện AI, hiện chưa triển khai (POST /api/v1/aidetect trả 503 disabled; công cụ nhận diện trên trang chạy ngay trong trình duyệt của bạn).
Viết lại văn bản; chế độ: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammar
Sửa lỗi ngữ pháp và chính tả (với tiếng Indonesia theo EYD V).
tone
Đổi giọng văn; chế độ: Formal (trang trọng), Kantor (công sở), Santai (thân mật).
rewrite
Sửa câu cứng hoặc lủng củng; chế độ: Standar, Formal.
resize
Rút gọn hoặc mở rộng câu; chế độ: Ringkas (rút gọn), Panjangkan (mở rộng).
essay
Phát triển đoạn văn hoặc bài văn từ các ý gạch đầu dòng; chế độ: Akademik, Kreatif, Panjangkan.
summarize
Tóm tắt; chế độ: Poin-poin (gạch đầu dòng), Paragraf (đoạn văn), Satu kalimat (một câu).
translate
Dịch giữa hai ngôn ngữ được hỗ trợ bất kỳ; options.from (hoặc auto) và options.to; chế độ: Alami (tự nhiên, mặc định), Formal (trang trọng), Santai (thân mật).
thesis
Gợi ý tên đề tài khóa luận và dàn ý các chương.
abstract
Abstract có cấu trúc từ bản tóm tắt nghiên cứu.
caption
Caption mạng xã hội; options.platform: instagram, tiktok, linkedin.
email
Email và thư từ; chế độ: Lamaran kerja (ứng tuyển), Surat resmi (thư trang trọng), Follow-up.
headline
Tiêu đề bài viết; chế độ: Kreatif (sáng tạo), Ringkas (ngắn gọn).
product
Mô tả sản phẩm; chế độ: Marketplace (sàn TMĐT), Toko online (website bán hàng).
synonym
Danh sách từ đồng nghĩa cho một từ hoặc cụm từ.
humanize
Viết lại văn bản cứng, chung chung cho tự nhiên hơn; chế độ: Alami (tự nhiên), Pribadi (cá nhân), Profesional (chuyên nghiệp).
meta
Ba cặp tiêu đề và mô tả meta; chế độ: Artikel (bài viết), Produk (sản phẩm), Halaman (trang web bất kỳ).
hashtag
Một dòng hashtag; chế độ: Instagram, TikTok, LinkedIn, X.
bio
Ba bản bio hồ sơ; chế độ: Instagram, LinkedIn, X, TikTok.
outline
Dàn ý đánh số kèm ý nhỏ; chế độ: Artikel (bài viết), Esai (bài văn), Skripsi (khóa luận), Presentasi (thuyết trình).
slogan
Mười gợi ý slogan; chế độ: Merek (thương hiệu), Kampanye (chiến dịch), Produk (sản phẩm).
paragraph
Một đoạn văn từ chủ đề; chế độ: Pembuka (mở bài), Isi (thân bài), Penutup (kết bài).
coverletter
Bản nháp thư xin việc; chế độ: Fresh graduate (mới ra trường), Berpengalaman (có kinh nghiệm), Magang (thực tập).
poem
Thơ ngắn; chế độ: Bebas (thơ tự do), Berima (có vần), Akrostik (chữ đầu dòng), Haiku.
Giới hạn
Độ dài văn bản
Tối đa 6.000 ký tự mỗi yêu cầu (vượt quá sẽ nhận 413 too_long).
Theo địa chỉ IP
30 yêu cầu mỗi phút.
Toàn cục
100 yêu cầu mỗi phút trên toàn dịch vụ, cộng với một trần theo ngày cho các tính năng AI.
Kiểm tra đạo văn
5 lượt mỗi phút cho mỗi IP và 60 lượt mỗi phút trên toàn dịch vụ; tối thiểu 30 từ.
Đầu ra
Giới hạn độ dài riêng cho từng tác vụ, không bao giờ quá 2.048 token; câu trả lời bị cắt sẽ mang truncated: true.
Mô hình
Chọn theo ngôn ngữ: tiếng Anh và tiếng Indonesia chạy trên @cf/aisingapore/gemma-sea-lion-v4-27b-it, mọi ngôn ngữ khác, trong đó có tiếng Việt, chạy trên @cf/qwen/qwen3-30b-a3b-fp8. Khi một mô hình bận, bị giới hạn tần suất, chậm hoặc lỗi, yêu cầu được chuyển sang mô hình kế tiếp trong chuỗi (Qwen3-30B, rồi @cf/google/gemma-4-26b-a4b-it, rồi @cf/meta/llama-3.3-70b-instruct-fp8-fast). Trường model luôn ghi tên mô hình đã trả lời.
Mã lỗi
Trạng thái
Mã
Khi nào xảy ra
400
invalid_request
JSON không hợp lệ, thiếu trường bắt buộc, hoặc task hay lang không xác định.
413
too_long
text vượt quá 6.000 ký tự.
403
forbidden
Yêu cầu không đến từ một trang adeptwrite.com.
429
rate_limited
Vượt giới hạn mỗi phút theo IP hoặc toàn cục. Hãy chờ số giây ghi trong Retry-After.
429
quota_exceeded
Đã dùng hết trần theo ngày của các tính năng AI. Hãy thử lại vào ngày hôm sau (UTC).
502
upstream
Mọi mô hình trong chuỗi đều không trả lời kịp thời.
502
empty_output
Các mô hình đã trả lời nhưng kết quả rỗng.
503
disabled
Bên vận hành đã tạm tắt dịch vụ, hoặc (với /api/v1/aidetect) chưa được triển khai.
Định dạng lỗi
Mọi lỗi đều trả về dạng JSON với mã trạng thái HTTP tương ứng và cùng một cấu trúc:
{ "ok": false, "error": { "code": "rate_limited", "message": "Too many requests. Please try again shortly." } }
Hãy kiểm tra ok trước, rồi đọc error.code để xử lý bằng chương trình; error.message có thể hiển thị cho người dùng một cách an toàn.
Cách dùng khuyến nghị
Gửi văn bản theo từng phần (ví dụ từng đoạn) thay vì cả tài liệu dài; kết quả về nhanh hơn và dễ rà soát hơn.
Xử lý 429 bằng cách chờ tăng dần (exponential back-off), không thử lại ngay.
Đừng gửi dữ liệu cá nhân hay bí mật không cần thiết, dù chúng tôi không lưu; nguyên tắc tối thiểu hóa dữ liệu vẫn áp dụng.
Kết quả AI có thể sai; hãy trình bày nó như gợi ý để xem lại, không phải sự thật cuối cùng.
Câu hỏi thường gặp
Tôi có thể gọi API từ ứng dụng hoặc tên miền của mình không?
Hiện chưa. Worker hiện không gửi tiêu đề CORS và chỉ phục vụ các trang adeptwrite.com. Quyền truy cập bên ngoài bằng khóa API được lên kế hoạch cùng gói Pro; tài liệu này sẽ được cập nhật khi có.
Văn bản gửi tới API có được lưu không?
Không. Văn bản được chuyển cho mô hình để tạo câu trả lời rồi bị bỏ đi. Nhật ký chỉ chứa siêu dữ liệu (mã trạng thái, tác vụ, thời gian xử lý). Xem chính sách quyền riêng tư để biết đầy đủ chi tiết.
Tại sao kết quả là văn bản thuần chứ không phải JSON có cấu trúc?
Mỗi tác vụ tạo ra một văn bản dùng ngay, không lời dẫn hay khung mã Markdown, để hiển thị thẳng trong trình soạn thảo. Cấu trúc bổ sung (ví dụ danh sách thay đổi) được lên kế hoạch cho phiên bản sau mà không đổi v1.
API có tốn phí không?
Gọi từ adeptwrite.com thì miễn phí, giới hạn 30 yêu cầu AI mỗi phút cho mỗi IP. Giá cho truy cập bên ngoài sẽ được công bố cùng gói Pro; trước đó không tính khoản nào.
Mô hình nào trả lời yêu cầu của tôi?
Tùy ngôn ngữ: tiếng Anh và tiếng Indonesia đi tới SEA-LION, các ngôn ngữ khác, trong đó có tiếng Việt, đi tới Qwen3-30B. Nếu mô hình đó bận hoặc lỗi, mô hình kế tiếp trong chuỗi dự phòng sẽ trả lời, và trường model trong phản hồi ghi tên mô hình đã trả lời.