Dokumentacija API-ja

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

FieldTypeRequiredNotes
taskstring✓Naziv zadatka; vidite spisak zadataka ispod.
textstring✓Ulazni tekst, 1–6.000 karaktera.
langstring✓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“.
modestring—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.
optionsobject—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

FieldTypeRequiredNotes
textstring✓Najmanje 30 reči, najviše 6.000 karaktera.
langstring✓Kôd jezika sajta ili auto.
optionsobject—web: true dodatno koristi pretraživač veba kada ga je operater podesio; webSearched u odgovoru kaže da li je zaista odgovorio.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…najmanje 30 reči…", "lang": "sr", "options": { "web": false } }

Odgovor

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.

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

Primer: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"sr","text":"…najmanje 30 reči…"}'

GET/api/v1/health

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).

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

Primer: curl

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

Task list

taskWhat it does
paraphraseParafraziranje; režimi: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammarIspravka gramatike i pravopisa.
tonePromena tona; režimi: Formal, Kantor (poslovno), Santai (opušteno).
rewriteIspravka krutih ili nezgrapnih rečenica; režimi: Standar, Formal.
resizeSkraćivanje ili produžavanje rečenica; režimi: Ringkas, Panjangkan.
essayPasusi ili esej od tačaka; režimi: Akademik, Kreatif, Panjangkan.
summarizeSažetak; režimi: Poin-poin (tačke), Paragraf (pasus), Satu kalimat (jedna rečenica).
translatePrevod između bilo koja dva podržana jezika; options.from (ili auto) i options.to; režimi: Alami (prirodno, podrazumevano), Formal, Santai (opušteno).
thesisIdeje za naslove diplomskog rada i plan poglavlja.
abstractStrukturisan apstrakt na osnovu sažetka istraživanja.
captionOpisi objava za društvene mreže; options.platform: instagram, tiktok, linkedin.
emailMejlovi i dopisi; režimi: Lamaran kerja (prijava za posao), Surat resmi (službeno pismo), Follow-up (naknadna poruka).
headlineNaslovi članaka; režimi: Kreatif, Ringkas.
productOpisi proizvoda; režimi: Marketplace, Toko online (internet prodavnica).
synonymSpisak sinonima za jednu reč ili izraz.
humanizePrirodniji zvuk krutog ili generičkog teksta; režimi: Alami, Pribadi (lično), Profesional.
metaTri para meta naslova i opisa; režimi: Artikel (članak), Produk (proizvod), Halaman (bilo koja veb stranica).
hashtagJedan red heštegova; režimi: Instagram, TikTok, LinkedIn, X.
bioTri opisa profila; režimi: Instagram, LinkedIn, X, TikTok.
outlineNumerisan plan sa podtačkama; režimi: Artikel (članak), Esai (esej), Skripsi (diplomski rad), Presentasi (prezentacija).
sloganDeset ideja za slogane; režimi: Merek (brend), Kampanye (kampanja), Produk (proizvod).
paragraphJedan pasus na zadatu temu; režimi: Pembuka (uvodni), Isi (središnji), Penutup (zaključni).
coverletterNacrt motivacionog pisma; režimi: Fresh graduate (tek diplomirani), Berpengalaman (iskusni), Magang (praksa).
poemKratke 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

StatusKodKada se javlja
400invalid_requestNeispravan JSON, nedostaje obavezno polje ili je nepoznat task ili lang.
413too_longtext prelazi 6.000 karaktera.
403forbiddenZahtev nije stigao sa stranice adeptwrite.com.
429rate_limitedPrekoračeno je ograničenje po minuti, po IP adresi ili opšte. Sačekajte broj sekundi iz Retry-After.
429quota_exceededDnevno ograničenje za AI funkcije je iskorišćeno. Pokušajte sutradan (UTC).
502upstreamNijedan model u lancu nije odgovorio na vreme.
502empty_outputModeli su odgovorili, ali praznim rezultatom.
503disabledOperater 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.