API-dokumentaatio

Tekstin uudelleenmuotoilu, kieliopin tarkistus, tiivistys, kääntäminen ja plagioinnin tarkistus 56 kielellä omaan sovellukseesi. Yksinkertainen REST-rajapinta Cloudflaren reunaverkosta.

Same-origin
Tällä hetkellä API palvelee vain sivuston adeptwrite.com omia pyyntöjä (ei CORS-otsakkeita). Ulkoinen käyttö API-avaimella on suunniteltu Pro-paketin yhteyteen. Dokumentaatio julkaistaan etukäteen, jotta sopimus on avoin ja ehdit valmistautua.
Yhteenveto

AdeptWriten API v1:ssä on kolme käytössä olevaa päätepistettä. POST /api/v1/run ottaa vastaan JSON-viestin, jossa on task, mode, lang ja text (enintään 6 000 merkkiä), ja palauttaa pelkkää tekstiä Cloudflare Workers AI -mallilta, joka valitaan kielen mukaan. POST /api/v1/plagiarism vertaa tekstiä avoimiin lähteisiin ja listaa jokaisen tarkistetun lähteen. GET /api/v1/health palauttaa palvelun tilan. Tekstiä ei koskaan tallenneta eikä kirjata lokiin, ja tekoälypyynnöt on rajattu 30:een minuutissa IP-osoitetta kohden.

Perusteet

  • Perusosoite: https://adeptwrite.com/api/v1
  • Muoto: pyynnöt ja vastaukset ovat JSON-muotoisia (Content-Type: application/json, UTF-8).
  • Tunnistautuminen: ei vielä; pyynnön on tultava sivulta adeptwrite.com (same-origin). API-avaimet tulevat Pro-paketin mukana.
  • Tietosuoja: text-kentän sisältöä ei tallenneta eikä kirjata lokiin; vastauksissa on Cache-Control: no-store.
  • Versiointi: polku /v1/ ei muutu yhteensopimattomasti; suuret muutokset tulevat polkuun /v2/.

POST/api/v1/run

Suorittaa yhden tekoälytehtävän tekstille ja palauttaa tuloksen pelkkänä tekstinä (ei johdantoa, ei Markdown-lohkoja).

Pyyntö

FieldTypeRequiredNotes
taskstring✓Tehtävän nimi; katso tehtävälista alla.
textstring✓Syöteteksti, 1–6 000 merkkiä.
langstring✓Tuloksen kieli: jokin sivuston 56 kielikoodista (fi, en, sv, pt-pt, zh-hant ja niin edelleen; BCP 47 -tunnisteet kuten pt-BR yhdistetään vastaaviin) tai auto, joka tarkoittaa "sama kieli kuin syötteessä".
modestring—Työkalun käytettävissä oleva tila, esimerkiksi Formal, Akademik, Ringkas tai Poin-poin. Tilojen tunnisteet ovat rajapinnan sisäisiä arvoja, eivätkä ne muutu kielen mukaan. Ohitetaan, jos tehtävällä ei ole tiloja.
optionsobject—Tehtäväkohtaiset lisäasetukset: from ja to tehtävälle translate (mistä tahansa tuetusta kielestä toiseen; from voi olla auto; sr-Cyrl pyytää serbiaa kyrillisin kirjaimin), platform (instagram / tiktok / linkedin) tehtävälle caption sekä valinnaiset nimetyt fields tehtäville bio, coverletter ja meta. Muut avaimet ohitetaan.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "fi",
  "text": "Kirjoitustaito on opiskelijalle tosi tärkeä.",
  "options": {}
}

Vastaus

Tila 200 ja ok: true, tulos kentässä output, vastauksen todella antanut malli kentässä model (eri malli, jos varamalli otti vastuun) sekä käsittelyaika millisekunteina. truncated: true lisätään, jos vastaus katkesi pituus- tai aikarajaan.

