API dokumentacija

Perfrazavimas, gramatikos tikrinimas, santraukos, vertimas ir plagiato patikra 56 kalbomis. Paprastas REST, aptarnaujamas iš „Cloudflare“ tinklo pakraščio.

Tas pats šaltinis
API šiuo metu aptarnauja tik užklausas iš pačios adeptwrite.com (CORS antraščių nėra). Išorinė prieiga su API raktais planuojama kartu su „Pro“ planu. Šią dokumentaciją skelbiame iš anksto, kad sutartis būtų atvira ir galėtumėte pasiruošti.
Santrauka

AdeptWrite v1 API turi tris veikiančius galinius taškus. POST /api/v1/run priima JSON su laukais task, mode, lang ir text (iki 6 000 simbolių) ir grąžina paprastą tekstą iš „Cloudflare Workers AI“ modelio, parinkto pagal kalbą; POST /api/v1/plagiarism palygina tekstą su atvirais šaltiniais ir išvardija kiekvieną ieškotą šaltinį; GET /api/v1/health grąžina paslaugos būseną. Tekstas niekada nesaugomas ir nerašomas į žurnalus, o DI užklausos ribojamos iki 30 per minutę vienam IP adresui.

Pagrindai

  • Bazinis adresas: https://adeptwrite.com/api/v1
  • Formatas: užklausos ir atsakymai yra JSON (Content-Type: application/json, UTF-8).
  • Autentifikavimas: kol kas nėra; užklausos turi ateiti iš adeptwrite.com puslapių (tas pats šaltinis). API raktai atsiras kartu su „Pro“.
  • Privatumas: laukas text niekada nesaugomas ir nerašomas į žurnalus; atsakymuose yra Cache-Control: no-store.
  • Versijos: kelias /v1/ nebus keičiamas nesuderinamai; esminiai pakeitimai naudos /v2/.

POST/api/v1/run

Vykdo vieną DI užduotį su tekstu ir grąžina rezultatą paprastu tekstu (be įžangos ir be Markdown tvoros).

Užklausa

FieldTypeRequiredNotes
taskstring✓Užduoties pavadinimas; žr. toliau pateiktą užduočių sąrašą.
textstring✓Įvesties tekstas, 1–6 000 simbolių.
langstring✓Rezultato kalba: vienas iš 56 svetainės lokalių kodų (en, id, lt, pt-pt, zh-hant…; BCP 47 žymės, pavyzdžiui, pt-BR, susiejamos) arba auto, reiškiantis „ta pati kalba kaip įvestis“.
modestring—Šiam įrankiui prieinamas režimas, pvz., Formal, Akademik, Ringkas, Poin-poin (režimų pavadinimai yra registro etiketės indoneziečių kalba). Užduotims be režimų ignoruojamas.
optionsobject—Užduoties parinktys: from / to užduočiai translate (bet kuri palaikoma kalba į bet kurią kitą; from gali būti auto; sr-Cyrl prašo serbų kalbos kirilica), platform (instagram / tiktok / linkedin) užduočiai caption ir neprivalomi pažymėti fields užduotims bio, coverletter ir meta. Kiti raktai ignoruojami.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "lt",
  "text": "Gera kalba studentams labai svarbi.",
  "options": {}
}

Atsakymas

Būsena 200 su ok: true, rezultatas lauke output, modelis, kuris iš tikrųjų atsakė, lauke model (jis skiriasi, kai įsijungia atsarginis modelis), ir apdorojimo trukmė milisekundėmis. truncated: true pridedamas, kai atsakymas pasiekė ilgio biudžetą ar laiko ribą ir buvo nutrauktas.

{
  "ok": true,
  "output": "Kalbos kokybė studentams yra esminė.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Pavyzdys: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"lt","text":"Mes nežinom kada ateis sekanti savaite."}'

Pavyzdys: 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: 'lt', 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

Parenka 4–8 išskirtines teksto frazes, ieško atvirų šaltinių teksto kalba (Wikipedia, Wikisource, Internet Archive pilni tekstai, Europe PMC, DOAJ, arXiv; žiniatinklio paieškos teikėjas tik jei sukonfigūruotas ir paprašytas) ir įvertina sutapimą. Iš serverio išeina tik tos trumpos frazės.

Užklausa

FieldTypeRequiredNotes
textstring✓Bent 30 žodžių, daugiausia 6 000 simbolių.
langstring✓Svetainės lokalės kodas arba auto.
optionsobject—web: true papildomai kreipiasi į žiniatinklio paieškos teikėją, jei operatorius jį sukonfigūravo; webSearched atsakyme parodo, ar jis tikrai atsakė.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…bent 30 žodžių…", "lang": "lt", "options": { "web": false } }

Atsakymas

Būsena 200 su score (sutapę žodžiai ÷ žodžiai, 0–1), matches pagal šaltinį su paryškintais passages (simbolių poslinkiai jūsų tekste), sourcesSearched (tiksliai tie šaltiniai, kurių atsakymai yra rezultate), sourcesSkipped su priežastimi ir webSearched.

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

Pavyzdys: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"lt","text":"…bent 30 žodžių…"}'

