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
Field
Type
Required
Notes
task
string
✓
Oppgavenavn. Se oppgavelisten nedenfor.
text
string
✓
Inndatatekst, 1–6 000 tegn.
lang
string
✓
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».
mode
string
—
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.
options
object
—
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
Field
Type
Required
Notes
text
string
✓
Minst 30 ord, høyst 6 000 tegn.
lang
string
✓
En språkkode fra nettstedet eller auto.
options
object
—
web: true spør også nettsøketjenesten når driften har satt opp en. webSearched i svaret sier om den faktisk svarte.
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.
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).
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
Status
Kode
Når det skjer
400
invalid_request
Ugyldig JSON, et obligatorisk felt mangler, eller ukjent task eller lang.
413
too_long
text er lengre enn 6 000 tegn.
403
forbidden
Forespørselen kom ikke fra en side på adeptwrite.com.
429
rate_limited
Grensen per IP-adresse eller den globale grensen per minutt er overskredet. Vent så mange sekunder som står i Retry-After.
429
quota_exceeded
Dagstaket for KI-funksjoner er brukt opp. Prøv igjen neste dag (UTC).
502
upstream
Ingen av modellene i kjeden svarte i tide.
502
empty_output
Modellene svarte, men med et tomt resultat.
503
disabled
Tjenesten 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.