Parafraziranje, provera gramatike, sažimanje, prevođenje i provera plagijata na 56 jezika, uključujući srpski. Jednostavan REST, isporučuje se sa ivice mreže Cloudflare-a.
Isto poreklo
API trenutno prima zahteve samo sa samog sajta adeptwrite.com (bez CORS zaglavlja). Spoljni pristup sa API ključevima planiran je uz plan Pro. Ova dokumentacija se objavljuje ranije da bi ugovor bio otvoren i da biste mogli da se pripremite.
Rezime
API AdeptWrite-a v1 ima tri aktivne krajnje tačke. POST /api/v1/run prima JSON sa poljima task, mode, lang i text (do 6.000 karaktera) i vraća tekstualni izlaz modela na usluzi Cloudflare Workers AI, izabranog prema jeziku; POST /api/v1/plagiarism poredi tekst sa otvorenim izvorima i navodi svaki izvor koji je pretražen; GET /api/v1/health vraća stanje usluge. Tekst se nikada ne čuva ni ne beleži, a AI zahtevi su ograničeni na 30 u minuti po IP adresi.
Osnove
Osnovna adresa:https://adeptwrite.com/api/v1
Format: zahtevi i odgovori su JSON (Content-Type: application/json, UTF-8).
Autentifikacija: za sada nema; zahtevi moraju stizati sa stranica adeptwrite.com (isto poreklo). API ključevi stižu uz plan Pro.
Privatnost: polje text se nikada ne čuva ni ne beleži; odgovori nose Cache-Control: no-store.
Verzije: putanja /v1/ se neće menjati na nekompatibilan način; promene koje lome kompatibilnost koristiće /v2/.
POST/api/v1/run
Izvršava jedan AI zadatak nad tekstom i vraća rezultat kao običan tekst (bez uvoda i bez Markdown ograda).
Zahtev
Field
Type
Required
Notes
task
string
✓
Naziv zadatka; vidite spisak zadataka ispod.
text
string
✓
Ulazni tekst, 1–6.000 karaktera.
lang
string
✓
Jezik rezultata: jedan od 56 kodova jezika sajta (en, id, sr, ja, pt-pt, zh-hant…; BCP 47 oznake kao što je pt-BR se preslikavaju) ili auto za „isti jezik kao ulaz“.
mode
string
—
Režim dostupan za taj alat, na primer Formal, Akademik, Ringkas, Poin-poin (nazivi režima su registarske oznake koje se koriste i u API-ju, na indonežanskom). Zanemaruje se za zadatke bez režima.
options
object
—
Opcije specifične za zadatak: from / to za translate (bilo koji podržani jezik na bilo koji drugi; from može biti auto; sr-Cyrl traži srpski na ćirilici), platform (instagram / tiktok / linkedin) za caption i opciona označena polja fields za bio, coverletter i meta. Ostali ključevi se zanemaruju.
POST /api/v1/run HTTP/1.1
Content-Type: application/json
{
"task": "paraphrase",
"mode": "Formal",
"lang": "sr",
"text": "Dobro pisanje je veoma važno za studente.",
"options": {}
}
Odgovor
Status 200 sa ok: true, rezultatom u polju output, modelom koji je zaista odgovorio u polju model (razlikuje se kada je uskočio rezervni model) i vremenom obrade u milisekundama. Dodaje se truncated: true kada je odgovor dostigao ograničenje dužine ili vremena i bio prekinut.
{
"ok": true,
"output": "Kvalitetno pisanje je od presudnog značaja za studente.",
"model": "@cf/qwen/qwen3-30b-a3b-fp8",
"ms": 812
}
Primer: curl
curl -X POST https://adeptwrite.com/api/v1/run \
-H "Content-Type: application/json" \
-d '{"task":"grammar","lang":"sr","text":"Ja bi otisao u biblioteku sutra."}'
Primer: 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: 'sr', 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
Bira 4–8 karakterističnih fraza iz teksta, pretražuje otvorene izvore na jeziku teksta (Wikipedia, Wikisource, pun tekst Internet Archive-a, Europe PMC, DOAJ, arXiv; pretraživač veba samo kada je podešen i zatražen) i ocenjuje preklapanje. Server napuštaju samo te kratke fraze.
Zahtev
Field
Type
Required
Notes
text
string
✓
Najmanje 30 reči, najviše 6.000 karaktera.
lang
string
✓
Kôd jezika sajta ili auto.
options
object
—
web: true dodatno koristi pretraživač veba kada ga je operater podesio; webSearched u odgovoru kaže da li je zaista odgovorio.
Status 200 sa poljima score (podudarne reči ÷ reči, 0–1), matches po izvoru sa istaknutim passages (pomeraji karaktera u vašem tekstu), sourcesSearched (tačno oni izvori čiji su odgovori u rezultatu), sourcesSkipped sa razlogom i webSearched.
Javlja koje su usluge uključene. Ne prima telo zahteva i ne računa se u kvotu.
Odgovor
Status 200. ai je false dok je uključen prekidač za isključenje AI-ja; plagiarism navodi izvore koje provera plagijata može da pretraži; aidetect opisuje dubinsku analizu AI detektora na serveru, koja još nije puštena u rad (POST /api/v1/aidetect odgovara sa 503 disabled; detektor na sajtu radi u vašem pregledaču).
Kratke pesme; režimi: Bebas (slobodan stih), Berima (rimovane), Akrostik, Haiku.
Ograničenja
Dužina teksta
Najviše 6.000 karaktera po zahtevu (413 too_long iznad toga).
Po IP adresi
30 zahteva u minuti.
Opšte
100 zahteva u minuti za celu uslugu, uz dnevno ograničenje za AI funkcije.
Plagijat
5 provera u minuti po IP adresi i 60 u minuti za celu uslugu; najmanje 30 reči.
Izlaz
Ograničenje dužine po zadatku, nikada više od 2.048 tokena; prekinut odgovor nosi truncated: true.
Model
Bira se po jeziku: engleski i indonežanski rade na @cf/aisingapore/gemma-sea-lion-v4-27b-it, svaki drugi jezik, uključujući srpski, na @cf/qwen/qwen3-30b-a3b-fp8. Kada je model zauzet, ograničen, spor ili otkaže, zahtev prelazi na sledeći model u lancu (Qwen3-30B, zatim @cf/google/gemma-4-26b-a4b-it, zatim @cf/meta/llama-3.3-70b-instruct-fp8-fast). Polje model uvek navodi model koji je odgovorio.
Kodovi grešaka
Status
Kod
Kada se javlja
400
invalid_request
Neispravan JSON, nedostaje obavezno polje ili je nepoznat task ili lang.
413
too_long
text prelazi 6.000 karaktera.
403
forbidden
Zahtev nije stigao sa stranice adeptwrite.com.
429
rate_limited
Prekoračeno je ograničenje po minuti, po IP adresi ili opšte. Sačekajte broj sekundi iz Retry-After.
429
quota_exceeded
Dnevno ograničenje za AI funkcije je iskorišćeno. Pokušajte sutradan (UTC).
502
upstream
Nijedan model u lancu nije odgovorio na vreme.
502
empty_output
Modeli su odgovorili, ali praznim rezultatom.
503
disabled
Operater je uslugu privremeno isključio ili (za /api/v1/aidetect) još nije puštena u rad.
Format greške
Svaka greška se vraća kao JSON sa odgovarajućim HTTP statusom i istim oblikom:
{ "ok": false, "error": { "code": "rate_limited", "message": "Too many requests. Please try again shortly." } }
Prvo proverite ok, pa za programsku obradu čitajte error.code; error.message je bezbedno prikazati korisnicima.
Preporučena praksa
Šaljite tekst u delovima (na primer po pasusu) umesto u jednom dugom dokumentu; rezultati stižu brže i lakše se pregledaju.
Na 429 odgovorite eksponencijalnim povećanjem razmaka između pokušaja, ne trenutnim ponavljanjem.
Ne šaljite lične ni poverljive podatke koji vam nisu potrebni – iako ih ne čuvamo, načelo minimizacije podataka i dalje važi.
Rezultat veštačke inteligencije može biti netačan; prikažite ga kao predlog za proveru, a ne kao konačnu istinu.
Česta pitanja
Mogu li da pozivam API iz svoje aplikacije ili sa svog domena?
Za sada ne. Worker trenutno ne šalje CORS zaglavlja i služi samo stranice sa adeptwrite.com. Spoljni pristup sa API ključevima planiran je uz plan Pro; ova dokumentacija biće ažurirana kada bude dostupan.
Da li se tekst poslat API-ju čuva?
Ne. Tekst se prosleđuje modelu da bi izradio odgovor, a zatim se odbacuje. Logovi sadrže samo metapodatke (statusni kôd, zadatak, trajanje). Sve pojedinosti su u politici privatnosti.
Zašto je izlaz običan tekst, a ne strukturisan JSON?
Svaki zadatak daje jedan gotov tekst bez uvoda i Markdown ograda, pa može direktno da se prikaže u uređivaču. Dodatna struktura (na primer lista izmena) planirana je u kasnijoj verziji, bez promene verzije v1.
Koliko košta API?
Sa sajta adeptwrite.com je besplatan, uz ograničenje od 30 AI zahteva u minuti po IP adresi. Cene spoljnog pristupa biće objavljene uz plan Pro; do tada se ništa ne naplaćuje.
Koji model odgovara na moj zahtev?
Zavisi od jezika: engleski i indonežanski idu na SEA-LION, ostali jezici, uključujući srpski, na Qwen3-30B. Ako je taj model zauzet ili otkaže, odgovara sledeći model u lancu rezervnih, a polje model u odgovoru navodi onaj koji jeste odgovorio.