Dokumentasi API

Parafrasa, semakan tatabahasa, ringkasan, terjemahan dan semakan plagiarisme dalam 56 bahasa. REST yang ringkas, disampaikan dari rangkaian tepi Cloudflare.

Asal sama
API pada masa ini hanya melayan permintaan daripada adeptwrite.com sendiri (tiada pengepala CORS). Akses luar dengan kunci API dirancang bersama pelan Pro. Dokumentasi ini diterbitkan awal supaya kontraknya terbuka dan anda boleh bersedia.
Ringkasan

API v1 AdeptWrite mempunyai tiga titik akhir yang aktif. POST /api/v1/run menerima JSON dengan task, mode, lang dan text (sehingga 6,000 aksara) lalu memulangkan keluaran teks biasa daripada model Cloudflare Workers AI yang dipilih mengikut bahasa; POST /api/v1/plagiarism membandingkan teks dengan sumber terbuka dan menyenaraikan setiap sumber yang dicari; GET /api/v1/health memulangkan status perkhidmatan. Teks tidak pernah disimpan atau direkodkan, dan permintaan AI dihadkan kepada 30 seminit bagi setiap IP.

Asas

  • URL asas: https://adeptwrite.com/api/v1
  • Format: permintaan dan respons ialah JSON (Content-Type: application/json, UTF-8).
  • Pengesahan: belum ada; permintaan mesti datang daripada halaman adeptwrite.com (asal sama). Kunci API menyusul bersama Pro.
  • Privasi: medan text tidak pernah disimpan atau direkodkan; respons membawa Cache-Control: no-store.
  • Versi: laluan /v1/ tidak akan berubah secara tidak serasi; perubahan yang memecahkan akan menggunakan /v2/.

POST/api/v1/run

Menjalankan satu tugas AI pada teks dan memulangkan hasilnya sebagai teks biasa (tanpa pembukaan, tanpa pagar kod Markdown).

Permintaan

FieldTypeRequiredNotes
taskstring✓Nama tugas; lihat senarai tugas di bawah.
textstring✓Teks input, 1–6,000 aksara.
langstring✓Bahasa hasil: salah satu daripada 56 kod lokal laman (en, id, ms, ja, pt-pt, zh-hant…; teg BCP 47 seperti pt-BR dipetakan) atau auto bagi "bahasa yang sama dengan input".
modestring—Mod yang tersedia untuk alat itu, contohnya Formal, Akademik, Ringkas, Poin-poin (nama mod ialah label registri berbahasa Indonesia). Diabaikan bagi tugas tanpa mod.
optionsobject—Pilihan khusus tugas: from / to untuk translate (mana-mana bahasa yang disokong ke mana-mana yang lain; from boleh jadi auto; sr-Cyrl meminta bahasa Serbia dalam aksara Cyrillic), platform (instagram / tiktok / linkedin) untuk caption, dan fields berlabel pilihan untuk bio, coverletter dan meta. Kunci lain diabaikan.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "ms",
  "text": "Penulisan yang baik sangat penting untuk pelajar.",
  "options": {}
}

Respons

Status 200 dengan ok: true, hasil dalam output, model yang benar-benar menjawab dalam model (ia berbeza apabila model sandaran mengambil alih) dan masa pemprosesan dalam milisaat. truncated: true ditambah apabila jawapan mencapai bajet panjangnya atau had masa lalu dipotong.

{
  "ok": true,
  "output": "Kualiti penulisan amat penting bagi para pelajar.",
  "model": "@cf/aisingapore/gemma-sea-lion-v4-27b-it",
  "ms": 812
}

Contoh: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"ms","text":"Mereka pergi ke perpustakan semalam."}'

Contoh: 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: 'ms', 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

Memilih 4–8 frasa tersendiri daripada teks, mencari sumber terbuka dalam bahasa teks itu (Wikipedia, Wikisource, teks penuh Internet Archive, Europe PMC, DOAJ, arXiv; penyedia carian web hanya apabila dikonfigurasi dan diminta) dan menilai pertindihan. Hanya frasa pendek itu yang meninggalkan pelayan.

Permintaan

FieldTypeRequiredNotes
textstring✓Sekurang-kurangnya 30 perkataan, paling banyak 6,000 aksara.
langstring✓Kod lokal laman atau auto.
optionsobject—web: true turut menanyakan penyedia carian web apabila pengendali telah mengkonfigurasinya; webSearched dalam respons menyatakan sama ada ia benar-benar menjawab.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…sekurang-kurangnya 30 perkataan…", "lang": "ms", "options": { "web": false } }

