Τεκμηρίωση API

Παράφραση, έλεγχος γραμματικής, περιλήψεις, μετάφραση και έλεγχος λογοκλοπής σε 56 γλώσσες, μέσω απλού REST από το edge του Cloudflare.

Same-origin
Προς το παρόν το API εξυπηρετεί μόνο αιτήματα από το ίδιο το adeptwrite.com (χωρίς κεφαλίδες CORS). Η εξωτερική πρόσβαση με κλειδιά API προγραμματίζεται μαζί με το πακέτο Pro. Η τεκμηρίωση δημοσιεύεται νωρίς, ώστε το συμβόλαιο να είναι ανοιχτό και να προετοιμαστείτε.
Περίληψη

Το API v1 του AdeptWrite έχει τρία ενεργά endpoints. Το POST /api/v1/run δέχεται JSON με task, mode, lang και text (έως 6.000 χαρακτήρες) και επιστρέφει απλό κείμενο από μοντέλο του Cloudflare Workers AI που επιλέγεται ανά γλώσσα· το POST /api/v1/plagiarism συγκρίνει ένα κείμενο με ανοιχτές πηγές και απαριθμεί κάθε πηγή που αναζήτησε· το GET /api/v1/health επιστρέφει την κατάσταση της υπηρεσίας. Το κείμενο δεν αποθηκεύεται ούτε καταγράφεται, και τα αιτήματα AI περιορίζονται σε 30 ανά λεπτό ανά IP.

Βασικά

  • Base URL: https://adeptwrite.com/api/v1
  • Μορφή: τα αιτήματα και οι απαντήσεις είναι JSON (Content-Type: application/json, UTF-8).
  • Ταυτοποίηση: προς το παρόν καμία· τα αιτήματα πρέπει να προέρχονται από σελίδες του adeptwrite.com (same-origin). Τα κλειδιά API έρχονται με το Pro.
  • Απόρρητο: το πεδίο text δεν αποθηκεύεται ούτε καταγράφεται· οι απαντήσεις φέρουν Cache-Control: no-store.
  • Εκδόσεις: η διαδρομή /v1/ δεν θα αλλάξει με μη συμβατό τρόπο· οι ανατρεπτικές αλλαγές θα χρησιμοποιήσουν το /v2/.

POST/api/v1/run

Εκτελεί μία εργασία AI σε ένα κείμενο και επιστρέφει το αποτέλεσμα ως απλό κείμενο (χωρίς προοίμιο, χωρίς μπλοκ Markdown).

Αίτημα

FieldTypeRequiredNotes
taskstring✓Όνομα εργασίας· δείτε τη λίστα εργασιών παρακάτω.
textstring✓Κείμενο εισόδου, 1–6.000 χαρακτήρες.
langstring✓Γλώσσα του αποτελέσματος: ένας από τους 56 κωδικούς γλώσσας του ιστότοπου (el, en, id, pt-pt, zh-hant…· οι ετικέτες BCP 47, όπως pt-BR, αντιστοιχίζονται) ή auto για «την ίδια γλώσσα με την είσοδο».
modestring—Μια λειτουργία διαθέσιμη για το εργαλείο, π.χ. Formal, Akademik, Ringkas, Poin-poin (τα ονόματα των modes είναι οι ινδονησιακές ετικέτες του μητρώου). Αγνοείται σε εργασίες χωρίς modes.
optionsobject—Επιλογές ανά εργασία: from / to για το translate (οποιαδήποτε υποστηριζόμενη γλώσσα σε οποιαδήποτε άλλη· το from μπορεί να είναι auto· το sr-Cyrl ζητά σερβικά σε κυριλλικό αλφάβητο), platform (instagram / tiktok / linkedin) για το caption, και προαιρετικά επώνυμα fields για τα bio, coverletter και meta. Τα υπόλοιπα κλειδιά αγνοούνται.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "el",
  "text": "Η καλή γραφή είναι πολύ σημαντική για τους φοιτητές.",
  "options": {}
}

Απάντηση

