API dokumentacija

Parafraziranje, provjera gramatike, sažeci, prijevod i provjera plagijata na 56 jezika. Jednostavan REST, posluživan s Cloudflareova ruba.

Isto podrijetlo
API trenutačno prima zahtjeve samo sa stranica adeptwrite.com (bez CORS zaglavlja). Vanjski pristup s API ključevima planiran je uz paket Pro. Ova je dokumentacija objavljena ranije kako bi ugovor bio otvoren, a vi se mogli pripremiti.
Sažetak

API v1 AdeptWritea ima tri aktivne završne točke. POST /api/v1/run prima JSON s poljima task, mode, lang i text (do 6.000 znakova) te vraća izlaz u obliku običnog teksta iz modela Cloudflare Workers AI odabranog prema jeziku; POST /api/v1/plagiarism uspoređuje tekst s otvorenim izvorima i navodi svaki pretraženi izvor; GET /api/v1/health vraća stanje usluge. Tekst se nikada ne pohranjuje ni bilježi, a AI zahtjevi ograničeni su na 30 u minuti po IP adresi.

Osnove

  • Osnovni URL: https://adeptwrite.com/api/v1
  • Format: zahtjevi i odgovori su JSON (Content-Type: application/json, UTF-8).
  • Autentikacija: zasad nema; zahtjevi moraju dolaziti sa stranica adeptwrite.com (isto podrijetlo). API ključevi stižu uz paket Pro.
  • Privatnost: polje text nikada se ne pohranjuje ni bilježi; odgovori nose Cache-Control: no-store.
  • Inačice: putanja /v1/ neće se mijenjati na nekompatibilan način; promjene koje lome kompatibilnost bit će na putanji /v2/.

POST/api/v1/run

Izvodi jedan AI zadatak nad tekstom i vraća rezultat kao običan tekst (bez uvoda i bez Markdown ograda).

Zahtjev

FieldTypeRequiredNotes
taskstring✓Naziv zadatka; pogledajte popis zadataka u nastavku.
textstring✓Ulazni tekst, 1–6.000 znakova.
langstring✓Jezik rezultata: jedna od 56 oznaka jezika web-mjesta (hr, en, id, ja, pt-pt, zh-hant…; BCP 47 oznake poput pt-BR se preslikavaju) ili auto za „isti jezik kao ulaz“.
modestring—Način rada dostupan za taj alat, npr. Formal, Akademik, Ringkas, Poin-poin (nazivi načina rada su indonezijske oznake iz registra). Ignorira se za zadatke bez načina rada.
optionsobject—Mogućnosti 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 ćirilicom), platform (instagram / tiktok / linkedin) za caption te neobvezna imenovana polja fields za bio, coverletter i meta. Ostali se ključevi ignoriraju.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "hr",
  "text": "Dobro pisanje studentima je vrlo važno.",
  "options": {}
}

Odgovor

Status 200 s ok: true, rezultatom u polju output, modelom koji je doista odgovorio u polju model (razlikuje se kada je uskočio pričuvni model) i vremenom obrade u milisekundama. Polje truncated: true dodaje se kada je odgovor dosegnuo ograničenje duljine ili vremena i bio prekinut.

