API-dokumentasie

Parafrasering, grammatikatoetsing, opsommings, vertaling en plagiaattoetse in 56 tale. Eenvoudige REST, bedien vanaf Cloudflare se randnetwerk.

Dieselfde oorsprong
Die API bedien tans net versoeke vanaf adeptwrite.com self (geen CORS-opskrifte nie). Eksterne toegang met API-sleutels word saam met die Pro-plan beplan. Hierdie dokumentasie is vroeg gepubliseer sodat die kontrak oop is en jy kan voorberei.
Opsomming

Die AdeptWrite v1-API het drie aktiewe eindpunte. POST /api/v1/run neem JSON met task, mode, lang en text (tot 6 000 karakters) en gee gewone teks terug van ’n Cloudflare Workers AI-model wat vir die taal gekies is; POST /api/v1/plagiarism vergelyk ’n teks met oop bronne en lys elke bron wat deursoek is; GET /api/v1/health gee die diensstatus. Teks word nooit gestoor of in logboeke aangeteken nie, en KI-versoeke is beperk tot 30 per minuut per IP.

Basiese inligting

  • Basis-URL: https://adeptwrite.com/api/v1
  • Formaat: versoeke en antwoorde is JSON (Content-Type: application/json, UTF-8).
  • Verifikasie: nog geen; versoeke moet van adeptwrite.com-bladsye af kom (dieselfde oorsprong). API-sleutels kom met Pro.
  • Privaatheid: die text-veld word nooit gestoor of in logboeke aangeteken nie; antwoorde dra Cache-Control: no-store.
  • Weergawebeheer: die /v1/-pad sal nie onversoenbaar verander nie; breekwysigings sal /v2/ gebruik.

POST/api/v1/run

Voer een KI-taak op ’n teks uit en gee die resultaat as gewone teks terug (geen voorwoord, geen Markdown-omheining nie).

Versoek

FieldTypeRequiredNotes
taskstring✓Taaknaam; sien die taaklys hieronder.
textstring✓Invoerteks, 1–6 000 karakters.
langstring✓Taal van die resultaat: een van die 56 werfstaalkodes (af, en, id, ja, pt-pt, zh-hant…; BCP 47-etikette soos pt-BR word gekarteer) of auto vir “dieselfde taal as die invoer”.
modestring—ʼn Modus wat vir daardie hulpmiddel beskikbaar is, bv. Formal, Akademik, Ringkas, Poin-poin (die modusname is die Indonesiese registeretikette). Word geïgnoreer vir take sonder modusse.
optionsobject—Taakspesifieke opsies: from / to vir translate (enige ondersteunde taal na enige ander; from mag auto wees; sr-Cyrl vra Serwies in Sirillies), platform (instagram / tiktok / linkedin) vir caption, en opsionele benoemde fields vir bio, coverletter en meta. Ander sleutels word geïgnoreer.
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "af",
  "text": "Goeie skryfwerk is baie belangrik vir studente.",
  "options": {}
}

Antwoord

Status 200 met ok: true, die resultaat in output, die model wat werklik geantwoord het in model (dit verskil wanneer ’n terugvalmodel ingespring het) en die verwerkingstyd in millisekondes. truncated: true word bygevoeg wanneer die antwoord sy lengtebegroting of tydsgrens bereik het en afgesny is.

{
  "ok": true,
  "output": "Goeie skryfwerk is vir studente van groot belang.",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

Voorbeeld: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"af","text":"Hulle gaan more na die biblioteek toe."}'

Voorbeeld: 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: 'af', 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

Kies 4–8 kenmerkende frases uit die teks, deursoek oop bronne in die tekstaal (Wikipedia, Wikisource, Internet Archive-volteks, Europe PMC, DOAJ, arXiv; ’n websoekverskaffer net wanneer dit opgestel en gevra is) en bereken die oorvleueling. Slegs daardie kort frases verlaat die bediener.

Versoek

FieldTypeRequiredNotes
textstring✓Minstens 30 woorde, hoogstens 6 000 karakters.
langstring✓’n Werfstaalkode of auto.
optionsobject—web: true deursoek ook die websoekverskaffer wanneer die operateur een opgestel het; webSearched in die antwoord sê of dit werklik geantwoord het.
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…minstens 30 woorde…", "lang": "af", "options": { "web": false } }