Κατάσταση 200 με ok: true, το αποτέλεσμα στο output, το μοντέλο που απάντησε πραγματικά στο model (διαφέρει όταν παρεμβαίνει εφεδρικό μοντέλο) και τον χρόνο επεξεργασίας σε χιλιοστά του δευτερολέπτου. Το truncated: true προστίθεται όταν η απάντηση έφτασε στο όριο μήκους ή χρόνου και κόπηκε.

{
  "ok": true,
  "output": "Η ποιότητα της γραφής είναι ουσιώδης για τους φοιτητές.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Παράδειγμα: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"el","text":"Θα πάμε αύριο στην βιβλιοθήκη."}'

Παράδειγμα: 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: 'el', 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

Επιλέγει 4–8 χαρακτηριστικές φράσεις από το κείμενο, αναζητά σε ανοιχτές πηγές στη γλώσσα του κειμένου (Wikipedia, Wikisource, πλήρες κείμενο Internet Archive, Europe PMC, DOAJ, arXiv· πάροχο αναζήτησης ιστού μόνο όταν έχει ρυθμιστεί και ζητηθεί) και βαθμολογεί την επικάλυψη. Μόνο αυτές οι σύντομες φράσεις φεύγουν από τον διακομιστή.

Αίτημα

FieldTypeRequiredNotes
textstring✓Τουλάχιστον 30 λέξεις, το πολύ 6.000 χαρακτήρες.
langstring✓Ένας κωδικός γλώσσας του ιστότοπου ή auto.
optionsobject—Το web: true ρωτά επιπλέον τον πάροχο αναζήτησης ιστού όταν ο διαχειριστής έχει ρυθμίσει έναν· το webSearched στην απάντηση δείχνει αν πράγματι απάντησε.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…τουλάχιστον 30 λέξεις…", "lang": "el", "options": { "web": false } }

Απάντηση

Κατάσταση 200 με score (λέξεις που ταιριάζουν ÷ λέξεις, 0–1), matches ανά πηγή με επισημασμένα passages (θέσεις χαρακτήρων στο κείμενό σας), sourcesSearched (ακριβώς οι πηγές των οποίων οι απαντήσεις περιλαμβάνονται στο αποτέλεσμα), sourcesSkipped με αιτιολογία και webSearched.

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

Παράδειγμα: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"el","text":"…τουλάχιστον 30 λέξεις…"}'

GET/api/v1/health

Αναφέρει ποιες υπηρεσίες είναι ενεργές. Δεν έχει σώμα και δεν προσμετράται στην ποσόστωση.

Απάντηση

Κατάσταση 200. Το ai είναι false όσο ο διακόπτης έκτακτης ανάγκης του AI είναι ενεργός· το plagiarism απαριθμεί τις πηγές που μπορεί να ρωτήσει ο έλεγχος· το aidetect περιγράφει τη βαθύτερη ανάλυση του ανιχνευτή AI στον διακομιστή, η οποία δεν έχει ακόμη αναπτυχθεί (το POST /api/v1/aidetect απαντά 503 disabled· ο ανιχνευτής του ιστότοπου τρέχει στον browser σας).

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

Παράδειγμα: curl

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

Task list

