API दस्तावेज

५६ भाषामा पुनर्लेखन, व्याकरण जाँच, सारांश, अनुवाद र साहित्यिक चोरी जाँच। सरल REST, Cloudflare को एज (edge) बाट सेवा।

Same-origin
हाल API ले adeptwrite.com बाटै आएका अनुरोधलाई मात्र सेवा दिन्छ (CORS हेडर छैन)। API कुञ्जीसहितको बाह्य पहुँच Pro योजनासँगै ल्याउने योजना छ। सम्झौता खुला होस् र तपाईं तयारी गर्न सक्नुहोस् भनेर यो दस्तावेज चाँडै प्रकाशित गरिएको हो।
सारांश

AdeptWrite v1 API का तीन सक्रिय इन्डपोइन्ट छन्। POST /api/v1/run ले task, mode, lang र text (बढीमा ६,००० क्यारेक्टर) लिन्छ र सादा पाठ नतिजा फर्काउँछ; POST /api/v1/plagiarism ले पाठलाई खुला स्रोतसँग तुलना गर्छ; GET /api/v1/health ले अवस्था देखाउँछ। पाठ कहिल्यै भण्डारण वा लग गरिँदैन।

आधारभूत कुरा

  • आधार URL: https://adeptwrite.com/api/v1
  • ढाँचा: अनुरोध र प्रतिक्रिया JSON हुन् (Content-Type: application/json, UTF-8)।
  • प्रमाणीकरण: अहिले छैन; अनुरोध adeptwrite.com का पृष्ठबाट (same-origin) आउनुपर्छ। API कुञ्जी Pro सँगै आउनेछन्।
  • गोपनीयता: text फिल्ड कहिल्यै भण्डारण वा लग गरिँदैन; प्रतिक्रियामा Cache-Control: no-store हुन्छ।
  • संस्करण: /v1/ मार्ग असंगत ढङ्गले बदलिने छैन; भाँचिने परिवर्तनले /v2/ प्रयोग गर्नेछन्।

POST/api/v1/run

पाठमा एउटा एआई काम चलाउँछ र नतिजा सादा पाठका रूपमा फर्काउँछ (भूमिका वाक्य र Markdown बाड बिना)।

अनुरोध

FieldTypeRequiredNotes
taskstring✓कामको नाम; तलको कामको सूची हेर्नुहोस्।
textstring✓इनपुट पाठ, १–६,००० क्यारेक्टर।
langstring✓नतिजाको भाषा: साइटका ५६ लोकेल कोडमध्ये एक (en, id, ne, ja, pt-pt, zh-hant…; pt-BR जस्ता BCP 47 ट्याग रूपान्तरण गरिन्छन्) वा "इनपुटकै भाषा" का लागि auto।
modestring—त्यस टुलमा उपलब्ध मोड, जस्तै Formal, Akademik, Ringkas, Poin-poin (मोडका नाम इन्डोनेसियाली रजिस्ट्री लेबल हुन्)। मोड नभएका कामले यसलाई बेवास्ता गर्छन्।
optionsobject—कामअनुसारका विकल्प: translate का लागि from / to (कुनै पनि समर्थित भाषाबाट अर्कोमा; from auto हुन सक्छ; sr-Cyrl ले सर्बियन सिरिलिकमा माग्छ), caption का लागि platform (instagram / tiktok / linkedin), र bio, coverletter र meta का लागि ऐच्छिक लेबलसहितका fields। अन्य कुञ्जी बेवास्ता गरिन्छन्।
POST /api/v1/run HTTP/1.1
Content-Type: application/json

{
  "task": "paraphrase",
  "mode": "Formal",
  "lang": "ne",
  "text": "विद्यार्थीका लागि राम्रो लेखाइ साह्रै महत्त्वपूर्ण हुन्छ।",
  "options": {}
}

प्रतिक्रिया

स्थिति 200, ok: true, नतिजा output मा, वास्तवमा जवाफ दिएको मोडेल model मा (वैकल्पिक मोडेलले काम गरेको खण्डमा फरक हुन्छ) र प्रशोधन समय मिलिसेकेन्डमा। जवाफ लम्बाइको सीमा वा समयसीमामा पुगेर काटिएको भए truncated: true थपिन्छ।