{
  "ok": true,
  "output": "Kirjoitustaito on opiskelijalle erittäin tärkeä.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Esimerkki: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"fi","text":"Menin eilen kauppaan ja ostin maito."}'

Esimerkki: 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: 'fi', 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

Valitsee tekstistä 4–8 tunnusomaista fraasia, hakee niitä tekstin kielelle sopivista avoimista lähteistä (Wikipedia, Wikisource, Internet Archiven kokoteksti, Europe PMC, DOAJ, arXiv; verkkohakupalvelu vain, jos se on määritetty ja sitä pyydetään) ja laskee päällekkäisyyden. Palvelimelta poistuvat vain nämä lyhyet fraasit.

Pyyntö

FieldTypeRequiredNotes
textstring✓Vähintään 30 sanaa, enintään 6 000 merkkiä.
langstring✓Sivuston kielikoodi tai auto.
optionsobject—web: true käyttää myös verkkohakupalvelua, jos ylläpitäjä on määrittänyt sen; vastauksen webSearched kertoo, vastasiko palvelu todella.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…vähintään 30 sanaa…", "lang": "fi", "options": { "web": false } }

Vastaus

Tila 200 ja score (vastaavat sanat ÷ sanojen määrä, 0–1), matches lähteittäin korostettuine passages-kohtineen (merkkipaikat tekstissäsi), sourcesSearched (täsmälleen ne lähteet, joiden vastaus on tuloksessa), sourcesSkipped syineen sekä webSearched.

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

Esimerkki: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"fi","text":"…vähintään 30 sanaa…"}'

GET/api/v1/health

Kertoo, mitkä palvelut ovat käytössä. Ei tarvitse pyynnön sisältöä, eikä sitä lasketa kiintiöön.

Vastaus

Tila 200. ai on false, kun tekoälyn hätäkatkaisin on päällä; plagiarism luettelee lähteet, joita tarkistin voi hakea; aidetect kuvaa tekoälytunnistimen palvelinpuolen syväanalyysin, jota ei ole vielä otettu käyttöön (POST /api/v1/aidetect vastaa 503 disabled; sivuston tunnistin toimii selaimessasi).

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

Esimerkki: curl

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

Task list

taskWhat it does
paraphraseTekstin uudelleenmuotoilu; tilat: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammarKieliopin ja oikeinkirjoituksen korjaus (suomelle Kotuksen ja Kielitoimiston normien mukaan).
toneSävyn muutos; tilat: Formal, Kantor, Santai.
rewriteKankeiden tai sekavien lauseiden selkeyttäminen; tilat: Standar, Formal.
resizeLauseiden lyhentäminen ja pidentäminen; tilat: Ringkas, Panjangkan.
essayKappaleen tai esseen laatiminen ranskalaisista viivoista; tilat: Akademik, Kreatif, Panjangkan.
summarizeTiivistelmä; tilat: Poin-poin, Paragraf, Satu kalimat.
translateKäännös kahden tuetun kielen välillä; options.from (tai auto) ja options.to; tilat: Alami (oletus), Formal, Santai.
thesisOpinnäytetyön otsikkoideat ja lukurunko.
abstractJäsennelty abstrakti tutkimuksen yhteenvedosta.
captionSomekuvateksti; options.platform: instagram, tiktok, linkedin.
emailSähköpostit ja kirjeet; tilat: Lamaran kerja, Surat resmi, Follow-up.
headlineArtikkelien otsikot; tilat: Kreatif, Ringkas.
productTuotekuvaus; tilat: Marketplace, Toko online.
synonymSynonyymilista yhdelle sanalle tai ilmaukselle.
humanizeJäykän ja geneerisen tekstin muokkaus luontevammaksi; tilat: Alami, Pribadi, Profesional.
metaKolme meta-otsikon ja kuvauksen paria; tilat: Artikel, Produk, Halaman.
hashtagYksi rivi hashtageja; tilat: Instagram, TikTok, LinkedIn, X.
bioKolme profiilitekstiä; tilat: Instagram, LinkedIn, X, TikTok.
outlineNumeroitu jäsennys alakohtineen; tilat: Artikel, Esai, Skripsi, Presentasi.
sloganKymmenen sloganiehdotusta; tilat: Merek, Kampanye, Produk.
paragraphYksi kappale aiheesta; tilat: Pembuka, Isi, Penutup.
coverletterTyöhakemusluonnos; tilat: Fresh graduate, Berpengalaman, Magang.
poemLyhyt runo; tilat: Bebas, Berima, Akrostik, Haiku.

Rajat

