API-dokumentáció

Átfogalmazás, nyelvtani és helyesírás-ellenőrzés, összefoglalás, fordítás és plágiumkeresés 56 nyelven, az alkalmazásodnak. Egyszerű REST, a Cloudflare peremhálózatáról.

Same-origin
Jelenleg az API csak az adeptwrite.com saját oldalairól érkező kéréseket szolgálja ki (CORS-fejlécek nélkül). Az API-kulccsal történő külső hozzáférés a Pro csomaghoz tartozik. A dokumentációt korán közzétettük, hogy a szerződés nyílt legyen, és fel tudj készülni rá.
Összefoglaló

Az AdeptWrite v1 API-nak három működő végpontja van. A POST /api/v1/run JSON-t fogad task, mode, lang és text mezővel (legfeljebb 6000 karakter), és a nyelvhez kiválasztott Cloudflare Workers AI modell egyszerű szöveges eredményét adja vissza; a POST /api/v1/plagiarism a szöveget nyílt forrásokkal veti össze, és felsorolja az összes átnézett forrást; a GET /api/v1/health a szolgáltatás állapotát adja vissza. A szöveget soha nem tároljuk és nem naplózzuk, az MI-kérések száma IP-címenként percenként 30.

Alapok

  • Alap-URL: https://adeptwrite.com/api/v1
  • Formátum: a kérések és a válaszok JSON-ban mennek (Content-Type: application/json, UTF-8).
  • Hitelesítés: egyelőre nincs; a kérésnek az adeptwrite.com egyik oldaláról kell érkeznie (same-origin). Az API-kulcs a Pro csomaggal jön.
  • Adatvédelem: a text tartalmát nem tároljuk és nem naplózzuk; a válaszok Cache-Control: no-store fejlécet kapnak.
  • Verzió: a /v1/ útvonal nem változik visszafelé nem kompatibilis módon; nagyobb változás esetén a /v2/ útvonalat használjuk.

POST/api/v1/run

Egy MI-feladatot hajt végre a szövegen, és az eredményt sima szövegként adja vissza (bevezető mondat és Markdown-blokk nélkül).

Kérés

FieldTypeRequiredNotes
taskstring✓A feladat neve; lásd lejjebb a feladatlistát.
textstring✓A bemeneti szöveg, 1–6000 karakter.
langstring✓Az eredmény nyelve: az oldal 56 nyelvi kódjának egyike (hu, en, id, ja, pt-pt, zh-hant stb.; a BCP 47 címkék, például a pt-BR, megfeleltetésre kerülnek), vagy auto, ami „ugyanaz, mint a bemenet nyelve”.
modestring—Az eszközhöz elérhető mód, például Formal, Akademik, Ringkas, Poin-poin. Figyelmen kívül marad, ha a feladatnak nincs módja.
optionsobject—Feladatonkénti további beállítások: from / to a translate feladathoz (bármely támogatott nyelvről bármely másikra; a from lehet auto; a sr-Cyrl cirill betűs szerbet kér), platform (instagram / tiktok / linkedin) a caption feladathoz, valamint címkézett, nem kötelező fields a bio, coverletter és meta feladathoz. A többi kulcsot figyelmen kívül hagyjuk.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "hu",
  "text": "Az írás minősége nagyon fontos az egyetemistáknak.",
  "options": {}
}

Válasz

200 állapotkód ok: true értékkel, az eredmény az output mezőben, a ténylegesen válaszoló modell a model mezőben (eltér, ha tartalék modell vette át a feladatot), és a feldolgozás ideje ezredmásodpercben. A truncated: true mező akkor jelenik meg, ha a választ a hosszkorlát vagy az időkorlát megszakította.