{
  "ok": true,
  "output": "विद्यार्थीका निम्ति राम्रो लेखन अत्यन्त आवश्यक हुन्छ।",
  "model": "@cf/qwen/qwen3-30b-a3b-fp8",
  "ms": 812
}

उदाहरण: curl

curl -X POST https://adeptwrite.com/api/v1/run \
  -H "Content-Type: application/json" \
  -d '{"task":"grammar","lang":"ne","text":"म भोलि बजार जान्छु र तरकारी किन्नेछु।"}'

उदाहरण: 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: 'ne', 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

पाठबाट ४–८ विशिष्ट वाक्यांश छान्छ, पाठकै भाषाका खुला स्रोत (Wikipedia, Internet Archive को पूर्ण पाठ, Europe PMC, DOAJ, arXiv; वेब खोज प्रदायक सेट गरिएको र माग गरिएको अवस्थामा मात्र) मा खोज्छ र मिलानको स्कोर निकाल्छ। ती छोटा वाक्यांश मात्र सर्भरबाट बाहिर जान्छन्।

अनुरोध

FieldTypeRequiredNotes
textstring✓कम्तीमा ३० शब्द, बढीमा ६,००० क्यारेक्टर।
langstring✓साइटको लोकेल कोड वा auto।
optionsobject—सञ्चालकले वेब खोज प्रदायक सेट गरेको छ भने web: true ले वेब खोज पनि गर्छ; वास्तवमा जवाफ आयो कि आएन भन्ने प्रतिक्रियाको webSearched ले बताउँछ।
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json

{ "text": "…कम्तीमा ३० शब्द…", "lang": "ne", "options": { "web": false } }

प्रतिक्रिया

स्थिति 200, score (मिलेका शब्द ÷ शब्द, ० देखि १), हरेक स्रोतको matches र हाइलाइट गरिएका passages (तपाईंको पाठमा क्यारेक्टर अफसेट), sourcesSearched (नतिजामा जवाफ समावेश भएका स्रोत मात्र), कारणसहितको sourcesSkipped, र webSearched।

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

उदाहरण: curl

curl -X POST https://adeptwrite.com/api/v1/plagiarism \
  -H "Content-Type: application/json" \
  -d '{"lang":"ne","text":"…कम्तीमा ३० शब्द…"}'

GET/api/v1/health

कुन सेवा सक्रिय छन् भनेर बताउँछ। कुनै body लिँदैन र कोटामा गनिँदैन।

प्रतिक्रिया

स्थिति 200। एआई किल स्विच खुला हुँदा ai false हुन्छ; plagiarism ले चेकरले खोज्न सक्ने स्रोत सूचीबद्ध गर्छ; aidetect ले एआई डिटेक्टरको सर्भर-पक्षीय गहिरो विश्लेषण वर्णन गर्छ, जुन अझै तैनाथ गरिएको छैन (POST /api/v1/aidetect ले 503 disabled दिन्छ; साइटको डिटेक्टर तपाईंको ब्राउजरमै चल्छ)।

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

उदाहरण: curl

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

Task list