Antwoord

Status 200 met score (ooreenstemmende woorde ÷ woorde, 0–1), matches per bron met uitgeligte passages (karakterposisies in jou teks), sourcesSearched (presies die bronne wie se antwoorde in die resultaat is), sourcesSkipped met ’n rede, en webSearched.

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

Voorbeeld: curl

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

GET/api/v1/health

Meld watter dienste aangeskakel is. Neem geen liggaam nie en tel nie teen die kwota nie.

Antwoord

Status 200. ai is false terwyl die KI-afskakelaar aan is; plagiarism lys die bronne wat die toetser kan navraag doen; aidetect beskryf die bedienerkantse diepontleding van die KI-verklikker, wat nog nie ontplooi is nie (POST /api/v1/aidetect antwoord 503 disabled; die verklikker op die werf loop in jou blaaier).

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

Voorbeeld: curl

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

Task list

taskWhat it does
paraphraseParafrasering; modusse: Standar (standaard), Formal (formeel), Santai (informeel), Akademik (akademies), Kreatif (kreatief), Ringkas (verkort), Panjangkan (brei uit).
grammarGrammatika- en spelregstelling (vir Afrikaans met die AWS as riglyn).
toneVerander toon; modusse: Formal (formeel), Kantor (kantoor), Santai (informeel).
rewriteMaak stywe of lompe sinne reg; modusse: Standar, Formal.
resizeVerkort of brei sinne uit; modusse: Ringkas (verkort), Panjangkan (brei uit).
essayBou paragrawe of ’n opstel uit kolpunte; modusse: Akademik, Kreatif, Panjangkan.
summarizeOpsomming; modusse: Poin-poin (kolpunte), Paragraf (paragraaf), Satu kalimat (een sin).
translateVertaling tussen enige twee ondersteunde tale; options.from (of auto) en options.to; modusse: Alami (natuurlik, verstek), Formal (formeel), Santai (informeel).
thesisTitelidees vir ’n skripsie of verhandeling en ’n hoofstukraamwerk.
abstractGestruktureerde abstrak uit ’n navorsingsopsomming.
captionSosialemedia-onderskrifte; options.platform: instagram, tiktok, linkedin.
emailE-posse en briewe; modusse: Lamaran kerja (werksaansoek), Surat resmi (formele brief), Follow-up (opvolg).
headlineArtikeltitels en opskrifte; modusse: Kreatif, Ringkas.
productProdukbeskrywings; modusse: Marketplace (markplek), Toko online (aanlynwinkel).
synonymSinoniemlys vir een woord of frase.
humanizeLaat stywe, generiese teks natuurliker lees; modusse: Alami (natuurlik), Pribadi (persoonlik), Profesional (professioneel).
metaDrie metatitel- en beskrywingpare; modusse: Artikel, Produk, Halaman (enige webblad).
hashtagEen reël hashtags; modusse: Instagram, TikTok, LinkedIn, X.
bioDrie profielbio’s; modusse: Instagram, LinkedIn, X, TikTok.
outlineGenommerde raamwerk met subpunte; modusse: Artikel, Esai (opstel), Skripsi (skripsie), Presentasi (aanbieding).
sloganTien slagspreukidees; modusse: Merek (handelsmerk), Kampanye (veldtog), Produk.
paragraphEen paragraaf uit ’n onderwerp; modusse: Pembuka (inleiding), Isi (middelparagraaf), Penutup (slot).
coverletterKonsep van ’n aansoekbrief; modusse: Fresh graduate (pas gegradueer), Berpengalaman (ervare), Magang (internskap).
poemKort gedigte; modusse: Bebas (vrye vers), Berima (rymend), Akrostik (akrostigon), Haiku (haikoe).

Limiete