{
  "ok": true,
  "output": "A szöveg színvonala kiemelten fontos a hallgatók számára.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Példa: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"hu","text":"Tegnap Péterel busszal mentem a egyetemre."}'

Példa: 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: 'hu', 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

A szövegből 4–8 jellegzetes kifejezést választ ki, megkeresi őket a szöveg nyelvének megfelelő nyílt forrásokban (Wikipédia, Wikiforrás, az Internet Archive teljes szövegei, Europe PMC, DOAJ, arXiv; webes keresőszolgáltató csak akkor, ha be van állítva és kérték), majd kiszámítja az átfedést. Csak ezek a rövid kifejezések hagyják el a szervert.

Kérés

FieldTypeRequiredNotes
textstring✓Legalább 30 szó, legfeljebb 6000 karakter.
langstring✓Az oldal nyelvi kódja vagy auto.
optionsobject—A web: true a webes keresőszolgáltatót is bevonja, ha az üzemeltető beállította; a válaszban a webSearched jelzi, hogy a szolgáltató ténylegesen válaszolt-e.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…legalább 30 szó…", "lang": "hu", "options": { "web": false } }

Válasz

200 állapotkód a score (az egyező szavak ÷ az összes szó, 0–1), forrásonkénti matches a kiemelt passages szakaszokkal (karakterpozíciók a szövegedben), a sourcesSearched (pontosan azok a források, amelyek válasza benne van az eredményben), a sourcesSkipped az okokkal, és a webSearched mezőkkel.

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

Példa: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"hu","text":"…legalább 30 szó…"}'

GET/api/v1/health

Megmutatja, mely szolgáltatások működnek. Nincs kérés törzse, és nem számít bele a keretbe.

Válasz

200 állapotkód. Az ai értéke false, amíg az MI vészkapcsolója be van kapcsolva; a plagiarism felsorolja a keresőnek elérhető forrásokat; az aidetect az AI-detektor szerveroldali mélyelemzését írja le, amely még nincs telepítve (a POST /api/v1/aidetect 503 disabled választ ad; az oldalon az AI-detektor a böngészőben fut).

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

Példa: curl

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

Task list

taskWhat it does
paraphraseÁtfogalmazás; módok: Standar (normál), Formal (hivatalos), Santai (közvetlen), Akademik (tudományos), Kreatif (kreatív), Ringkas (rövidítés), Panjangkan (bővítés).
grammarNyelvtani és helyesírási javítás (magyarul az AkH. 12 szabályai szerint).
toneHangnemváltás; módok: Formal (hivatalos), Kantor (munkahelyi), Santai (közvetlen).
rewriteNehézkes vagy zavaros mondatok javítása; módok: Standar, Formal.
resizeMondatrövidítő és -bővítő; módok: Ringkas (rövidítés), Panjangkan (bővítés).
essayBekezdés vagy esszé összeállítása pontokból; módok: Akademik, Kreatif, Panjangkan.
summarizeÖsszefoglalás; módok: Poin-poin (felsorolás), Paragraf (bekezdés), Satu kalimat (egy mondat).
translateFordítás két támogatott nyelv között; options.from (vagy auto) és options.to; módok: Alami (természetes, alapértelmezett), Formal, Santai.
thesisSzakdolgozati címötletek és fejezetvázlat.
abstractStrukturált absztrakt a kutatás összefoglalójából.
captionKözösségi médiás képaláírás; options.platform: instagram, tiktok, linkedin.
emailE-mail és levél; módok: Lamaran kerja (állásjelentkezés), Surat resmi (hivatalos levél), Follow-up (utókövetés).
headlineCikkcímek és főcímek; módok: Kreatif, Ringkas.
productTermékleírás; módok: Marketplace (piactér), Toko online (webáruház).
synonymSzinonimák listája egy szóhoz vagy kifejezéshez.
humanizeA merev, általános szöveget természetesebbé teszi; módok: Alami, Pribadi, Profesional.
metaHárom cím–metaleírás pár; módok: Artikel (cikk), Produk (termék), Halaman (oldal).
hashtagEgy sor hashtag; módok: Instagram, TikTok, LinkedIn, X.
bioHárom profilszöveg; módok: Instagram, LinkedIn, X, TikTok.
outlineSzámozott vázlat alpontokkal; módok: Artikel (cikk), Esai (esszé), Skripsi (szakdolgozat), Presentasi (előadás).
sloganTíz szlogenötlet; módok: Merek (márka), Kampanye (kampány), Produk (termék).
paragraphEgy bekezdés egy témáról; módok: Pembuka (bevezetés), Isi (tárgyalás), Penutup (befejezés).
coverletterMotivációs levél vázlata; módok: Fresh graduate (pályakezdő), Berpengalaman (tapasztalt), Magang (gyakornok).
poemRövid vers; módok: Bebas (szabad), Berima (rímes), Akrostik (akrosztichon), Haiku, Pantun.

Korlátok

