Dokumentace API

Přeformulování, kontrola gramatiky a pravopisu, shrnutí, překlad a kontrola plagiátů v 56 jazycích pro vaši aplikaci. Jednoduché REST rozhraní z okraje sítě Cloudflare.

Same-origin
API v současnosti obsluhuje jen požadavky z webu adeptwrite.com (bez hlaviček CORS). Externí přístup s klíčem API je plánován spolu s plánem Pro. Dokumentaci zveřejňujeme předem, aby byl kontrakt otevřený a mohli jste se připravit.
Shrnutí

API AdeptWrite v1 má tři aktivní endpointy. POST /api/v1/run přijme JSON s poli task, mode, lang a text (nejvýše 6 000 znaků) a vrátí čistý text z modelu Cloudflare Workers AI vybraného podle jazyka; POST /api/v1/plagiarism porovná text s otevřenými zdroji a uvede každý prohledaný zdroj; GET /api/v1/health vrátí stav služby. Text se neukládá ani nezapisuje do logů a požadavky na AI jsou omezeny na 30 za minutu na jednu IP adresu.

Základy

  • Základní URL: https://adeptwrite.com/api/v1
  • Formát: požadavky i odpovědi jsou JSON (Content-Type: application/json, UTF-8).
  • Autentizace: zatím žádná; požadavek musí pocházet ze stránky adeptwrite.com (same-origin). Klíče API přijdou spolu s plánem Pro.
  • Soukromí: obsah pole text se neukládá ani nezapisuje do logů; odpovědi mají hlavičku Cache-Control: no-store.
  • Verze: cesta /v1/ se nezmění nekompatibilním způsobem; větší změny dostanou cestu /v2/.

POST/api/v1/run

Spustí jednu úlohu AI nad textem a vrátí výsledek jako čistý text (bez úvodu a bez bloků Markdownu).

Požadavek

FieldTypeRequiredNotes
taskstring✓Název úlohy; viz seznam úloh níže.
textstring✓Vstupní text, 1–6 000 znaků.
langstring✓Jazyk výsledku: jeden z 56 kódů jazykových verzí webu (cs, en, ja, pt-pt, zh-hant a další; značky BCP 47 jako pt-BR se přiřadí také) nebo auto pro „stejný jazyk jako vstup“.
modestring—Režim dostupný pro daný nástroj, například Formal, Akademik, Ringkas, Poin-poin. Pokud úloha režimy nemá, ignoruje se.
optionsobject—Další volby podle úlohy: from / to pro translate (z libovolného podporovaného jazyka do jiného; from může být auto; sr-Cyrl žádá srbštinu v cyrilici), platform (instagram / tiktok / linkedin) pro caption a volitelná pojmenovaná pole fields pro bio, coverletter a meta. Ostatní klíče se ignorují.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "cs",
  "text": "Kvalita psaní je pro studenty hrozně důležitá.",
  "options": {}
}

Odpověď

Stav 200 s ok: true, výsledkem v output, modelem, který skutečně odpověděl, v model (liší se, pokud zasáhl záložní model) a dobou zpracování v milisekundách. Pokud byla odpověď oříznuta kvůli dosažení limitu délky nebo času, přibude truncated: true.

