৫৬টি ভাষায় প্যারাফ্রেজ, ব্যাকরণ চেক, সারাংশ, অনুবাদ ও প্লেজারিজম চেক আপনার অ্যাপে। সহজ 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 ব্লক ছাড়া)।
অনুরোধ
Field
Type
Required
Notes
task
string
✓
কাজের নাম; নিচের task তালিকা দেখুন।
text
string
✓
ইনপুট লেখা, ১–৬,০০০ অক্ষর।
lang
string
✓
ফলাফলের ভাষা: সাইটের ৫৬টি লোকেল কোডের একটি (bn, en, id, pt-pt, zh-hant ইত্যাদি; pt-BR-এর মতো BCP 47 ট্যাগও মিলিয়ে নেওয়া হয়), অথবা «ইনপুটের ভাষাতেই» বোঝাতে auto।
mode
string
—
ওই টুলের জন্য উপলব্ধ মোড, যেমন Formal, Akademik, Ringkas, Poin-poin (মোডের নাম রেজিস্ট্রির ইন্দোনেশীয় লেবেল, বাংলা অনুবাদ নয়)। মোড নেই এমন কাজে উপেক্ষা করা হয়।
options
object
—
কাজভিত্তিক বাড়তি বিকল্প: 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
}
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; ওয়েব সার্চ সরবরাহকারী শুধু কনফিগার করা থাকলে এবং চাইলে) খোঁজে এবং মিলের হিসাব দেয়। সার্ভার থেকে কেবল ওই ছোট বাক্যাংশগুলোই বাইরে যায়।
অনুরোধ
Field
Type
Required
Notes
text
string
✓
কমপক্ষে ৩০ শব্দ, সর্বোচ্চ ৬,০০০ অক্ষর।
lang
string
✓
সাইটের লোকেল কোড অথবা auto।
options
object
—
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।
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; সাইটের ডিটেক্টর আপনার ব্রাউজারেই চলে)।
ছোট কবিতা; মোড: 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 ঘরে সবসময় উত্তরদাতা মডেলের নাম থাকে।
ত্রুটির কোড
অবস্থা
কোড
কখন ঘটে
400
invalid_request
অবৈধ JSON, বাধ্যতামূলক ঘর ফাঁকা, অথবা অচেনা task বা lang।
413
too_long
text 6,000 অক্ষরের বেশি।
403
forbidden
অনুরোধ adeptwrite.com-এর কোনো পাতা থেকে আসেনি।
429
rate_limited
প্রতি আইপি বা সামগ্রিক প্রতি মিনিটের সীমা ছাড়িয়েছে। Retry-After-এ লেখা সেকেন্ড অপেক্ষা করুন।
429
quota_exceeded
এআই ফিচারের দৈনিক সীমা শেষ। পরের দিন (UTC) আবার চেষ্টা করুন।
502
upstream
শৃঙ্খলের কোনো মডেলই সময়মতো উত্তর দিতে পারেনি।
502
empty_output
মডেল উত্তর দিয়েছে, কিন্তু ফলাফল ফাঁকা।
503
disabled
অপারেটর সেবাটি সাময়িক বন্ধ রেখেছেন, অথবা (/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 ঘরে যে মডেল সত্যিই উত্তর দিয়েছে তার নাম থাকে।