API-dokumentasjon

Omformulering, grammatikkontroll, sammendrag, oversettelse og plagiatkontroll på 56 språk. Enkelt REST-API, levert fra Cloudflares kantnett.

Same-origin
API-et betjener foreløpig bare forespørsler fra adeptwrite.com selv (ingen CORS-hoder). Ekstern tilgang med API-nøkler er planlagt sammen med Pro-abonnementet. Dokumentasjonen er publisert tidlig, slik at kontrakten er åpen og du kan forberede deg.
Kort fortalt

AdeptWrite API v1 har tre aktive endepunkter. POST /api/v1/run tar JSON med task, mode, lang og text (opptil 6 000 tegn) og returnerer ren tekst fra en Cloudflare Workers AI-modell som er valgt for språket. POST /api/v1/plagiarism sammenligner en tekst med åpne kilder og lister hver kilde som er søkt i. GET /api/v1/health viser tjenestestatus. Tekst lagres og logges aldri, og KI-forespørsler er begrenset til 30 per minutt per IP-adresse.

Grunnleggende

  • Base-URL: https://adeptwrite.com/api/v1
  • Format: forespørsler og svar er JSON (Content-Type: application/json, UTF-8).
  • Autentisering: ingen foreløpig. Forespørslene må komme fra sider på adeptwrite.com (same-origin). API-nøkler kommer med Pro.
  • Personvern: feltet text lagres og logges aldri. Svarene har Cache-Control: no-store.
  • Versjonering: stien /v1/ endres ikke på en måte som bryter eksisterende kall. Brytende endringer får /v2/.
  • Norsk tekst: bruk "lang": "no" for resultater på norsk bokmål.

POST/api/v1/run

Kjører én KI-oppgave på en tekst og returnerer resultatet som ren tekst (uten innledning og uten Markdown-gjerder).

Forespørsel

FieldTypeRequiredNotes
taskstring✓Oppgavenavn. Se oppgavelisten nedenfor.
textstring✓Inndatatekst, 1–6 000 tegn.
langstring✓Språket i resultatet: en av de 56 språkkodene på nettstedet (en, id, no, ja, pt-pt, zh-hant …; BCP 47-koder som pt-BR mappes) eller auto for «samme språk som inndataene».
modestring—En modus som finnes for verktøyet, for eksempel Formal, Akademik, Ringkas eller Poin-poin (modusnavnene er de indonesiske etikettene i registeret). Ignoreres for oppgaver uten moduser.
optionsobject—Oppgavespesifikke valg: from og to for translate (alle støttede språk til alle andre; from kan være auto; sr-Cyrl ber om serbisk med kyrilliske bokstaver), platform (instagram, tiktok eller linkedin) for caption, og valgfrie merkede fields for bio, coverletter og meta. Andre nøkler ignoreres.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "no",
  "text": "God skriving er viktig for studenter.",
  "options": {}
}

Svar

Status 200 med ok: true, resultatet i output, modellen som faktisk svarte i model (den er en annen når en reservemodell har tatt over) og behandlingstiden i millisekunder. truncated: true legges til når svaret nådde lengdegrensen eller tidsgrensen og ble kuttet.

{
  "ok": true,
  "output": "God skriveevne er avgjørende for studenter.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Eksempel: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"no","text":"Jeg liker og lese bøker i dag."}'

Eksempel: 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: 'no', 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

Velger 4–8 særegne fraser fra teksten, søker i åpne kilder på tekstens språk (Wikipedia, Wikisource, fulltekst hos Internet Archive, Europe PMC, DOAJ, arXiv; en nettsøketjeneste bare når den er satt opp og du ber om det) og regner ut overlappen. Bare de korte frasene forlater serveren.

Forespørsel

FieldTypeRequiredNotes
textstring✓Minst 30 ord, høyst 6 000 tegn.
langstring✓En språkkode fra nettstedet eller auto.
optionsobject—web: true spør også nettsøketjenesten når driften har satt opp en. webSearched i svaret sier om den faktisk svarte.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…minst 30 ord…", "lang": "no", "options": { "web": false } }

Svar

Status 200 med score (samsvarende ord ÷ ord, 0–1), matches per kilde med uthevede passages (tegnposisjoner i teksten din), sourcesSearched (nøyaktig de kildene hvis svar er med i resultatet), sourcesSkipped med en årsak, og webSearched.

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

Eksempel: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"no","text":"…minst 30 ord…"}'