Tekslengte
Hoogstens 6 000 karakters per versoek (413 too_long daarbo).
Per IP-adres
30 versoeke per minuut.
Globaal
100 versoeke per minuut oor die hele diens, plus ’n daaglikse limiet vir KI-funksies.
Plagiaat
5 toetse per minuut per IP en 60 per minuut oor die diens; minstens 30 woorde.
Uitset
’n Lengtebegroting per taak, nooit meer as 2 048 tokens nie; ’n afgesnyde antwoord dra truncated: true.
Model
Per taal gekies: Engels en Indonesies loop op @cf/aisingapore/gemma-sea-lion-v4-27b-it, elke ander taal, ook Afrikaans, op @cf/qwen/qwen3-30b-a3b-fp8. Wanneer ’n model besig, tempobeperk, stadig is of misluk, val die versoek terug op die volgende model in die ketting (Qwen3-30B, dan @cf/google/gemma-4-26b-a4b-it, dan @cf/meta/llama-3.3-70b-instruct-fp8-fast). Die model-veld noem altyd die model wat geantwoord het.

Foutkodes

StatusKodeWanneer dit gebeur
400invalid_requestOngeldige JSON, ’n vereiste veld ontbreek, of ’n onbekende task of lang.
413too_longtext oorskry 6 000 karakters.
403forbiddenDie versoek het nie van ’n adeptwrite.com-bladsy af gekom nie.
429rate_limitedDie limiet per minuut per IP of globaal is oorskry. Wag die aantal sekondes in Retry-After.
429quota_exceededDie daaglikse limiet vir KI-funksies is opgebruik. Probeer die volgende dag weer (UTC).
502upstreamElke model in die ketting het nie betyds geantwoord nie.
502empty_outputDie modelle het geantwoord, maar met ’n leë resultaat.
503disabledDie diens is tydelik deur die operateur afgeskakel, of (vir /api/v1/aidetect) is nog nie ontplooi nie.

Foutformaat

Elke fout word as JSON teruggestuur met die ooreenstemmende HTTP-statuskode en dieselfde vorm:

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

Kyk eers na ok, lees dan error.code vir programmatiese hantering; error.message is veilig om aan gebruikers te wys.

Aanbevole praktyk

  • Stuur teks in dele (byvoorbeeld per paragraaf) eerder as een lang dokument; resultate kom vinniger terug en is makliker om na te gaan.
  • Hanteer 429 met eksponensiële terugstel, nie onmiddellike herpogings nie.
  • Moenie persoonlike of vertroulike data stuur wat jy nie nodig het nie. Al stoor ons dit nie, geld dataminimalisering steeds.
  • KI-uitset kan verkeerd wees; wys dit as ’n voorstel om na te gaan, nie as die finale waarheid nie.

Algemene vrae

Kan ek die API vanuit my eie toepassing of domein aanroep?

Nog nie. Die Worker stuur tans geen CORS-opskrifte nie en bedien net adeptwrite.com-bladsye. Eksterne toegang met API-sleutels word saam met die Pro-plan beplan; hierdie dokumentasie word bygewerk wanneer dit beskikbaar is.

Word teks wat na die API gestuur word, gestoor?

Nee. Die teks word aan die model gestuur om die antwoord te lewer en dan weggegooi. Logboeke bevat net metadata (statuskode, taak, duur). Sien die privaatheidsbeleid vir al die besonderhede.

Hoekom is die uitset gewone teks eerder as gestruktureerde JSON?

Elke taak lewer een gebruiksgereed teks sonder voorwoord of Markdown-omheining, sodat dit direk in die redigeerder gewys kan word. Ekstra struktuur (byvoorbeeld ’n wysigingslys) word vir ’n latere weergawe beplan sonder om v1 te verander.

Hoeveel kos die API?

Vanaf adeptwrite.com is dit gratis, beperk tot 30 KI-versoeke per minuut per IP. Pryse vir eksterne toegang sal saam met die Pro-plan aangekondig word; niks word voor dit gehef nie.

Watter model beantwoord my versoek?

Dit hang van die taal af: Engels en Indonesies gaan na SEA-LION, die ander tale, ook Afrikaans, na Qwen3-30B. As daardie model besig is of misluk, antwoord die volgende model in die terugvalketting in sy plek, en die model-veld van die antwoord noem die een wat geantwoord het.