API ডকুমেন্টেশন

৫৬টি ভাষায় প্যারাফ্রেজ, ব্যাকরণ চেক, সারাংশ, অনুবাদ ও প্লেজারিজম চেক আপনার অ্যাপে। সহজ REST, ক্লাউডফ্লেয়ারের এজ থেকে পরিবেশিত।

Same-origin
এখন API শুধু adeptwrite.com-এর নিজের পাতা থেকে আসা অনুরোধ নেয় (কোনো CORS হেডার নেই)। API কী দিয়ে বাইরে থেকে ব্যবহারের সুবিধা Pro প্ল্যানের সঙ্গে আনার পরিকল্পনা আছে। চুক্তিটি খোলা রাখতে এবং আপনি আগেভাগে তৈরি হতে পারেন বলে এই ডকুমেন্টেশন আগেই প্রকাশ করা হলো।
সারসংক্ষেপ

AdeptWrite API v1-এ তিনটি এন্ডপয়েন্ট আছে। POST /api/v1/run-এ task, mode, lang ও text (সর্বোচ্চ ৬,০০০ অক্ষর) সহ JSON পাঠালে এআই মডেলের ফল আসে; POST /api/v1/plagiarism লেখা উন্মুক্ত উৎসের সঙ্গে মেলায়; GET /api/v1/health সেবার অবস্থা জানায়। লেখা জমা বা লগ করা হয় না।

প্রাথমিক তথ্য

  • Base 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✓কাজের নাম; নিচের task তালিকা দেখুন।
textstring✓ইনপুট লেখা, ১–৬,০০০ অক্ষর।
langstring✓ফলাফলের ভাষা: সাইটের ৫৬টি লোকেল কোডের একটি (bn, en, id, 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": "bn",
  "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":"bn","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: 'bn', 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

লেখা থেকে ৪–৮টি বৈশিষ্ট্যপূর্ণ বাক্যাংশ বেছে নেয়, লেখার ভাষার উন্মুক্ত উৎসে (উইকিপিডিয়া, উইকিসোর্স, ইন্টারনেট আর্কাইভের পূর্ণ পাঠ, 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": "bn", "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://bn.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":"bn","text":"…কমপক্ষে ৩০ শব্দ…"}'

GET/api/v1/health

কোন সেবাগুলো চালু আছে তা জানায়। কোনো বডি লাগে না এবং কোটায় গণনা হয় না।

উত্তর

স্ট্যাটাস 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।

সীমা

লেখার দৈর্ঘ্য
প্রতি অনুরোধে সর্বোচ্চ 6,000 অক্ষর (এর বেশি হলে 413 too_long)।
প্রতি আইপি ঠিকানা
প্রতি মিনিটে 30টি অনুরোধ।
সামগ্রিক
পুরো সেবায় প্রতি মিনিটে 100টি অনুরোধ, এর সঙ্গে এআই ফিচারের একটি দৈনিক সীমা।
প্লেজারিজম
প্রতি আইপিতে প্রতি মিনিটে 5টি এবং পুরো সেবায় প্রতি মিনিটে 60টি পরীক্ষা; সর্বনিম্ন 30 শব্দ।
আউটপুট
কাজভিত্তিক দৈর্ঘ্যের বরাদ্দ, কখনো 2,048 টোকেনের বেশি নয়; কেটে যাওয়া উত্তরে থাকে 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 6,000 অক্ষরের বেশি।
403forbiddenঅনুরোধ adeptwrite.com-এর কোনো পাতা থেকে আসেনি।
429rate_limitedপ্রতি আইপি বা সামগ্রিক প্রতি মিনিটের সীমা ছাড়িয়েছে। 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 ডাকা যায়?

এখনো না। ওয়ার্কার এখন কোনো CORS হেডার পাঠায় না এবং শুধু adeptwrite.com-এর পাতার অনুরোধ নেয়। API কী দিয়ে বাইরে থেকে ব্যবহারের সুবিধা Pro প্ল্যানের সঙ্গে আনার পরিকল্পনা আছে; তা চালু হলে এই ডকুমেন্টেশন হালনাগাদ করা হবে।

API-তে পাঠানো লেখা কি জমা থাকে?

না। উত্তর তৈরির জন্য লেখা মডেলে পাঠানো হয়, তারপর ফেলে দেওয়া হয়। লগে থাকে শুধু মেটাডেটা (স্ট্যাটাস কোড, টাস্ক, সময়কাল)। পুরো বিবরণ গোপনীয়তা নীতিতে।

ফলাফল কেন সাদা টেক্সট, কাঠামোবদ্ধ JSON নয়?

প্রতিটি কাজ ভূমিকা-বাক্য বা Markdown ব্লক ছাড়া একটি তৈরি-ব্যবহারযোগ্য লেখা দেয়, যাতে সরাসরি এডিটরে দেখানো যায়। বাড়তি কাঠামো (যেমন পরিবর্তনের তালিকা) v1 না বদলে পরবর্তী সংস্করণে আনার পরিকল্পনা আছে।

API ব্যবহারে খরচ কত?

adeptwrite.com থেকে ব্যবহার বিনামূল্যে, তবে প্রতি আইপিতে প্রতি মিনিটে ৩০টি এআই অনুরোধের সীমা আছে। বাইরে থেকে ব্যবহারের মূল্য Pro প্ল্যানের সঙ্গে ঘোষণা করা হবে; তার আগে কোনো অর্থ কাটা হয় না।

আমার অনুরোধের উত্তর কোন মডেল দেয়?

ভাষার ওপর নির্ভর করে: ইংরেজি ও ইন্দোনেশীয় ভাষা যায় SEA-LION-এ, বাংলাসহ বাকি ভাষা Qwen3-30B-তে। সেই মডেল ব্যস্ত থাকলে বা ব্যর্থ হলে বিকল্প শৃঙ্খলের পরের মডেল উত্তর দেয়, আর উত্তরের model ঘরে যে মডেল সত্যিই উত্তর দিয়েছে তার নাম থাকে।