Respons

Status 200 dengan score (perkataan sepadan ÷ perkataan, 0–1), matches bagi setiap sumber dengan passages yang diserlahkan (ofset aksara dalam teks anda), sourcesSearched (tepat sumber yang jawapannya ada dalam hasil), sourcesSkipped beserta sebab, dan webSearched.

{
  "ok": true,
  "score": 0.42,
  "words": 52,
  "matchedWords": 22,
  "matches": [{ "source": "wikipedia", "title": "…", "url": "https://ms.wikipedia.org/wiki/…",
                "matchedWords": 22, "passages": [{ "start": 0, "end": 131, "text": "…" }] }],
  "sourcesSearched": ["wikipedia", "wikisource", "internet-archive-fts", "europepmc", "doaj"],
  "sourcesSkipped": [],
  "webSearched": false,
  "ms": 2310
}

Contoh: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"ms","text":"…sekurang-kurangnya 30 perkataan…"}'

GET/api/v1/health

Melaporkan perkhidmatan yang dihidupkan. Tidak mengambil badan permintaan dan tidak dikira dalam kuota.

Respons

Status 200. ai bernilai false apabila suis pemati AI dihidupkan; plagiarism menyenaraikan sumber yang boleh ditanya oleh pemeriksa; aidetect menerangkan analisis mendalam sisi pelayan bagi pengesan AI, yang belum dikerahkan (POST /api/v1/aidetect menjawab 503 disabled; pengesan di laman berjalan dalam pelayar anda).

{
  "ok": true,
  "ai": true,
  "plagiarism": { "enabled": true, "sources": ["wikipedia", "wikisource", "internet-archive-fts", "europepmc", "doaj", "arxiv"], "web": false },
  "aidetect": { "enabled": false, "judge": false }
}

Contoh: curl

curl https://adeptwrite.com/api/v1/health

Task list

taskWhat it does
paraphraseParafrasa; mod: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammarPembetulan tatabahasa dan ejaan (ejaan DBP bagi bahasa Melayu).
toneTukar nada; mod: Formal, Kantor (pejabat), Santai.
rewriteBaiki ayat yang kaku atau janggal; mod: Standar, Formal.
resizePendekkan atau panjangkan ayat; mod: Ringkas, Panjangkan.
essaySusun perenggan atau esei daripada isi-isi ringkas; mod: Akademik, Kreatif, Panjangkan.
summarizeRingkasan; mod: Poin-poin (senarai poin), Paragraf (perenggan), Satu kalimat (satu ayat).
translateTerjemahan antara mana-mana dua bahasa yang disokong; options.from (atau auto) dan options.to; mod: Alami (semula jadi, lalai), Formal, Santai.
thesisIdea tajuk tesis dan rangka bab.
abstractAbstrak berstruktur daripada ringkasan kajian.
captionKapsyen media sosial; options.platform: instagram, tiktok, linkedin.
emailE-mel dan surat; mod: Lamaran kerja (permohonan kerja), Surat resmi (surat rasmi), Follow-up (susulan).
headlineTajuk artikel dan headline; mod: Kreatif, Ringkas.
productPenerangan produk; mod: Marketplace (platform e-dagang), Toko online (kedai dalam talian).
synonymSenarai sinonim bagi satu perkataan atau frasa.
humanizeJadikan teks yang kaku atau generik berbunyi lebih semula jadi; mod: Alami, Pribadi (peribadi), Profesional.
metaTiga pasangan tajuk dan penerangan meta; mod: Artikel, Produk, Halaman (mana-mana halaman web).
hashtagSatu baris hashtag; mod: Instagram, TikTok, LinkedIn, X.
bioTiga bio profil; mod: Instagram, LinkedIn, X, TikTok.
outlineRangka bernombor dengan sub-poin; mod: Artikel, Esai (esei), Skripsi (tesis), Presentasi (pembentangan).
sloganSepuluh idea slogan; mod: Merek (jenama), Kampanye (kempen), Produk.
paragraphSatu perenggan daripada satu topik; mod: Pembuka (pendahuluan), Isi, Penutup.
coverletterDraf surat permohonan kerja; mod: Fresh graduate (graduan baharu), Berpengalaman, Magang (latihan industri).
poemPuisi pendek; mod: Bebas (sajak bebas), Berima, Akrostik, Haiku.

Had