{
  "ok": true,
  "output": "Kvalita psaní je pro studenty velmi důležitá.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Příklad: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"cs","text":"Já a kolegové jsme to včera dokončily bysme to poslali."}'

Příklad: 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: 'cs', 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

Vybere z textu 4–8 charakteristických frází, vyhledá je v otevřených zdrojích podle jazyka textu (Wikipedie, Wikisource, plné texty Internet Archive, Europe PMC, DOAJ, arXiv; poskytovatel webového vyhledávání jen tehdy, když je nastaven a vyžádán) a spočítá míru překryvu. Server opouštějí pouze tyto krátké fráze.

Požadavek

FieldTypeRequiredNotes
textstring✓Nejméně 30 slov, nejvýše 6 000 znaků.
langstring✓Kód jazykové verze webu nebo auto.
optionsobject—web: true zapojí také poskytovatele webového vyhledávání, pokud ho provozovatel nastavil; webSearched v odpovědi říká, zda poskytovatel skutečně odpověděl.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…nejméně 30 slov…", "lang": "cs", "options": { "web": false } }

Odpověď

Stav 200 s polem score (shodná slova ÷ počet slov, 0–1), matches podle zdrojů se zvýrazněnými úseky passages (pozice znaků ve vašem textu), sourcesSearched (přesně ty zdroje, jejichž odpověď je ve výsledku), sourcesSkipped s důvody a webSearched.

{
  "ok": true,
  "score": 0.42,
  "words": 52,
  "matchedWords": 22,
  "matches": [{ "source": "wikipedia", "title": "…", "url": "https://cs.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říklad: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"cs","text":"…nejméně 30 slov…"}'

GET/api/v1/health

Hlásí, které služby jsou aktivní. Nevyžaduje tělo požadavku a nezapočítává se do kvóty.

Odpověď

Stav 200. ai je false, dokud je zapnutý nouzový vypínač AI; plagiarism uvádí zdroje, které kontrola umí prohledat; aidetect popisuje hloubkovou analýzu AI detektoru na serveru, která zatím není nasazena (POST /api/v1/aidetect odpovídá 503 disabled; detektor na webu běží ve vašem prohlížeči).

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

Příklad: curl

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

Task list

taskWhat it does
paraphrasePřeformulování; režimy: Standar, Formal, Santai (neformální), Akademik, Kreatif, Ringkas (zkrátit), Panjangkan (rozšířit).
grammarOprava gramatiky a pravopisu (pro češtinu podle Pravidel českého pravopisu).
toneZměna tónu; režimy: Formal, Kantor (pracovní), Santai (neformální).
rewriteVylepšení strnulých nebo zamotaných vět; režimy: Standar, Formal.
resizeZkrácení a rozšíření vět; režimy: Ringkas, Panjangkan.
essaySestavení odstavce nebo eseje z bodů; režimy: Akademik, Kreatif, Panjangkan.
summarizeShrnutí; režimy: Poin-poin (v bodech), Paragraf (odstavec), Satu kalimat (jedna věta).
translatePřeklad mezi dvěma podporovanými jazyky; options.from (nebo auto) a options.to; režimy: Alami (výchozí, přirozený), Formal, Santai.
thesisNápady na téma práce a osnova kapitol.
abstractStrukturovaný abstrakt ze shrnutí výzkumu.
captionPopisky na sociální sítě; options.platform: instagram, tiktok, linkedin.
emailE-maily a dopisy; režimy: Lamaran kerja (žádost o práci), Surat resmi (úřední dopis, výchozí), Follow-up.
headlineNadpisy článků a titulky; režimy: Kreatif, Ringkas.
productPopisy produktů; režimy: Marketplace, Toko online (e-shop).
synonymSeznam synonym k jednomu slovu nebo frázi.
humanizeZpřirozenění strnulého, obecného textu; režimy: Alami, Pribadi (osobní), Profesional.
metaTři dvojice meta titulku a popisu; režimy: Artikel, Produk, Halaman.
hashtagJeden řádek hashtagů; režimy: Instagram, TikTok, LinkedIn, X.
bioTři profilová bia; režimy: Instagram, LinkedIn, X, TikTok.
outlineČíslovaná osnova s podbody; režimy: Artikel, Esai, Skripsi (závěrečná práce), Presentasi.
sloganDeset nápadů na slogan; režimy: Merek (značka), Kampanye (kampaň), Produk.
paragraphJeden odstavec k tématu; režimy: Pembuka (úvod), Isi (jádro), Penutup (závěr).
coverletterKoncept motivačního dopisu; režimy: Fresh graduate, Berpengalaman (zkušený), Magang (stáž).
poemKrátká báseň; režimy: Bebas (volný verš), Berima (rýmovaná), Akrostik, Haiku, Pantun.

Limity

Délka textu
Nejvýše 6 000 znaků na požadavek (při překročení 413 too_long).
Na IP adresu
30 požadavků za minutu.
Globálně
100 požadavků za minutu pro celou službu a denní limit pro funkce s AI.
Kontrola plagiátů
5 kontrol za minutu na IP adresu a 60 za minutu pro celou službu; nejméně 30 slov.
Výstup
Rozpočet délky podle úlohy, nikdy více než 2 048 tokenů; oříznutá odpověď nese truncated: true.
Model
Vybírá se podle jazyka: indonéština a angličtina používají @cf/aisingapore/gemma-sea-lion-v4-27b-it, ostatní jazyky včetně češtiny @cf/qwen/qwen3-30b-a3b-fp8. Když je model vytížený, narazí na limit, je pomalý nebo selže, požadavek přejde na další model záložního řetězce (Qwen3-30B, pak @cf/google/gemma-4-26b-a4b-it, pak @cf/meta/llama-3.3-70b-instruct-fp8-fast). Pole model vždy uvádí model, který odpověděl.

Chybové kódy

StavKódKdy k ní dochází
400invalid_requestNeplatný JSON, prázdné povinné pole, neznámý task nebo lang.
413too_longtext má více než 6 000 znaků.
403forbiddenPožadavek nepochází ze stránky adeptwrite.com.
429rate_limitedByl překročen limit za minutu na IP adresu nebo globální limit. Počkejte počet sekund uvedený v Retry-After.
429quota_exceededDenní limit funkcí s AI je vyčerpán. Zkuste to znovu následující den (UTC).
502upstreamŽádný model v řetězci neodpověděl včas.
502empty_outputModel odpověděl, ale výsledek je prázdný.
503disabledProvozovatel službu dočasně vypnul, nebo (u /api/v1/aidetect) ještě není nasazena.

Formát chyb

Všechny chyby se vracejí jako JSON s odpovídajícím stavovým kódem HTTP a stejným tvarem:

{ "ok": false, "error": { "code": "rate_limited", "message": "Příliš mnoho požadavků. Zkuste to za chvíli znovu." } }

Nejdřív zkontrolujte ok, pak pro programové zpracování čtěte error.code; error.message lze bezpečně zobrazit uživateli.

Doporučené postupy

  • Posílejte text po částech (například po odstavcích), ne jako jeden dlouhý dokument; výsledek je rychlejší a snáz se kontroluje.
  • Odpověď 429 řešte exponenciálním čekáním, ne okamžitým opakováním.
  • Neposílejte zbytečné osobní ani důvěrné údaje; i když je neukládáme, zásada minimalizace údajů platí.
  • Výstupy AI mohou být chybné; zobrazujte je jako návrh k ověření, ne jako konečnou pravdu.

Časté otázky

Mohu API používat z vlastní aplikace nebo domény?

Zatím ne. Worker v tuto chvíli neposílá hlavičky CORS a obsluhuje jen stránky adeptwrite.com. Externí přístup s klíčem API je plánován spolu s plánem Pro; dokumentaci aktualizujeme, jakmile bude skutečně dostupný.

Ukládá se text odeslaný do API?

Ne. Text se předá modelu, aby vytvořil odpověď, a pak se zahodí. Logy obsahují jen metadata, například stavový kód, název úlohy a dobu zpracování, nikdy obsah textu. Úplné podrobnosti jsou v zásadách ochrany osobních údajů.

Proč je výsledek čistý text a ne strukturovaný JSON?

Každá úloha vrací jeden hotový text bez úvodu a bloků Markdownu, aby šel rovnou zobrazit v editoru. Další struktura (například seznam změn) se plánuje do příští verze, aniž by se změnila v1.

Kolik stojí používání API?

Z webu adeptwrite.com je zdarma s limitem 30 požadavků na AI za minutu na IP adresu. Cenu externího přístupu oznámíme spolu s plánem Pro; do té doby nic neúčtujeme.

Který model moji žádost zpracuje?

Záleží na jazyce: indonéštinu a angličtinu zpracovává SEA-LION, ostatní jazyky včetně češtiny Qwen3-30B. Když je model vytížený nebo selže, odpoví další model záložního řetězce a pole model v odpovědi uvádí ten, který skutečně odpověděl.