taskWhat it does
paraphraseपुनर्लेखन; मोड: Standar (सामान्य), Formal, Santai (अनौपचारिक), Akademik, Kreatif, Ringkas (संक्षिप्त), Panjangkan (विस्तृत)।
grammarव्याकरण र हिज्जेको सुधार।
toneशैली परिवर्तन; मोड: Formal, Kantor (कार्यालयीय), Santai (अनौपचारिक)।
rewriteकडा वा अप्ठ्यारा वाक्य सुधार्ने; मोड: Standar, Formal।
resizeवाक्य छोट्याउने वा लम्ब्याउने; मोड: Ringkas, Panjangkan।
essayबुँदाबाट अनुच्छेद वा निबन्ध बनाउने; मोड: Akademik, Kreatif, Panjangkan।
summarizeसारांश; मोड: Poin-poin (बुँदागत), Paragraf (अनुच्छेद), Satu kalimat (एक वाक्य)।
translateकुनै पनि दुई समर्थित भाषाबीच अनुवाद; options.from (वा auto) र options.to; मोड: Alami (स्वाभाविक, पूर्वनिर्धारित), Formal, Santai (अनौपचारिक)।
thesisशोधपत्र शीर्षकका विचार र अध्यायगत रूपरेखा।
abstractअनुसन्धानको सारबाट संरचित शोधसार।
captionसामाजिक सञ्जालका क्याप्सन; options.platform: instagram, tiktok, linkedin।
emailइमेल र पत्र; मोड: Lamaran kerja (जागिरको आवेदन), Surat resmi (औपचारिक पत्र), Follow-up (फलो-अप)।
headlineलेखका शीर्षक; मोड: Kreatif, Ringkas।
productउत्पादन विवरण; मोड: Marketplace, Toko online (अनलाइन पसल)।
synonymएउटा शब्द वा वाक्यांशका पर्यायवाची शब्दको सूची।
humanizeकडा वा सामान्य पाठलाई अझ स्वाभाविक बनाउने; मोड: Alami (स्वाभाविक), Pribadi (व्यक्तिगत), Profesional (व्यावसायिक)।
metaतीन जोडी मेटा शीर्षक र विवरण; मोड: Artikel (लेख), Produk (उत्पादन), Halaman (कुनै पनि वेब पेज)।
hashtagह्यासट्यागको एउटा लाइन; मोड: Instagram, TikTok, LinkedIn, X।
bioतीनवटा प्रोफाइल बायो; मोड: Instagram, LinkedIn, X, TikTok।
outlineउप-बुँदासहितको क्रमाङ्कित रूपरेखा; मोड: Artikel (लेख), Esai (निबन्ध), Skripsi (शोधपत्र), Presentasi (प्रस्तुति)।
sloganदश वटा नाराका विचार; मोड: Merek (ब्रान्ड), Kampanye (अभियान), Produk (उत्पादन)।
paragraphविषयबाट एउटा अनुच्छेद; मोड: Pembuka (भूमिका), Isi (मुख्य भाग), Penutup (निष्कर्ष)।
coverletterकभर लेटरको मस्यौदा; मोड: Fresh graduate (भर्खर स्नातक), Berpengalaman (अनुभवी), Magang (इन्टर्नसिप)।
poemछोटा कविता; मोड: Bebas (गद्य कविता), Berima (तुकबन्दी), Akrostik (एक्रोस्टिक), Haiku (हाइकु)।

सीमा

पाठको लम्बाइ
प्रति अनुरोध बढीमा ६,००० क्यारेक्टर (त्योभन्दा बढी भए 413 too_long)।
प्रति IP ठेगाना
प्रति मिनेट ३० अनुरोध।
विश्वव्यापी
सम्पूर्ण सेवामा प्रति मिनेट १०० अनुरोध, र एआई सुविधाका लागि दैनिक सीमा।
साहित्यिक चोरी
प्रति IP प्रति मिनेट ५ जाँच र सम्पूर्ण सेवामा प्रति मिनेट ६०; कम्तीमा ३० शब्द।
आउटपुट
हरेक कामको आफ्नै लम्बाइ सीमा, कहिल्यै २,०४८ टोकनभन्दा बढी हुँदैन; काटिएको जवाफमा truncated: true हुन्छ।
मोडेल
भाषाअनुसार छानिन्छ: अङ्ग्रेजी र इन्डोनेसियाली @cf/aisingapore/gemma-sea-lion-v4-27b-it मा, अन्य सबै भाषा (नेपाली सहित) @cf/qwen/qwen3-30b-a3b-fp8 मा चल्छन्। मोडेल व्यस्त, दर-सीमित, ढिलो वा असफल भए अनुरोध शृङ्खलाको अर्को मोडेलमा सर्छ (Qwen3-30B, त्यसपछि @cf/google/gemma-4-26b-a4b-it, त्यसपछि @cf/meta/llama-3.3-70b-instruct-fp8-fast)। model फिल्डले जवाफ दिने मोडेलको नाम सधैँ बताउँछ।

त्रुटी कोड