Tekstin pituus
Enintään 6 000 merkkiä pyyntöä kohden (413 too_long, jos enemmän).
IP-osoitetta kohden
30 pyyntöä minuutissa.
Yleinen raja
100 pyyntöä minuutissa koko palvelulle sekä päiväkohtainen raja tekoälyominaisuuksille.
Plagioinnin tarkistus
5 tarkistusta minuutissa IP-osoitetta kohden ja 60 minuutissa koko palvelulle; vähintään 30 sanaa.
Tuloste
Tehtäväkohtainen pituusbudjetti, aina enintään 2 048 tokenia; katkennut vastaus sisältää truncated: true.
Malli
Valitaan kielen mukaan: indonesia ja englanti käyttävät mallia @cf/aisingapore/gemma-sea-lion-v4-27b-it, muut kielet, suomi mukaan lukien, mallia @cf/qwen/qwen3-30b-a3b-fp8. Jos malli on kuormitettu, rajoitettu, hidas tai epäonnistuu, pyyntö siirtyy varaketjun seuraavalle mallille (Qwen3-30B, sitten @cf/google/gemma-4-26b-a4b-it, sitten @cf/meta/llama-3.3-70b-instruct-fp8-fast). Kenttä model kertoo aina vastanneen mallin.

Virhekoodit

TilaKoodiMilloin tapahtuu
400invalid_requestJSON ei kelpaa, pakollinen kenttä puuttuu tai task tai lang on tuntematon.
413too_longtext on yli 6 000 merkkiä.
403forbiddenPyyntö ei tule sivulta adeptwrite.com.
429rate_limitedIP-kohtainen tai yleinen minuuttiraja ylittyi. Odota Retry-After-otsakkeen ilmoittama sekuntimäärä.
429quota_exceededTekoälyominaisuuksien päiväraja on käytetty. Yritä uudelleen seuraavana päivänä (UTC).
502upstreamMikään ketjun malli ei vastannut ajoissa.
502empty_outputMalli vastasi, mutta tulos on tyhjä.
503disabledYlläpitäjä on tilapäisesti sulkenut palvelun tai (kohteelle /api/v1/aidetect) sitä ei ole vielä otettu käyttöön.

Virheiden muoto

Kaikki virheet palautetaan JSON-muodossa sopivalla HTTP-tilakoodilla ja samalla rakenteella:

{ "ok": false, "error": { "code": "rate_limited", "message": "Liian monta pyyntöä. Yritä hetken kuluttua uudelleen." } }

Tarkista ensin ok ja lue sitten error.code ohjelmallista käsittelyä varten; error.message on turvallista näyttää käyttäjälle.

Suositeltavat käytännöt

  • Lähetä teksti osissa (esimerkiksi kappale kerrallaan) yhden pitkän asiakirjan sijaan; tulos tulee nopeammin ja on helpompi tarkistaa.
  • Käsittele 429 eksponentiaalisella viiveellä, älä yritä heti uudelleen.
  • Älä lähetä tarpeettomia henkilö- tai luottamuksellisia tietoja: vaikka emme tallenna niitä, tietojen minimoinnin periaate pätee silti.
  • Tekoälyn tulos voi olla virheellinen; näytä se tarkistettavana ehdotuksena, älä lopullisena totuutena.

Usein kysytyt kysymykset

Voinko käyttää APIa omasta sovelluksestani tai verkkotunnuksestani?

Et vielä. Tällä hetkellä Worker ei lähetä CORS-otsakkeita ja palvelee vain sivua adeptwrite.com. Ulkoinen käyttö API-avaimella on suunniteltu Pro-paketin yhteyteen; tämä dokumentaatio päivitetään heti, kun käyttö on todella mahdollista.

Tallennetaanko APIin lähetetty teksti?

Ei. Teksti välitetään mallille vastauksen tuottamista varten ja hylätään sen jälkeen. Lokeissa on vain metatietoja, kuten tilakoodi, tehtävän nimi ja kesto, ei lainkaan tekstin sisältöä. Katso tarkemmin tietosuojaseloste.

Miksi tulos on pelkkää tekstiä eikä jäsenneltyä JSONia?

Jokainen tehtävä tuottaa yhden käyttövalmiin tekstin ilman johdantoa tai Markdown-lohkoja, jotta sen voi näyttää suoraan editorissa. Lisärakenteita (esimerkiksi muutoslista) on suunniteltu seuraaviin versioihin v1:tä muuttamatta.

Paljonko APIn käyttö maksaa?

Sivustolta adeptwrite.com käyttö on ilmaista rajalla 30 tekoälypyyntöä minuutissa IP-osoitetta kohden. Ulkoisen käytön hinnoittelu ilmoitetaan Pro-paketin yhteydessä; ennen sitä mitään ei laskuteta.

Mikä malli vastaa pyyntööni?

Se riippuu kielestä: indonesian ja englannin käsittelee SEA-LION, muut kielet, suomi mukaan lukien, Qwen3-30B. Jos malli on kuormitettu tai epäonnistuu, varaketjun seuraava malli vastaa, ja vastauksen model-kenttä kertoo mallin, joka todella vastasi.