GET/api/v1/health

Parodo, kurios paslaugos įjungtos. Neturi turinio ir neįskaičiuojamas į kvotą.

Atsakymas

Būsena 200. ai yra false, kol įjungtas DI avarinis išjungiklis; plagiarism išvardija šaltinius, kuriuos patikra gali užklausti; aidetect aprašo serverinę DI detektoriaus gilią analizę, kuri dar neįdiegta (POST /api/v1/aidetect atsako 503 disabled; svetainėje esantis detektorius veikia jūsų naršyklėje).

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

Pavyzdys: curl

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

Task list

taskWhat it does
paraphrasePerfrazavimas; režimai: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammarGramatikos ir rašybos taisymas pasirinkta kalba.
toneTono keitimas; režimai: Formal, Kantor (dalykinis), Santai (neformalus).
rewriteStandžių ar nerangių sakinių taisymas; režimai: Standar, Formal.
resizeSakinių trumpinimas ar plėtimas; režimai: Ringkas, Panjangkan.
essayPastraipų ar esė sudarymas iš punktų; režimai: Akademik, Kreatif, Panjangkan.
summarizeSantrauka; režimai: Poin-poin (punktai), Paragraf (pastraipa), Satu kalimat (vienas sakinys).
translateVertimas tarp bet kurių dviejų palaikomų kalbų; options.from (arba auto) ir options.to; režimai: Alami (natūralus, numatytasis), Formal, Santai (neformalus).
thesisBaigiamojo darbo temų idėjos ir skyrių planas.
abstractStruktūruota mokslinio darbo santrauka iš tyrimo aprašo.
captionSocialinių tinklų įrašų tekstai; options.platform: instagram, tiktok, linkedin.
emailEl. laiškai ir raštai; režimai: Lamaran kerja (prašymas dėl darbo), Surat resmi (oficialus raštas), Follow-up (priminimas).
headlineStraipsnių pavadinimai ir antraštės; režimai: Kreatif, Ringkas.
productProduktų aprašymai; režimai: Marketplace (prekyvietė), Toko online (internetinė parduotuvė).
synonymVieno žodžio ar frazės sinonimų sąrašas.
humanizeStandaus ar bendro teksto padarymas natūralesniu; režimai: Alami, Pribadi (asmeniškas), Profesional.
metaTrys meta pavadinimo ir aprašymo poros; režimai: Artikel (straipsnis), Produk (produktas), Halaman (bet kuris puslapis).
hashtagViena grotažymių eilutė; režimai: Instagram, TikTok, LinkedIn, X.
bioTrys profilio aprašymai; režimai: Instagram, LinkedIn, X, TikTok.
outlineSunumeruotas planas su papunkčiais; režimai: Artikel (straipsnis), Esai (esė), Skripsi (baigiamasis darbas), Presentasi (pristatymas).
sloganDešimt šūkių idėjų; režimai: Merek (prekės ženklas), Kampanye (kampanija), Produk (produktas).
paragraphViena pastraipa pagal temą; režimai: Pembuka (įžanga), Isi (dėstymas), Penutup (pabaiga).
coverletterMotyvacinio laiško juodraštis; režimai: Fresh graduate (ką tik baigęs studijas), Berpengalaman (turintis patirties), Magang (praktika).
poemTrumpi eilėraščiai; režimai: Bebas (laisvoji forma), Berima (rimuotas), Akrostik, Haiku.

Apribojimai