GET/api/v1/health

Viser hvilke tjenester som er slått på. Tar ingen body og teller ikke mot kvoten.

Svar

Status 200. ai er false mens KI-nødbryteren er på. plagiarism lister kildene kontrollen kan spørre. aidetect beskriver den dype analysen på serversiden i KI-detektoren, som ikke er tatt i bruk ennå (POST /api/v1/aidetect svarer 503 disabled; detektoren på nettstedet kjører i nettleseren din).

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

Eksempel: curl

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

Task list

taskWhat it does
paraphraseOmformulering. Moduser: Standar, Formal, Santai, Akademik, Kreatif, Ringkas, Panjangkan.
grammarRetting av grammatikk og rettskriving (for norsk: Språkrådets rettskriving for bokmål).
toneEndre tone. Moduser: Formal, Kantor (kontor), Santai (uformell).
rewriteRydd opp i stive eller kronglete setninger. Moduser: Standar, Formal.
resizeForkort eller forleng setninger. Moduser: Ringkas, Panjangkan.
essayBygg avsnitt eller essay ut fra stikkord. Moduser: Akademik, Kreatif, Panjangkan.
summarizeSammendrag. Moduser: Poin-poin (punktliste), Paragraf (avsnitt), Satu kalimat (én setning).
translateOversettelse mellom to vilkårlige støttede språk. options.from (eller auto) og options.to. Moduser: Alami (naturlig, standard), Formal, Santai (uformell).
thesisForslag til oppgavetitler og kapittelstruktur.
abstractStrukturert abstract ut fra et sammendrag av forskningen.
captionBildetekster til sosiale medier. options.platform: instagram, tiktok, linkedin.
emailE-poster og brev. Moduser: Lamaran kerja (jobbsøknad), Surat resmi (formelt brev), Follow-up (oppfølging).
headlineArtikkeltitler og overskrifter. Moduser: Kreatif, Ringkas.
productProduktbeskrivelser. Moduser: Marketplace (markedsplass), Toko online (nettbutikk).
synonymListe med synonymer for ett ord eller uttrykk.
humanizeGjør stiv, generisk tekst mer naturlig. Moduser: Alami (naturlig), Pribadi (personlig), Profesional (profesjonell).
metaTre par med metatittel og metabeskrivelse. Moduser: Artikel (artikkel), Produk (produkt), Halaman (hvilken som helst nettside).
hashtagÉn linje med hashtags. Moduser: Instagram, TikTok, LinkedIn, X.
bioTre profilbiografier. Moduser: Instagram, LinkedIn, X, TikTok.
outlineNummerert disposisjon med underpunkter. Moduser: Artikel (artikkel), Esai (essay), Skripsi (oppgave), Presentasi (presentasjon).
sloganTi forslag til slagord. Moduser: Merek (merkevare), Kampanye (kampanje), Produk (produkt).
paragraphEtt avsnitt ut fra et emne. Moduser: Pembuka (innledning), Isi (hoveddel), Penutup (avslutning).
coverletterUtkast til søknadsbrev. Moduser: Fresh graduate (nyutdannet), Berpengalaman (erfaren), Magang (praksisplass).
poemKorte dikt. Moduser: Bebas (fritt vers), Berima (rim), Akrostik (akrostikon), Haiku.

Grenser

