Parafrazare, corectare gramaticală și ortografică, rezumat, traducere și verificare de plagiat în 56 de limbi, pentru aplicațiile tale. REST simplu, servit de la marginea rețelei Cloudflare.
Same-origin
În prezent API-ul răspunde doar cererilor venite chiar de pe adeptwrite.com (fără antete CORS). Accesul extern cu chei API este planificat odată cu planul Pro. Documentația este publicată din timp, ca să fie contractul public și să te poți pregăti.
Pe scurt
API-ul AdeptWrite v1 are trei endpoint-uri active. POST /api/v1/run primește JSON cu task, mode, lang și text (cel mult 6.000 de caractere) și returnează text simplu de la un model Cloudflare Workers AI ales după limbă; POST /api/v1/plagiarism compară un text cu surse deschise și enumeră fiecare sursă căutată; GET /api/v1/health returnează starea serviciului. Textul nu este niciodată stocat sau înregistrat, iar cererile AI sunt limitate la 30 pe minut pentru fiecare IP.
Noțiuni de bază
URL de bază:https://adeptwrite.com/api/v1
Format: cererile și răspunsurile sunt JSON (Content-Type: application/json, UTF-8).
Autentificare: deocamdată nu există; cererile trebuie să vină de pe paginile adeptwrite.com (same-origin). Cheile API vin odată cu Pro.
Confidențialitate: câmpul text nu este stocat și nu este înregistrat; răspunsurile poartă Cache-Control: no-store.
Versionare: calea /v1/ nu se va schimba în mod incompatibil; modificările majore vor folosi /v2/.
POST/api/v1/run
Rulează o sarcină AI pe un text și returnează rezultatul ca text simplu (fără introducere, fără blocuri Markdown).
Cerere
Field
Type
Required
Notes
task
string
✓
Numele sarcinii; vezi lista de sarcini de mai jos.
text
string
✓
Textul de intrare, 1–6.000 de caractere.
lang
string
✓
Limba rezultatului: unul dintre cele 56 de coduri de limbă ale site-ului (ro, en, id, pt-pt, zh-hant și așa mai departe; etichetele BCP 47, precum pt-BR, sunt asociate automat) sau auto pentru „aceeași limbă ca textul de intrare”.
mode
string
—
Un mod disponibil pentru instrumentul respectiv, de exemplu Formal, Akademik, Ringkas, Poin-poin (numele modurilor sunt etichetele indoneziene din registru). Ignorat pentru sarcinile fără moduri.
options
object
—
Opțiuni specifice sarcinii: from / to pentru translate (din orice limbă acceptată în orice alta; from poate fi auto; sr-Cyrl cere sârba în chirilică), platform (instagram / tiktok / linkedin) pentru caption și fields etichetate, opționale, pentru bio, coverletter și meta. Celelalte chei sunt ignorate.
POST /api/v1/run HTTP/1.1
Content-Type: application/json
{
"task": "paraphrase",
"mode": "Formal",
"lang": "ro",
"text": "Calitatea textului este foarte importantă pentru studenți.",
"options": {}
}
Răspuns
Stare 200 cu ok: true, rezultatul în output, modelul care a răspuns efectiv în model (diferă când a intervenit un model de rezervă) și timpul de procesare în milisecunde. Se adaugă truncated: true când răspunsul a atins limita de lungime sau de timp și a fost tăiat.
{
"ok": true,
"output": "Calitatea redactării este esențială pentru studenți.",
"model": "@cf/qwen/qwen3-30b-a3b-fp8",
"ms": 812
}
Exemplu: curl
curl -X POST https://adeptwrite.com/api/v1/run \
-H "Content-Type: application/json" \
-d '{"task":"grammar","lang":"ro","text":"Ei sa dus la bibliotecă mâine."}'
Exemplu: 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: 'ro', 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
Alege 4–8 expresii distinctive din text, le caută în surse deschise în limba textului (Wikipedia, Wikisource, textul integral Internet Archive, Europe PMC, DOAJ, arXiv; un furnizor de căutare web doar dacă este configurat și solicitat) și calculează suprapunerea. Doar acele expresii scurte ies de pe server.
Cerere
Field
Type
Required
Notes
text
string
✓
Cel puțin 30 de cuvinte, cel mult 6.000 de caractere.
lang
string
✓
Un cod de limbă al site-ului sau auto.
options
object
—
web: true interoghează și furnizorul de căutare web, când operatorul a configurat unul; webSearched din răspuns arată dacă a răspuns cu adevărat.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json
{ "text": "…cel puțin 30 de cuvinte…", "lang": "ro", "options": { "web": false } }
Răspuns
Stare 200 cu score (cuvinte potrivite ÷ cuvinte, 0–1), matches pe surse, cu passages evidențiate (poziții de caractere în textul tău), sourcesSearched (exact sursele ale căror răspunsuri sunt în rezultat), sourcesSkipped cu motivul și webSearched.
curl -X POST https://adeptwrite.com/api/v1/plagiarism \
-H "Content-Type: application/json" \
-d '{"lang":"ro","text":"…cel puțin 30 de cuvinte…"}'
GET/api/v1/health
Arată ce servicii sunt pornite. Nu primește corp de cerere și nu se numără în cotă.
Răspuns
Stare 200. ai este false cât timp comutatorul de oprire a AI este activ; plagiarism enumeră sursele pe care verificatorul le poate interoga; aidetect descrie analiza aprofundată de pe server a detectorului AI, care nu este încă lansată (POST /api/v1/aidetect răspunde 503 disabled; detectorul de pe site rulează în browserul tău).
Repară frazele rigide sau stângace; moduri: Standar, Formal.
resize
Scurtează sau extinde frazele; moduri: Ringkas, Panjangkan.
essay
Construiește paragrafe sau un eseu din idei pe puncte; moduri: Akademik, Kreatif, Panjangkan.
summarize
Rezumat; moduri: Poin-poin (pe puncte), Paragraf, Satu kalimat (o singură frază).
translate
Traducere între oricare două limbi acceptate; options.from (sau auto) și options.to; moduri: Alami (natural, implicit), Formal, Santai (informal).
thesis
Idei de titluri pentru lucrarea de licență și structura pe capitole.
abstract
Abstract structurat pornind de la un rezumat al cercetării.
caption
Descrieri pentru postări; options.platform: instagram, tiktok, linkedin.
email
E-mailuri și scrisori; moduri: Lamaran kerja (aplicare la job), Surat resmi (scrisoare oficială), Follow-up.
headline
Titluri de articole; moduri: Kreatif, Ringkas.
product
Descrieri de produs; moduri: Marketplace, Toko online (magazin online).
synonym
Listă de sinonime pentru un cuvânt sau o expresie.
humanize
Face un text rigid sau generic să sune mai natural; moduri: Alami, Pribadi (personal), Profesional.
meta
Trei perechi de titlu și meta descriere; moduri: Artikel, Produk, Halaman (orice pagină web).
hashtag
Un rând de hashtag-uri; moduri: Instagram, TikTok, LinkedIn, X.
bio
Trei descrieri de profil; moduri: Instagram, LinkedIn, X, TikTok.
outline
Plan numerotat cu subpuncte; moduri: Artikel, Esai (eseu), Skripsi (lucrare de licență), Presentasi (prezentare).
slogan
Zece idei de sloganuri; moduri: Merek (brand), Kampanye (campanie), Produk.
paragraph
Un paragraf dintr-un subiect; moduri: Pembuka (introducere), Isi (cuprins), Penutup (încheiere).
coverletter
Ciornă de scrisoare de intenție; moduri: Fresh graduate (proaspăt absolvent), Berpengalaman (cu experiență), Magang (internship).
poem
Poezii scurte; moduri: Bebas (vers liber), Berima (cu rimă), Akrostik, Haiku.
Limite
Lungimea textului
Cel mult 6.000 de caractere per cerere (413 too_long peste această limită).
Pe adresă IP
30 de cereri pe minut.
Global
100 de cereri pe minut pentru întregul serviciu, plus o limită zilnică pentru funcțiile AI.
Plagiat
5 verificări pe minut pentru fiecare IP și 60 pe minut pentru întregul serviciu; minimum 30 de cuvinte.
Rezultat
O limită de lungime pe sarcină, niciodată peste 2.048 de tokeni; un răspuns tăiat poartă truncated: true.
Model
Ales după limbă: engleza și indoneziana rulează pe @cf/aisingapore/gemma-sea-lion-v4-27b-it, toate celelalte limbi pe @cf/qwen/qwen3-30b-a3b-fp8. Când un model este ocupat, limitat, lent sau eșuează, cererea trece la următorul model din lanț (Qwen3-30B, apoi @cf/google/gemma-4-26b-a4b-it, apoi @cf/meta/llama-3.3-70b-instruct-fp8-fast). Câmpul model numește întotdeauna modelul care a răspuns.
Coduri de eroare
Stare
Cod
Când apare
400
invalid_request
JSON invalid, un câmp obligatoriu lipsă sau un task ori lang necunoscut.
413
too_long
text depășește 6.000 de caractere.
403
forbidden
Cererea nu a venit de pe o pagină adeptwrite.com.
429
rate_limited
S-a depășit limita pe minut pe IP sau cea globală. Așteaptă numărul de secunde din Retry-After.
429
quota_exceeded
Limita zilnică pentru funcțiile AI a fost epuizată. Încearcă din nou a doua zi (UTC).
502
upstream
Niciun model din lanț nu a răspuns la timp.
502
empty_output
Modelele au răspuns, dar cu un rezultat gol.
503
disabled
Serviciul a fost oprit temporar de operator sau (pentru /api/v1/aidetect) nu este încă lansat.
Formatul erorilor
Fiecare eroare este returnată ca JSON, cu codul de stare HTTP corespunzător și aceeași formă:
{ "ok": false, "error": { "code": "rate_limited", "message": "Too many requests. Please try again shortly." } }
Verifică mai întâi ok, apoi citește error.code pentru tratarea programatică; error.message poate fi afișat în siguranță utilizatorilor.
Practici recomandate
Trimite textul pe bucăți (de exemplu pe paragrafe), nu un document lung dintr-o dată; rezultatele vin mai repede și sunt mai ușor de verificat.
Tratează 429 cu reîncercări din ce în ce mai rare (exponential back-off), nu cu reîncercări imediate.
Nu trimite date personale sau confidențiale de care nu ai nevoie, chiar dacă nu le stocăm; principiul reducerii la minimum a datelor se aplică în continuare.
Rezultatul AI poate fi greșit; prezintă-l ca pe o sugestie de verificat, nu ca pe un adevăr final.
Întrebări frecvente
Pot apela API-ul din propria aplicație sau de pe propriul domeniu?
Încă nu. În prezent Worker-ul nu trimite antete CORS și servește doar paginile adeptwrite.com. Accesul extern cu chei API este planificat odată cu planul Pro; această documentație va fi actualizată când devine disponibil.
Este stocat textul trimis către API?
Nu. Textul este transmis modelului ca să producă răspunsul, apoi este aruncat. Jurnalele conțin doar metadate (cod de stare, sarcină, durată). Detaliile sunt în politica de confidențialitate.
De ce rezultatul este text simplu și nu JSON structurat?
Fiecare sarcină produce un singur text gata de folosit, fără introducere și fără blocuri Markdown, ca să poată fi afișat direct în editor. O structură suplimentară (de exemplu o listă de modificări) este planificată pentru o versiune ulterioară, fără a schimba v1.
Cât costă API-ul?
De pe adeptwrite.com este gratuit, cu limita de 30 de cereri AI pe minut pentru fiecare IP. Prețurile pentru accesul extern vor fi anunțate odată cu planul Pro; până atunci nu se percepe nimic.
Ce model răspunde cererii mele?
Depinde de limbă: engleza și indoneziana merg la SEA-LION, celelalte limbi, inclusiv româna, la Qwen3-30B. Dacă acel model este ocupat sau eșuează, răspunde următorul model din lanțul de rezervă, iar câmpul model din răspuns îl numește pe cel care a răspuns.