{
  "ok": true,
  "output": "Kvaliteta pisanja ključna je za studente.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Primjer: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"hr","text":"Ja bi otišao u knjižnicu sutra."}'

Primjer: 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: 'hr', 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 izraza iz teksta, pretražuje otvorene izvore na jeziku teksta (Wikipedija, Wikizvor, puni tekst Internet Archivea, Europe PMC, DOAJ, arXiv; pružatelja web-pretrage samo kada je podešen i zatražen) i ocjenjuje preklapanje. Poslužitelj napuštaju samo ti kratki izrazi.

Zahtjev

FieldTypeRequiredNotes
textstring✓Najmanje 30 riječi, najviše 6.000 znakova.
langstring✓Oznaka jezika web-mjesta ili auto.
optionsobject—web: true dodatno upućuje upit pružatelju web-pretrage kada ga je operator podesio; webSearched u odgovoru kaže je li doista odgovorio.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…najmanje 30 riječi…", "lang": "hr", "options": { "web": false } }

Odgovor

Status 200 s poljima score (podudarne riječi ÷ riječi, 0–1), matches po izvoru s istaknutim passages (pomaci znakova u vašem tekstu), sourcesSearched (točno izvori čiji su odgovori u rezultatu), sourcesSkipped s razlogom i webSearched.

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

Primjer: curl

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

GET/api/v1/health

Javlja koje su usluge uključene. Ne prima tijelo zahtjeva i ne troši kvotu.

Odgovor

Status 200. Polje ai je false dok je uključena sigurnosna sklopka za AI; plagiarism navodi izvore koje provjera može upitati; aidetect opisuje dubinsku analizu AI detektora na poslužitelju, koja još nije puštena u rad (POST /api/v1/aidetect odgovara s 503 disabled; detektor na web-mjestu radi u vašem pregledniku).

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

Primjer: curl

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

Task list

taskWhat it does
paraphraseParafraziranje; načini: Standar (standardno), Formal (službeno), Santai (opušteno), Akademik (akademski), Kreatif (kreativno), Ringkas (kraće), Panjangkan (dulje).
grammarIspravljanje gramatike i pravopisa (za hrvatski prema uputi o standardnom hrvatskom i Hrvatskom pravopisu IHJJ-a).
tonePromjena tona; načini: Formal (službeno), Kantor (poslovno), Santai (opušteno).
rewritePopravak krutih ili nespretnih rečenica; načini: Standar, Formal.
resizeSkraćivanje ili proširivanje rečenica; načini: Ringkas (kraće), Panjangkan (dulje).
essayIzrada odlomaka ili eseja iz natuknica; načini: Akademik, Kreatif, Panjangkan.
summarizeSažetak; načini: Poin-poin (točke), Paragraf (odlomak), Satu kalimat (jedna rečenica).
translatePrijevod između bilo koja dva podržana jezika; options.from (ili auto) i options.to; načini: Alami (prirodno, zadano), Formal (službeno), Santai (opušteno).
thesisIdeje za naslove završnog rada i plan poglavlja.
abstractStrukturirani sažetak rada iz sažetka istraživanja.
captionOpisi za društvene mreže; options.platform: instagram, tiktok, linkedin.
emailE-mailovi i dopisi; načini: Lamaran kerja (prijava za posao), Surat resmi (službeno pismo), Follow-up (naknadna poruka).
headlineNaslovi članaka i naslovnice; načini: Kreatif, Ringkas.
productOpisi proizvoda; načini: Marketplace (tržnica), Toko online (web-trgovina).
synonymPopis sinonima za jednu riječ ili izraz.
humanizeČini kruti, generički tekst prirodnijim; načini: Alami (prirodno), Pribadi (osobno), Profesional (profesionalno).
metaTri para meta naslova i opisa; načini: Artikel (članak), Produk (proizvod), Halaman (bilo koja web-stranica).
hashtagJedan redak hashtagova; načini: Instagram, TikTok, LinkedIn, X.
bioTri opisa profila; načini: Instagram, LinkedIn, X, TikTok.
outlineNumerirani plan s podtočkama; načini: Artikel (članak), Esai (esej), Skripsi (završni rad), Presentasi (prezentacija).
sloganDeset ideja za slogane; načini: Merek (marka), Kampanye (kampanja), Produk (proizvod).
paragraphJedan odlomak iz teme; načini: Pembuka (uvod), Isi (razrada), Penutup (zaključak).
coverletterNacrt motivacijskog pisma; načini: Fresh graduate (tek diplomirani), Berpengalaman (s iskustvom), Magang (stručna praksa).
poemKratke pjesme; načini: Bebas (slobodni stih), Berima (rimovano), Akrostik, Haiku.

Ograničenja

Duljina teksta
Najviše 6.000 znakova po zahtjevu (iznad toga 413 too_long).
Po IP adresi
30 zahtjeva u minuti.
Globalno
100 zahtjeva u minuti na cijeloj usluzi, uz dnevnu gornju granicu za AI značajke.
Plagijat
5 provjera u minuti po IP adresi i 60 u minuti na cijeloj usluzi; najmanje 30 riječi.
Izlaz
Proračun duljine po zadatku, nikada više od 2.048 tokena; prekinuti odgovor nosi truncated: true.
Model
Bira se po jeziku: engleski i indonezijski rade na @cf/aisingapore/gemma-sea-lion-v4-27b-it, svi ostali jezici (pa i hrvatski) na @cf/qwen/qwen3-30b-a3b-fp8. Kada je model zauzet, ograničen, spor ili zakaže, zahtjev prelazi na sljedeći model u nizu (Qwen3-30B, zatim @cf/google/gemma-4-26b-a4b-it, zatim @cf/meta/llama-3.3-70b-instruct-fp8-fast). Polje model uvijek imenuje model koji je odgovorio.

Kodovi pogrešaka

StatusKodKada se javlja
400invalid_requestNeispravan JSON, nedostaje obvezno polje ili je task odnosno lang nepoznat.
413too_longtext premašuje 6.000 znakova.
403forbiddenZahtjev nije stigao sa stranice adeptwrite.com.
429rate_limitedPremašeno je ograničenje po IP adresi ili globalno ograničenje u minuti. Pričekajte broj sekundi iz zaglavlja Retry-After.
429quota_exceededDnevna gornja granica za AI značajke je iskorištena. Pokušajte sljedeći dan (UTC).
502upstreamNijedan model u nizu nije odgovorio na vrijeme.
502empty_outputModeli su odgovorili, ali s praznim rezultatom.
503disabledOperator je uslugu privremeno isključio ili (za /api/v1/aidetect) još nije puštena u rad.

Oblik pogreške

Svaka se pogreška vraća kao JSON s odgovarajućim HTTP statusnim kodom i uvijek istim oblikom:

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

Prvo provjerite ok, a zatim pročitajte error.code za programsku obradu; error.message sigurno je prikazati korisnicima.

Preporučena praksa

  • Tekst šaljite u dijelovima (primjerice po odlomak), a ne kao jedan dugačak dokument; rezultati stižu brže i lakše ih je pregledati.
  • Odgovor 429 obradite eksponencijalnim odgodama, a ne trenutnim ponovnim pokušajima.
  • Ne šaljite osobne ni povjerljive podatke koji vam nisu potrebni; iako ih ne pohranjujemo, vrijedi načelo smanjenja količine podataka.
  • Rezultat umjetne inteligencije može biti pogrešan; prikažite ga kao prijedlog za provjeru, a ne kao konačnu istinu.

Česta pitanja

Mogu li API pozivati iz vlastite aplikacije ili domene?

Zasad ne. Worker trenutačno ne šalje CORS zaglavlja i poslužuje samo stranice adeptwrite.com. Vanjski pristup s API ključevima planiran je uz paket Pro; ova će se dokumentacija ažurirati kada bude dostupan.

Pohranjuje li se tekst poslan API-ju?

Ne. Tekst se prosljeđuje modelu radi izrade odgovora, a zatim odbacuje. Zapisnici sadrže samo metapodatke (statusni kod, zadatak, trajanje). Sve pojedinosti pročitajte u pravilima privatnosti.

Zašto je izlaz običan tekst, a ne strukturirani JSON?

Svaki zadatak daje jedan tekst spreman za uporabu, bez uvoda i Markdown ograda, pa se može izravno prikazati u uređivaču. Dodatna struktura (primjerice popis izmjena) planirana je u kasnijoj inačici, bez promjene inačice v1.

Koliko košta API?

S web-mjesta adeptwrite.com besplatan je, uz ograničenje od 30 AI zahtjeva u minuti po IP adresi. Cijene vanjskog pristupa bit će objavljene uz paket Pro; do tada se ništa ne naplaćuje.

Koji model odgovara na moj zahtjev?

Ovisi o jeziku: engleski i indonezijski idu na SEA-LION, ostali jezici, pa i hrvatski, na Qwen3-30B. Ako je taj model zauzet ili zakaže, odgovara sljedeći model u nizu, a polje model u odgovoru imenuje onaj koji je odgovorio.