Dokumentacija API

Parafraziranje, preverjanje slovnice, povzetki, prevajanje in preverjanje plagiatorstva v 56 jezikih. Preprost REST, ki ga streže Cloudflarovo robno omrežje.

Isti izvor
API trenutno sprejema zahteve samo s strani adeptwrite.com (brez glav CORS). Zunanji dostop s ključi API je načrtovan skupaj s paketom Pro. Dokumentacijo objavljamo vnaprej, da je pogodba odprta in se lahko pripravite.
Povzetek

API AdeptWrite v1 ima tri delujoče končne točke. POST /api/v1/run sprejme JSON s polji task, mode, lang in text (do 6.000 znakov) in vrne izpis v obliki navadnega besedila iz modela Cloudflare Workers AI, izbranega glede na jezik; POST /api/v1/plagiarism besedilo primerja z odprtimi viri in našteje vse preiskane vire; GET /api/v1/health vrne stanje storitve. Besedilo se nikoli ne shrani ali zapiše v dnevnike, zahteve z UI pa so omejene na 30 na minuto na naslov IP.

Osnove

  • Osnovni naslov: https://adeptwrite.com/api/v1
  • Oblika: zahteve in odgovori so JSON (Content-Type: application/json, UTF-8).
  • Overjanje: zaenkrat ni; zahteve morajo priti s strani adeptwrite.com (isti izvor). Ključi API pridejo s paketom Pro.
  • Zasebnost: polje text se nikoli ne shrani ali zapiše v dnevnike; odgovori vsebujejo Cache-Control: no-store.
  • Različice: pot /v1/ se ne bo spremenila nezdružljivo; prelomne spremembe bodo uporabljale /v2/.

POST/api/v1/run

Izvede eno nalogo z UI nad besedilom in vrne rezultat kot navadno besedilo (brez uvoda in brez Markdownovih ograd).

Zahteva

FieldTypeRequiredNotes
taskstring✓Ime naloge; glejte seznam nalog spodaj.
textstring✓Vhodno besedilo, 1–6.000 znakov.
langstring✓Jezik rezultata: ena od 56 kod jezikov strani (en, id, sl, pt-pt, zh-hant …; oznake BCP 47, kot je pt-BR, se preslikajo) ali auto za »isti jezik kot vnos«.
modestring—Način, ki je na voljo za to orodje, na primer Formal, Akademik, Ringkas, Poin-poin (imena načinov so indonezijske oznake iz registra, ne slovenske oznake v vmesniku). Pri nalogah brez načinov se prezre.
optionsobject—Možnosti posamezne naloge: from / to za translate (kateri koli podprti jezik v kateri koli drugi; from je lahko auto; sr-Cyrl zahteva srbščino v cirilici), platform (instagram / tiktok / linkedin) za caption in neobvezna označena polja fields za bio, coverletter in meta. Drugi ključi se prezrejo.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "sl",
  "text": "Dobro pisanje je za študente zelo pomembno.",
  "options": {}
}

Odgovor

Stanje 200 z ok: true, rezultat v output, model, ki je dejansko odgovoril, v model (ta se razlikuje, kadar je priskočil nadomestni model), in čas obdelave v milisekundah. Polje truncated: true se doda, kadar je odgovor dosegel omejitev dolžine ali časa in je bil odrezan.

{
  "ok": true,
  "output": "Kakovostno pisanje je za študente bistvenega pomena.",
  "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":"sl","text":"Šel sem z prijateljem v Ljubljano in nevem, kdaj se vrnem."}'

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: 'sl', 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

Izbere 4–8 značilnih besednih zvez iz besedila, v jeziku besedila poišče po odprtih virih (Wikipedija, Wikisource, polno besedilo Internet Archive, Europe PMC, DOAJ, arXiv; ponudnik spletnega iskanja samo, če je nastavljen in zahtevan) in oceni prekrivanje. Strežnik zapustijo samo te kratke besedne zveze.

Zahteva