स्थितिकोडकहिले हुन्छ
400invalid_requestअमान्य JSON, आवश्यक फिल्ड छुटेको, वा अज्ञात task वा lang।
413too_longtext ६,००० क्यारेक्टरभन्दा लामो छ।
403forbiddenअनुरोध adeptwrite.com को पृष्ठबाट आएको थिएन।
429rate_limitedप्रति IP वा विश्वव्यापी प्रति मिनेट सीमा नाघ्यो। Retry-After मा दिइएको सेकेन्ड कुर्नुहोस्।
429quota_exceededएआई सुविधाको दैनिक सीमा सकियो। भोलिपल्ट (UTC) फेरि प्रयास गर्नुहोस्।
502upstreamशृङ्खलाका सबै मोडेल समयमै जवाफ दिन असफल भए।
502empty_outputमोडेलले जवाफ दियो, तर नतिजा खाली थियो।
503disabledसञ्चालकले सेवा अस्थायी रूपमा बन्द गरेको छ, वा (/api/v1/aidetect का लागि) अझै तैनाथ गरिएको छैन।

त्रुटिको ढाँचा

हरेक त्रुटि सम्बन्धित HTTP स्थिति कोडसहित JSON मा, एउटै बनोटमा फर्कन्छ:

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

पहिले ok जाँच्नुहोस्, अनि प्रोग्रामले ह्यान्डल गर्न error.code पढ्नुहोस्; error.message प्रयोगकर्तालाई देखाउन सुरक्षित छ।

सिफारिस गरिएको अभ्यास

  • लामो कागजात एकैपटक नपठाई भागभाग (जस्तै अनुच्छेदअनुसार) पठाउनुहोस्; नतिजा छिटो आउँछ र जाँच्न सजिलो हुन्छ।
  • 429 लाई तुरुन्तै पुनःप्रयास नगरी exponential back-off ले सम्हाल्नुहोस्।
  • आवश्यक नपर्ने व्यक्तिगत वा गोप्य डेटा नपठाउनुहोस् — हामीले भण्डारण नगरे पनि डेटा न्यूनीकरणको सिद्धान्त लागू हुन्छ।
  • एआईको नतिजा गलत हुन सक्छ; यसलाई अन्तिम सत्य होइन, जाँचिनुपर्ने सुझावका रूपमा प्रस्तुत गर्नुहोस्।

बारम्बार सोधिने प्रश्न

आफ्नै एप वा डोमेनबाट API कल गर्न मिल्छ?

अहिले मिल्दैन। Worker ले हाल CORS हेडर पठाउँदैन र adeptwrite.com का पृष्ठलाई मात्र सेवा दिन्छ। API कुञ्जीसहितको बाह्य पहुँच Pro योजनासँगै ल्याउने योजना छ; उपलब्ध भएपछि यो दस्तावेज अद्यावधिक गरिनेछ।

API मा पठाइएको पाठ भण्डारण हुन्छ?

हुँदैन। पाठ जवाफ बनाउन मोडेलमा पठाइन्छ र त्यसपछि फ्याँकिन्छ। लगमा मेटाडेटा मात्र हुन्छ (स्थिति कोड, काम, अवधि)। पूर्ण विवरण गोपनीयता नीतिमा हेर्नुहोस्।

आउटपुट संरचित JSON नभई सादा पाठ किन हो?

हरेक कामले भूमिका वाक्य वा Markdown बाड बिना प्रयोगका लागि तयार एउटै पाठ दिन्छ, ताकि त्यसलाई सिधै सम्पादकमा देखाउन सकियोस्। थप संरचना (जस्तै परिवर्तनको सूची) v1 नबदली पछिल्लो संस्करणमा ल्याउने योजना छ।

API को शुल्क कति पर्छ?

adeptwrite.com बाट यो निःशुल्क हो, प्रति IP प्रति मिनेट ३० एआई अनुरोधसम्म सीमित। बाह्य पहुँचको मूल्य Pro योजनासँगै घोषणा गरिनेछ; त्यसअघि कुनै शुल्क लाग्दैन।

मेरो अनुरोधमा कुन मोडेलले जवाफ दिन्छ?

यो भाषामा निर्भर छ: अङ्ग्रेजी र इन्डोनेसियाली SEA-LION मा जान्छन्, अन्य भाषा (नेपाली सहित) Qwen3-30B मा। त्यो मोडेल व्यस्त वा असफल भए वैकल्पिक शृङ्खलाको अर्को मोडेलले जवाफ दिन्छ, र प्रतिक्रियाको model फिल्डले कुन मोडेलले दियो भनेर बताउँछ।