Tekstlengde
Høyst 6 000 tegn per forespørsel (413 too_long over det).
Per IP-adresse
30 forespørsler per minutt.
Globalt
100 forespørsler per minutt for hele tjenesten, pluss et dagstak for KI-funksjoner.
Plagiat
5 kontroller per minutt per IP-adresse og 60 per minutt for hele tjenesten. Minst 30 ord.
Utdata
Et lengdebudsjett per oppgave, aldri mer enn 2 048 tokens. Et avkuttet svar har truncated: true.
Modell
Velges per språk: engelsk og indonesisk kjører på @cf/aisingapore/gemma-sea-lion-v4-27b-it, alle andre språk, norsk bokmål blant dem, på @cf/qwen/qwen3-30b-a3b-fp8. Når en modell er opptatt, rate-begrenset, treg eller feiler, går forespørselen videre til neste modell i kjeden (Qwen3-30B, deretter @cf/google/gemma-4-26b-a4b-it, deretter @cf/meta/llama-3.3-70b-instruct-fp8-fast). Feltet model navngir alltid modellen som svarte.

Feilkoder

StatusKodeNår det skjer
400invalid_requestUgyldig JSON, et obligatorisk felt mangler, eller ukjent task eller lang.
413too_longtext er lengre enn 6 000 tegn.
403forbiddenForespørselen kom ikke fra en side på adeptwrite.com.
429rate_limitedGrensen per IP-adresse eller den globale grensen per minutt er overskredet. Vent så mange sekunder som står i Retry-After.
429quota_exceededDagstaket for KI-funksjoner er brukt opp. Prøv igjen neste dag (UTC).
502upstreamIngen av modellene i kjeden svarte i tide.
502empty_outputModellene svarte, men med et tomt resultat.
503disabledTjenesten er midlertidig slått av av driften, eller (for /api/v1/aidetect) ikke tatt i bruk ennå.

Feilformat

Hver feil returneres som JSON med tilhørende HTTP-statuskode og samme form:

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

Sjekk ok først, og les deretter error.code når koden skal håndtere feilen. error.message er trygg å vise til brukere.

Anbefalt praksis

  • Send teksten i deler (for eksempel ett avsnitt om gangen) i stedet for ett langt dokument. Resultatene kommer raskere og er lettere å gjennomgå.
  • Håndter 429 med eksponentiell backoff, ikke med umiddelbare nye forsøk.
  • Ikke send personopplysninger eller fortrolige data du ikke trenger å sende. Vi lagrer dem ikke, men prinsippet om dataminimering gjelder likevel.
  • KI-resultater kan være feil. Vis dem som forslag som må gjennomgås, ikke som endelig fasit.

Vanlige spørsmål

Kan jeg kalle API-et fra min egen app eller mitt eget domene?

Ikke ennå. Workeren sender foreløpig ingen CORS-hoder og betjener bare sider på adeptwrite.com. Ekstern tilgang med API-nøkler er planlagt sammen med Pro-abonnementet, og denne dokumentasjonen oppdateres når den er tilgjengelig.

Lagres teksten jeg sender til API-et?

Nei. Teksten sendes videre til modellen for å lage svaret og forkastes deretter. Loggene inneholder bare metadata (statuskode, oppgave, varighet). Alle detaljene står i personvernerklæringen.

Hvorfor er resultatet ren tekst og ikke strukturert JSON?

Hver oppgave gir én ferdig tekst uten innledning og uten Markdown-gjerder, slik at den kan vises direkte i editoren. Ekstra struktur, for eksempel en liste over endringer, er planlagt i en senere versjon uten at v1 endres.

Hva koster API-et?

Fra adeptwrite.com er det gratis, begrenset til 30 KI-forespørsler per minutt per IP-adresse. Prisene for ekstern tilgang kunngjøres sammen med Pro-abonnementet, og ingenting belastes før da.

Hvilken modell svarer på forespørselen min?

Det avhenger av språket: engelsk og indonesisk går til SEA-LION, de andre språkene, norsk bokmål blant dem, til Qwen3-30B. Hvis modellen er opptatt eller feiler, svarer neste modell i reservekjeden i stedet, og feltet model i svaret navngir den som svarte.