FieldTypeRequiredNotes
textstring✓Vsaj 30 besed, največ 6.000 znakov.
langstring✓Koda jezika strani ali auto.
optionsobject—web: true poizveduje tudi pri ponudniku spletnega iskanja, če ga je upravljavec nastavil; webSearched v odgovoru pove, ali je res odgovoril.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…vsaj 30 besed…", "lang": "sl", "options": { "web": false } }

Odgovor

Stanje 200 s poljem score (ujemajoče se besede ÷ besede, 0–1), matches po virih z označenimi odlomki v passages (zamiki znakov v vašem besedilu), sourcesSearched (natanko viri, katerih odgovori so v rezultatu), sourcesSkipped z razlogom in webSearched.

{
  "ok": true,
  "score": 0.42,
  "words": 52,
  "matchedWords": 22,
  "matches": [{ "source": "wikipedia", "title": "…", "url": "https://sl.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":"sl","text":"…vsaj 30 besed…"}'

GET/api/v1/health

Sporoča, katere storitve so vklopljene. Ne sprejme telesa in se ne všteva v kvoto.

Odgovor

Stanje 200. Polje ai je false, dokler je vklopljeno zasilno stikalo UI; plagiarism našteje vire, ki jih preverjanje lahko poizveduje; aidetect opisuje strežniško poglobljeno analizo AI detektorja, ki še ni nameščena (POST /api/v1/aidetect odgovori 503 disabled; detektor na strani deluje v vašem brskalniku).

{
  "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; načini: Standar (običajno), Formal, Santai (sproščeno), Akademik, Kreatif, Ringkas (skrajšaj), Panjangkan (razširi).
grammarPopravljanje slovnice in pravopisa; za slovenščino po slovenskem pravopisu (SP 2001).
toneSpreminjanje tona; načini: Formal, Kantor (poslovno), Santai (sproščeno).
rewritePopravljanje togih ali nerodnih stavkov; načini: Standar, Formal.
resizeKrajšanje ali podaljševanje stavkov; načini: Ringkas, Panjangkan.
essayOdstavki ali esej iz alinej; načini: Akademik, Kreatif, Panjangkan.
summarizePovzetek; načini: Poin-poin (alineje), Paragraf (odstavek), Satu kalimat (en stavek).
translatePrevod med katerima koli podprtima jezikoma; options.from (ali auto) in options.to; načini: Alami (naravno, privzeto), Formal, Santai (sproščeno).
thesisPredlogi naslovov diplomske naloge in kazalo poglavij.
abstractStrukturiran izvleček iz povzetka raziskave.
captionOpisi objav na družbenih omrežjih; options.platform: instagram, tiktok, linkedin.
emailE-pošta in dopisi; načini: Lamaran kerja (prijava na delo), Surat resmi (uradni dopis), Follow-up.
headlineNaslovi člankov; načini: Kreatif, Ringkas.
productOpisi izdelkov; načini: Marketplace (spletna tržnica), Toko online (spletna trgovina).
synonymSeznam sopomenk za eno besedo ali besedno zvezo.
humanizeToga, splošna besedila naredi naravnejša; načini: Alami (naravno), Pribadi (osebno), Profesional (strokovno).
metaTrije pari meta naslova in opisa; načini: Artikel (članek), Produk (izdelek), Halaman (katera koli spletna stran).
hashtagEna vrstica hashtagov; načini: Instagram, TikTok, LinkedIn, X.
bioTrije opisi profila; načini: Instagram, LinkedIn, X, TikTok.
outlineOštevilčen načrt s podtočkami; načini: Artikel (članek), Esai (esej), Skripsi (diplomska naloga), Presentasi (predstavitev).
sloganDeset predlogov sloganov; načini: Merek (blagovna znamka), Kampanye (kampanja), Produk (izdelek).
paragraphEn odstavek iz teme; načini: Pembuka (uvodni), Isi (jedrni), Penutup (zaključni).
coverletterOsnutek prošnje za zaposlitev; načini: Fresh graduate (po diplomi), Berpengalaman (z izkušnjami), Magang (praksa).
poemKratke pesmi; načini: Bebas (prosti verz), Berima (z rimo), Akrostik (akrostih), Haiku.

Omejitve

Dolžina besedila
Največ 6.000 znakov na zahtevo (nad tem 413 too_long).
Na naslov IP
30 zahtev na minuto.
Globalno
100 zahtev na minuto na celotni storitvi in dnevna zgornja meja za funkcije z UI.
Plagiatorstvo
5 preverjanj na minuto na naslov IP in 60 na minuto na celotni storitvi; najmanj 30 besed.
Izpis
Proračun dolžine za posamezno nalogo, nikoli več kot 2.048 žetonov; odrezan odgovor nosi truncated: true.
Model
Model je izbran glede na jezik in opravilo. Kadar je model zaseden, omejen, počasen ali odpove, zahteva preide na naslednji model v verigi. Polje model vedno poimenuje model, ki je odgovoril; imena modelov se lahko spremenijo.

Kode napak

StanjeKodaKdaj se zgodi
400invalid_requestNeveljaven JSON, manjkajoče obvezno polje ali neznan task oziroma lang.
413too_longtext presega 6.000 znakov.
403forbiddenZahteva ni prišla s strani adeptwrite.com.
429rate_limitedPresežena je omejitev na naslov IP ali globalna omejitev na minuto. Počakajte število sekund iz Retry-After.
429quota_exceededDnevna zgornja meja za funkcije z UI je porabljena. Poskusite naslednji dan (UTC).
502upstreamNoben model v verigi ni pravočasno odgovoril.
502empty_outputModeli so odgovorili, a z praznim rezultatom.
503disabledUpravljavec je storitev začasno izklopil ali (za /api/v1/aidetect) še ni nameščena.

Oblika napak

Vsaka napaka se vrne kot JSON z ustrezno kodo stanja HTTP in enako obliko:

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

Najprej preverite ok, nato za programsko obravnavo preberite error.code; error.message je varno pokazati uporabnikom.

Priporočena praksa

  • Besedilo pošiljajte po delih (na primer po odstavkih), ne kot dolg dokument; rezultati pridejo hitreje in jih je lažje pregledati.
  • Odgovor 429 obravnavajte z eksponentnim zamikom, ne s takojšnjimi ponovnimi poskusi.
  • Ne pošiljajte osebnih ali zaupnih podatkov, ki jih ne potrebujete – čeprav jih ne shranjujemo, še vedno velja zmanjševanje količine podatkov.
  • Izpis UI je lahko napačen; predstavite ga kot predlog za pregled, ne kot dokončno resnico.

Pogosta vprašanja

Ali lahko API kličem iz lastne aplikacije ali domene?

Še ne. Worker trenutno ne pošilja glav CORS in streže samo strani adeptwrite.com. Zunanji dostop s ključi API je načrtovan skupaj s paketom Pro; dokumentacijo bomo posodobili, ko bo na voljo.

Ali se besedilo, poslano v API, shrani?

Ne. Besedilo se posreduje modelu za pripravo odgovora in nato zavrže. Dnevniki vsebujejo samo metapodatke (kodo stanja, nalogo, trajanje). Vse podrobnosti so v pravilniku o zasebnosti.

Zakaj je izpis navadno besedilo in ne strukturiran JSON?

Vsaka naloga ustvari eno takoj uporabno besedilo brez uvoda in Markdownovih ograd, da ga je mogoče neposredno prikazati v urejevalniku. Dodatna struktura (na primer seznam sprememb) je načrtovana za kasnejšo različico, brez spremembe različice v1.

Koliko stane API?

S strani adeptwrite.com je brezplačen, omejen na 30 zahtev z UI na minuto na naslov IP. Cene za zunanji dostop bomo objavili skupaj s paketom Pro; do takrat se ne zaračuna nič.

Kateri model odgovori na mojo zahtevo?

Odvisno od jezika: angleščina in indonezijščina gresta na SEA-LION, drugi jeziki, tudi slovenščina, na Qwen3-30B. Če je ta model zaseden ali odpove, odgovori naslednji model v nadomestni verigi, polje model v odgovoru pa poimenuje tistega, ki je odgovoril.