A szöveg hossza
Kérésenként legfeljebb 6000 karakter (több esetén 413 too_long).
IP-címenként
Percenként 30 kérés.
Globális
Percenként 100 kérés az egész szolgáltatásra, valamint napi keret az MI-funkciókra.
Plágiumkeresés
IP-címenként percenként 5 vizsgálat, az egész szolgáltatásra percenként 60; legalább 30 szó.
Kimenet
Feladatonkénti hosszkeret, soha nem több 2048 tokennél; a megszakított válasz truncated: true jelzést kap.
Modell
Nyelvenként választjuk: az indonéz és az angol @cf/aisingapore/gemma-sea-lion-v4-27b-it modellt használ, a többi nyelv @cf/qwen/qwen3-30b-a3b-fp8 modellt. Ha a modell foglalt, korlátba ütközik, lassú vagy hibázik, a kérés a tartalékláncban a következő modellre kerül (Qwen3-30B, majd @cf/google/gemma-4-26b-a4b-it, majd @cf/meta/llama-3.3-70b-instruct-fp8-fast). A model mező mindig a ténylegesen válaszoló modellt nevezi meg.

Hibakódok

ÁllapotKódMikor fordul elő
400invalid_requestÉrvénytelen JSON, hiányzó kötelező mező, ismeretlen task vagy lang.
413too_longA text hosszabb 6000 karakternél.
403forbiddenA kérés nem az adeptwrite.com egyik oldaláról érkezett.
429rate_limitedTúllépted az IP-címenkénti vagy a globális percenkénti korlátot. Várj a Retry-After fejlécben megadott másodpercig.
429quota_exceededAz MI-funkciók napi kerete elfogyott. Próbáld újra másnap (UTC).
502upstreamA láncban egyik modell sem válaszolt időben.
502empty_outputA modell válaszolt, de az eredmény üres.
503disabledAz üzemeltető átmenetileg leállította a szolgáltatást, vagy (az /api/v1/aidetect esetén) még nincs telepítve.

Hibaformátum

Minden hiba JSON-ként érkezik a megfelelő HTTP-állapotkóddal és azonos szerkezettel:

{ "ok": false, "error": { "code": "rate_limited", "message": "Túl sok kérés. Próbáld újra egy kis idő múlva." } }

Először az ok mezőt nézd meg, majd a programozott kezeléshez olvasd az error.code értékét; az error.message biztonságosan megjeleníthető a felhasználónak.

Ajánlott gyakorlat

  • A szöveget részletekben (például bekezdésenként) küldd egy hosszú dokumentum helyett; így gyorsabb az eredmény, és könnyebb ellenőrizni.
  • A 429 választ exponenciális várakozással kezeld, ne azonnali újrapróbálkozással.
  • Ne küldj felesleges személyes vagy bizalmas adatot – bár nem tároljuk, az adatminimalizálás elve továbbra is érvényes.
  • Az MI eredménye téves lehet; ellenőrizhető javaslatként mutasd meg, ne végleges igazságként.

Gyakran ismételt kérdések

Használhatom az API-t a saját alkalmazásomból vagy domainemről?

Egyelőre nem. A Worker jelenleg nem küld CORS-fejléceket, és csak az adeptwrite.com oldalait szolgálja ki. A külső, API-kulcsos hozzáférés a Pro csomaghoz tartozik; a dokumentációt frissítjük, amint az valóban elérhető.

Tárolják az API-nak küldött szöveget?

Nem. A szöveget a modellnek adjuk át a válasz előállításához, majd eldobjuk. A naplók csak metaadatokat (állapotkód, feladatnév, időtartam) tartalmaznak, szöveget egyáltalán nem. A részleteket lásd az adatvédelmi tájékoztatóban.

Miért sima szöveg az eredmény, és miért nem strukturált JSON?

Minden feladat egyetlen, azonnal használható szöveget ad bevezető mondat és Markdown-blokk nélkül, hogy közvetlenül megjeleníthető legyen szerkesztőben. A további struktúrát (például a változtatások listáját) a következő verzióra tervezzük, a v1 megváltoztatása nélkül.

Mennyibe kerül az API használata?

Az adeptwrite.com oldalról ingyenes, IP-címenként percenként 30 MI-kérésig. A külső hozzáférés díjszabását a Pro csomaggal együtt hirdetjük meg; addig semmilyen díjat nem számolunk fel.

Melyik modell válaszol a kérésemre?

A nyelvtől függ: az indonézt és az angolt a SEA-LION, a többi nyelvet, így a magyart is, a Qwen3-30B kezeli. Ha a modell foglalt vagy hibázik, a tartaléklánc következő modellje válaszol, és a válasz model mezője a ténylegesen válaszoló modellt nevezi meg.