Panjang teks
Paling banyak 6,000 aksara bagi setiap permintaan (413 too_long jika melebihi).
Bagi setiap alamat IP
30 permintaan seminit.
Global
100 permintaan seminit merentas seluruh perkhidmatan, ditambah had harian bagi ciri AI.
Plagiarisme
5 semakan seminit bagi setiap IP dan 60 seminit merentas perkhidmatan; minimum 30 perkataan.
Keluaran
Bajet panjang bagi setiap tugas, tidak pernah melebihi 2,048 token; jawapan yang dipotong membawa truncated: true.
Model
Dipilih mengikut bahasa: bahasa Inggeris dan Indonesia berjalan pada @cf/aisingapore/gemma-sea-lion-v4-27b-it, setiap bahasa lain pada @cf/qwen/qwen3-30b-a3b-fp8. Apabila sesuatu model sibuk, terhad kadar, perlahan atau gagal, permintaan beralih kepada model seterusnya dalam rantaian (Qwen3-30B, kemudian @cf/google/gemma-4-26b-a4b-it, kemudian @cf/meta/llama-3.3-70b-instruct-fp8-fast). Medan model sentiasa menamakan model yang menjawab.

Kod ralat

StatusKodBila berlaku
400invalid_requestJSON tidak sah, medan wajib tiada, atau task atau lang tidak dikenali.
413too_longtext melebihi 6,000 aksara.
403forbiddenPermintaan tidak datang daripada halaman adeptwrite.com.
429rate_limitedHad seminit bagi setiap IP atau had global dilampaui. Tunggu sebanyak saat yang dinyatakan dalam Retry-After.
429quota_exceededHad harian ciri AI telah habis. Cuba lagi pada hari berikutnya (UTC).
502upstreamSetiap model dalam rantaian gagal menjawab dalam masa yang ditetapkan.
502empty_outputModel menjawab, tetapi hasilnya kosong.
503disabledPerkhidmatan dimatikan sementara oleh pengendali, atau (bagi /api/v1/aidetect) belum dikerahkan.

Format ralat

Setiap ralat dipulangkan sebagai JSON dengan kod status HTTP yang sepadan dan bentuk yang sama:

{ "ok": false, "error": { "code": "rate_limited", "message": "Too many requests. Please try again shortly." } }

Semak ok dahulu, kemudian baca error.code untuk pengendalian secara atur cara; error.message selamat dipaparkan kepada pengguna.

Amalan yang disyorkan

  • Hantar teks secara berperingkat (contohnya satu perenggan sekali) dan bukan satu dokumen panjang; hasil kembali lebih cepat dan lebih mudah disemak.
  • Kendalikan 429 dengan back-off eksponen, bukan percubaan semula serta-merta.
  • Jangan menghantar data peribadi atau sulit yang tidak anda perlukan; walaupun kami tidak menyimpannya, prinsip meminimumkan data tetap terpakai.
  • Hasil AI boleh tersilap; paparkan ia sebagai cadangan untuk disemak, bukan sebagai kebenaran muktamad.

Soalan lazim

Bolehkah saya memanggil API daripada aplikasi atau domain saya sendiri?

Belum. Worker pada masa ini tidak menghantar pengepala CORS dan hanya melayan halaman adeptwrite.com. Akses luar dengan kunci API dirancang bersama pelan Pro; dokumentasi ini akan dikemas kini apabila ia tersedia.

Adakah teks yang dihantar kepada API disimpan?

Tidak. Teks diteruskan kepada model untuk menghasilkan jawapan, kemudian dibuang. Log hanya mengandungi metadata (kod status, tugas, tempoh). Lihat dasar privasi untuk butiran lengkap.

Mengapa keluarannya teks biasa dan bukan JSON berstruktur?

Setiap tugas menghasilkan satu teks siap guna tanpa pembukaan atau pagar kod Markdown supaya ia boleh dipaparkan terus dalam editor. Struktur tambahan (contohnya senarai perubahan) dirancang untuk versi kemudian tanpa mengubah v1.

Berapakah kos API?

Daripada adeptwrite.com ia percuma, dihadkan kepada 30 permintaan AI seminit bagi setiap IP. Harga untuk akses luar akan diumumkan bersama pelan Pro; tiada apa-apa dikenakan sebelum itu.

Model manakah yang menjawab permintaan saya?

Bergantung pada bahasa: bahasa Inggeris dan Indonesia dihantar ke SEA-LION, bahasa lain ke Qwen3-30B. Jika model itu sibuk atau gagal, model seterusnya dalam rantaian sandaran menjawab, dan medan model dalam respons menamakan model yang berbuat demikian.