taskWhat it does
paraphraseΠαράφραση· modes: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammarΔιόρθωση γραμματικής και ορθογραφίας στη γλώσσα του κειμένου.
toneΑλλαγή ύφους· modes: Formal, Kantor (γραφείου), Santai (ανεπίσημο).
rewriteΔιόρθωση άκαμπτων ή αδέξιων προτάσεων· modes: Standar, Formal.
resizeΣύντμηση ή επέκταση προτάσεων· modes: Ringkas, Panjangkan.
essayΔημιουργία παραγράφων ή έκθεσης από σημειώσεις· modes: Akademik, Kreatif, Panjangkan.
summarizeΠερίληψη· modes: Poin-poin (κουκκίδες), Paragraf (παράγραφος), Satu kalimat (μία πρόταση).
translateΜετάφραση μεταξύ οποιωνδήποτε δύο υποστηριζόμενων γλωσσών· options.from (ή auto) και options.to· modes: Alami (φυσικό, προεπιλογή), Formal, Santai (ανεπίσημο).
thesisΙδέες τίτλου διπλωματικής και διάγραμμα κεφαλαίων.
abstractΔομημένο abstract από περίληψη έρευνας.
captionΛεζάντες για social media· options.platform: instagram, tiktok, linkedin.
emailEmail και επιστολές· modes: Lamaran kerja (αίτηση εργασίας), Surat resmi (επίσημη επιστολή), Follow-up.
headlineΤίτλοι άρθρων· modes: Kreatif, Ringkas.
productΠεριγραφές προϊόντων· modes: Marketplace, Toko online (ηλεκτρονικό κατάστημα).
synonymΛίστα συνωνύμων για μία λέξη ή φράση.
humanizeΠιο φυσική διατύπωση σε άκαμπτο ή γενικόλογο κείμενο· modes: Alami, Pribadi (προσωπικό), Profesional.
metaΤρία ζεύγη meta title και description· modes: Artikel, Produk, Halaman (οποιαδήποτε σελίδα).
hashtagΜία γραμμή hashtag· modes: Instagram, TikTok, LinkedIn, X.
bioΤρία bio προφίλ· modes: Instagram, LinkedIn, X, TikTok.
outlineΑριθμημένο διάγραμμα με υποσημεία· modes: Artikel, Esai, Skripsi (διπλωματική), Presentasi.
sloganΔέκα ιδέες σλόγκαν· modes: Merek (μάρκα), Kampanye (καμπάνια), Produk.
paragraphΜία παράγραφος από ένα θέμα· modes: Pembuka (εισαγωγή), Isi (κύριο μέρος), Penutup (επίλογος).
coverletterΠροσχέδιο συνοδευτικής επιστολής· modes: Fresh graduate, Berpengalaman (έμπειρος), Magang (πρακτική άσκηση).
poemΣύντομα ποιήματα· modes: Bebas (ελεύθερος στίχος), Berima (ομοιοκατάληκτο), Akrostik, Haiku.

Όρια

Μήκος κειμένου
Το πολύ 6.000 χαρακτήρες ανά αίτημα (413 too_long πάνω από αυτό).
Ανά διεύθυνση IP
30 αιτήματα ανά λεπτό.
Συνολικά
100 αιτήματα ανά λεπτό σε ολόκληρη την υπηρεσία, συν ένα ημερήσιο όριο για τις λειτουργίες AI.
Λογοκλοπή
5 έλεγχοι ανά λεπτό ανά IP και 60 ανά λεπτό σε ολόκληρη την υπηρεσία· ελάχιστο 30 λέξεις.
Έξοδος
Προϋπολογισμός μήκους ανά εργασία, ποτέ πάνω από 2.048 tokens· μια απάντηση που κόπηκε φέρει truncated: true.
Μοντέλο
Επιλέγεται ανά γλώσσα: τα αγγλικά και τα ινδονησιακά τρέχουν στο @cf/aisingapore/gemma-sea-lion-v4-27b-it, κάθε άλλη γλώσσα, μαζί με τα ελληνικά, στο @cf/qwen/qwen3-30b-a3b-fp8. Όταν ένα μοντέλο είναι κατειλημμένο, περιορισμένο, αργό ή αποτύχει, το αίτημα περνά στο επόμενο μοντέλο της αλυσίδας (Qwen3-30B, μετά @cf/google/gemma-4-26b-a4b-it, μετά @cf/meta/llama-3.3-70b-instruct-fp8-fast). Το πεδίο model δείχνει πάντα το μοντέλο που απάντησε.

Κωδικοί σφάλματος

ΚατάστασηΚωδικόςΠότε συμβαίνει
400invalid_requestΜη έγκυρο JSON, λείπει υποχρεωτικό πεδίο ή άγνωστο task ή lang.
413too_longΤο text υπερβαίνει τους 6.000 χαρακτήρες.
403forbiddenΤο αίτημα δεν προήλθε από σελίδα του adeptwrite.com.
429rate_limitedΞεπεράστηκε το όριο ανά λεπτό ανά IP ή το γενικό όριο. Περιμένετε όσα δευτερόλεπτα δείχνει το Retry-After.
429quota_exceededΤο ημερήσιο όριο για τις λειτουργίες AI εξαντλήθηκε. Δοκιμάστε την επόμενη ημέρα (UTC).
502upstreamΚανένα μοντέλο της αλυσίδας δεν απάντησε εγκαίρως.
502empty_outputΤα μοντέλα απάντησαν, αλλά με κενό αποτέλεσμα.
503disabledΗ υπηρεσία έχει απενεργοποιηθεί προσωρινά από τον διαχειριστή ή (για το /api/v1/aidetect) δεν έχει ακόμη αναπτυχθεί.