Teksto ilgis
Daugiausia 6 000 simbolių per užklausą (viršijus – 413 too_long).
Vienam IP adresui
30 užklausų per minutę.
Bendra
100 užklausų per minutę visai paslaugai, be to, dienos riba DI funkcijoms.
Plagiato patikra
5 patikros per minutę vienam IP adresui ir 60 per minutę visai paslaugai; mažiausiai 30 žodžių.
Išvestis
Kiekvienai užduočiai skirtas ilgio biudžetas, niekada ne daugiau kaip 2 048 žetonai; nutrauktas atsakymas turi truncated: true.
Modelis
Parenkamas pagal kalbą: anglų ir indoneziečių kalbos veikia su @cf/aisingapore/gemma-sea-lion-v4-27b-it, visos kitos kalbos su @cf/qwen/qwen3-30b-a3b-fp8. Kai modelis užimtas, apribotas, lėtas ar sugenda, užklausa perduodama kitam modeliui grandinėje (Qwen3-30B, tada @cf/google/gemma-4-26b-a4b-it, tada @cf/meta/llama-3.3-70b-instruct-fp8-fast). Laukas model visada nurodo modelį, kuris atsakė.

Klaidų kodai

BūsenaKodasKada atsitinka
400invalid_requestNetinkamas JSON, trūksta privalomo lauko arba nežinomas task ar lang.
413too_longtext viršija 6 000 simbolių.
403forbiddenUžklausa neatėjo iš adeptwrite.com puslapio.
429rate_limitedViršyta IP adreso ar bendra užklausų per minutę riba. Palaukite sekundžių skaičių, nurodytą Retry-After.
429quota_exceededIšnaudota DI funkcijų dienos riba. Bandykite kitą dieną (UTC).
502upstreamNė vienas grandinės modelis laiku neatsakė.
502empty_outputModeliai atsakė, bet rezultatas tuščias.
503disabledOperatorius laikinai išjungė paslaugą arba (/api/v1/aidetect) ji dar neįdiegta.

Klaidų formatas

Kiekviena klaida grąžinama kaip JSON su atitinkamu HTTP būsenos kodu ir ta pačia struktūra:

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

Pirmiausia patikrinkite ok, tada programiniam apdorojimui skaitykite error.code; error.message saugu rodyti naudotojams.

Rekomenduojama praktika

  • Tekstą siųskite dalimis (pavyzdžiui, po pastraipą), o ne vienu ilgu dokumentu; rezultatai grįžta greičiau ir juos lengviau peržiūrėti.
  • Į 429 reaguokite didėjančiomis pauzėmis, o ne tuojau pat kartodami.
  • Nesiųskite asmeninių ar konfidencialių duomenų, kurių nereikia, nes, nors jų nesaugome, duomenų kiekio mažinimo principas vis tiek galioja.
  • DI rezultatas gali būti klaidingas; pateikite jį kaip pasiūlymą peržiūrai, o ne kaip galutinę tiesą.

Dažniausiai užduodami klausimai

Ar galiu kviesti API iš savo programos ar domeno?

Kol kas ne. „Worker“ šiuo metu nesiunčia CORS antraščių ir aptarnauja tik adeptwrite.com puslapius. Išorinė prieiga su API raktais planuojama kartu su „Pro“ planu; kai ji atsiras, šią dokumentaciją atnaujinsime.

Ar į API siunčiamas tekstas saugomas?

Ne. Tekstas perduodamas modeliui atsakymui sukurti ir tada atmetamas. Žurnaluose yra tik metaduomenys (būsenos kodas, užduotis, trukmė). Visą informaciją rasite privatumo politikoje.

Kodėl rezultatas yra paprastas tekstas, o ne struktūruotas JSON?

Kiekviena užduotis sukuria vieną paruoštą naudoti tekstą be įžangos ir Markdown tvoros, kad jį būtų galima rodyti tiesiai redaktoriuje. Papildoma struktūra (pavyzdžiui, pakeitimų sąrašas) planuojama vėlesnei versijai nekeičiant v1.

Kiek kainuoja API?

Iš adeptwrite.com jis nemokamas, ribojamas iki 30 DI užklausų per minutę vienam IP adresui. Išorinės prieigos kainos bus paskelbtos kartu su „Pro“ planu; iki tol nieko neimama.

Kuris modelis atsako į mano užklausą?

Tai priklauso nuo kalbos: anglų ir indoneziečių kalbos eina į SEA-LION, kitos kalbos į Qwen3-30B. Jei tas modelis užimtas ar sugenda, atsako kitas atsarginės grandinės modelis, o atsakymo laukas model nurodo, kuris.