Μορφή σφαλμάτων

Κάθε σφάλμα επιστρέφεται ως JSON με τον αντίστοιχο κωδικό κατάστασης HTTP και την ίδια δομή:

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

Ελέγχετε πρώτα το ok και διαβάζετε το error.code για προγραμματιστική διαχείριση· το error.message είναι ασφαλές να εμφανιστεί στους χρήστες.

Συνιστώμενες πρακτικές

  • Στέλνετε το κείμενο τμηματικά (για παράδειγμα ανά παράγραφο) και όχι ως ένα μακρύ έγγραφο· τα αποτελέσματα επιστρέφουν πιο γρήγορα και ελέγχονται ευκολότερα.
  • Αντιμετωπίστε το 429 με εκθετική αναμονή (exponential back-off), όχι με άμεσες επαναλήψεις.
  • Μην στέλνετε προσωπικά ή εμπιστευτικά δεδομένα που δεν χρειάζεστε· ακόμη και αν δεν τα αποθηκεύουμε, ισχύει η αρχή της ελαχιστοποίησης δεδομένων.
  • Το αποτέλεσμα του AI μπορεί να είναι λανθασμένο· παρουσιάστε το ως πρόταση προς έλεγχο και όχι ως οριστική αλήθεια.

Συχνές ερωτήσεις

Μπορώ να καλέσω το API από τη δική μου εφαρμογή ή τον δικό μου τομέα;

Όχι ακόμη. Ο Worker δεν στέλνει προς το παρόν κεφαλίδες CORS και εξυπηρετεί μόνο σελίδες του adeptwrite.com. Η εξωτερική πρόσβαση με κλειδιά API προγραμματίζεται μαζί με το πακέτο Pro· η τεκμηρίωση θα ενημερωθεί όταν γίνει διαθέσιμη.

Αποθηκεύεται το κείμενο που στέλνεται στο API;

Όχι. Το κείμενο προωθείται στο μοντέλο για να παραχθεί η απάντηση και στη συνέχεια απορρίπτεται. Τα logs περιέχουν μόνο μεταδεδομένα (κωδικό κατάστασης, εργασία, διάρκεια). Όλες οι λεπτομέρειες βρίσκονται στην [πολιτική απορρήτου](/el/privacy/).

Γιατί η έξοδος είναι απλό κείμενο και όχι δομημένο JSON;

Κάθε εργασία παράγει ένα έτοιμο προς χρήση κείμενο, χωρίς προοίμιο ή μπλοκ Markdown, ώστε να εμφανίζεται απευθείας στον επεξεργαστή. Πρόσθετη δομή (για παράδειγμα λίστα αλλαγών) προγραμματίζεται για μεταγενέστερη έκδοση χωρίς να αλλάξει το v1.

Πόσο κοστίζει το API;

Από το adeptwrite.com είναι δωρεάν, με όριο 30 αιτήματα AI ανά λεπτό ανά IP. Οι τιμές για την εξωτερική πρόσβαση θα ανακοινωθούν με το πακέτο Pro· μέχρι τότε δεν χρεώνεται τίποτα.

Ποιο μοντέλο απαντά στο αίτημά μου;

Εξαρτάται από τη γλώσσα: τα αγγλικά και τα ινδονησιακά πηγαίνουν στο SEA-LION, οι υπόλοιπες γλώσσες, μαζί με τα ελληνικά, στο Qwen3-30B. Αν το μοντέλο είναι κατειλημμένο ή αποτύχει, απαντά το επόμενο μοντέλο της εφεδρικής αλυσίδας, και το πεδίο model της απάντησης δείχνει ποιο απάντησε.