بازنویسی، ویرایش دستور، خلاصهسازی، ترجمه و بررسی سرقت ادبی در ۵۶ زبان، با یک رابط REST ساده که از لبهٔ شبکهٔ Cloudflare ارائه میشود.
هممبدأ
رابط فعلاً فقط به درخواستهای خود صفحههای adeptwrite.com پاسخ میدهد (بدون سرایند CORS). دسترسی بیرونی با کلید رابط برای طرح Pro برنامهریزی شده است. این مستندات زود منتشر شده تا قرارداد باز باشد و بتوانید آماده شوید.
خلاصه
رابط نسخهٔ ۱ AdeptWrite سه نقطهٔ پایانی فعال دارد. POST /api/v1/run یک JSON با task، mode، lang و text (تا ۶٬۰۰۰ نویسه) میگیرد و خروجی متنی ساده از مدل Cloudflare Workers AI مناسب آن زبان برمیگرداند؛ POST /api/v1/plagiarism متن را با منابع باز میسنجد و همهٔ منابع جستوجوشده را فهرست میکند؛ GET /api/v1/health وضعیت سرویس را میدهد. متن ذخیره یا ثبت نمیشود و درخواستهای هوش مصنوعی ۳۰ در دقیقه برای هر IPاند.
مبانی
نشانی پایه:https://adeptwrite.com/api/v1
قالب: درخواست و پاسخ JSON هستند (Content-Type: application/json، UTF-8). متن فارسی را همانطور با نویسههای یونیکد بفرستید؛ نیمفاصله (U+200C) حفظ میشود.
احراز هویت: هنوز ندارد؛ درخواست باید از صفحههای adeptwrite.com بیاید (هممبدأ). کلیدهای رابط با Pro میرسند.
حریم خصوصی: فیلد text هرگز ذخیره یا ثبت نمیشود؛ پاسخها Cache-Control: no-store دارند.
نسخهبندی: مسیر /v1/ ناسازگار تغییر نمیکند؛ تغییر ناسازگار با /v2/ میآید.
POST/api/v1/run
یک کار هوش مصنوعی را روی یک متن اجرا میکند و نتیجه را بهصورت متن ساده برمیگرداند (بدون مقدمه و بدون پرچینهای Markdown).
درخواست
Field
Type
Required
Notes
task
string
✓
نام کار؛ فهرست کارها را در پایین ببینید.
text
string
✓
متن ورودی، ۱ تا ۶٬۰۰۰ نویسه.
lang
string
✓
زبان نتیجه: یکی از ۵۶ کد زبان سایت (en، id، fa، ja، pt-pt، zh-hant و …؛ برچسبهای BCP 47 مثل pt-BR نگاشت میشوند) یا auto به معنای «همان زبان ورودی».
mode
string
—
یکی از حالتهای آن ابزار، مثلاً Formal، Akademik، Ringkas یا Poin-poin (نام حالتها برچسبهای اندونزیایی ثبتنامهاند). برای کارهای بیحالت نادیده گرفته میشود.
options
object
—
گزینههای ویژهٔ کار: from و to برای translate (هر زبان پشتیبانیشده به هر زبان دیگر؛ from میتواند auto باشد)، platform (instagram / tiktok / linkedin) برای caption و fieldsهای برچسبدار اختیاری برای bio، coverletter و meta. کلیدهای دیگر نادیده گرفته میشوند.
POST /api/v1/run HTTP/1.1
Content-Type: application/json
{
"task": "paraphrase",
"mode": "Formal",
"lang": "fa",
"text": "نوشتن درست برای دانشجویان اهمیت زیادی دارد.",
"options": {}
}
پاسخ
وضعیت 200 با ok: true، نتیجه در output، مدلی که واقعاً پاسخ داده در model (وقتی مدل جایگزین وارد شود فرق میکند) و زمان پردازش به میلیثانیه. اگر پاسخ به سقف طولش یا محدودیت زمان رسیده و بریده شده باشد، truncated: true هم میآید.
curl -X POST https://adeptwrite.com/api/v1/run \
-H "Content-Type: application/json" \
-d '{"task":"grammar","lang":"fa","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: 'fa', 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، Wikisource، متن کامل Internet Archive، Europe PMC، DOAJ، arXiv؛ و فقط وقتی پیکربندی و درخواست شده باشد، یک سرویس جستوجوی وب) و میزان همپوشانی را نمره میدهد. فقط همان عبارتهای کوتاه از سرور بیرون میروند. پایگاههای ایرانی مانند همانندجو جستوجو نمیشوند.
درخواست
Field
Type
Required
Notes
text
string
✓
دستکم ۳۰ کلمه و حداکثر ۶٬۰۰۰ نویسه.
lang
string
✓
یک کد زبان سایت یا auto.
options
object
—
web: true اگر ادارهکننده سرویس جستوجوی وب را پیکربندی کرده باشد آن را هم میپرسد؛ webSearched در پاسخ میگوید واقعاً پاسخ داده یا نه.
وضعیت 200 با score (کلمههای منطبق ÷ کلمهها، از ۰ تا ۱)، matches برای هر منبع با passages نشانهگذاریشده (جابهجایی نویسهای در متن شما)، sourcesSearched (دقیقاً منابعی که پاسخشان در نتیجه هست)، sourcesSkipped با دلیل و webSearched. نمره تخمین همپوشانی با منابع باز است، نه حکم سرقت ادبی.
نشان میدهد کدام سرویسها روشناند. بدنه ندارد و از سهمیه کم نمیکند.
پاسخ
وضعیت 200. تا وقتی کلید قطع اضطراری هوش مصنوعی روشن باشد، ai برابر false است؛ plagiarism منابعی را فهرست میکند که بررسیگر میتواند بپرسد؛ aidetect تحلیل عمیق سمت سرور تشخیصدهندهٔ متن هوش مصنوعی را شرح میدهد که هنوز مستقر نشده است (POST /api/v1/aidetect با 503 disabled پاسخ میدهد؛ تشخیصدهندهٔ روی سایت در مرورگر شما اجرا میشود).
شعر کوتاه؛ حالتها: 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 همیشه مدلی را نام میبرد که پاسخ داده است.
کدهای خطا
وضعیت
کد
چه زمانی رخ میدهد
400
invalid_request
JSON نامعتبر، فیلد الزامی جاافتاده، یا task یا lang ناشناخته.
413
too_long
text از ۶٬۰۰۰ نویسه بیشتر است.
403
forbidden
درخواست از یک صفحهٔ adeptwrite.com نیامده است.
429
rate_limited
سقف دقیقهای هر IP یا سراسری رد شده است. بهاندازهٔ ثانیههای Retry-After صبر کنید.
429
quota_exceeded
سقف روزانهٔ امکانات هوش مصنوعی تمام شده است. روز بعد (به وقت UTC) دوباره امتحان کنید.
502
upstream
هیچیک از مدلهای زنجیره بهموقع پاسخ نداد.
502
empty_output
مدلها پاسخ دادند اما نتیجه خالی بود.
503
disabled
ادارهکننده سرویس را موقتاً خاموش کرده است، یا (برای /api/v1/aidetect) هنوز مستقر نشده است.
قالب خطا
هر خطا بهصورت JSON و با کد وضعیت HTTP متناظر و همین ساختار برمیگردد:
{ "ok": false, "error": { "code": "rate_limited", "message": "Too many requests. Please try again shortly." } }
ابتدا ok را بررسی کنید و برای رسیدگی برنامهنویسیشده error.code را بخوانید؛ error.message برای نشاندادن به کاربر مناسب است.
روش پیشنهادی
متن را تکهتکه (مثلاً پاراگراف به پاراگراف) بفرستید، نه یک سند بلند؛ نتیجه سریعتر میرسد و بررسیاش آسانتر است.
429 را با عقبنشینی نمایی مدیریت کنید، نه با تلاش دوبارهٔ فوری.
دادهٔ شخصی یا محرمانهای را که لازم ندارید نفرستید؛ حتی اگر ما ذخیرهاش نمیکنیم، کمینهسازی داده همچنان اصل است.
خروجی هوش مصنوعی میتواند اشتباه باشد؛ آن را پیشنهادی برای بازبینی نشان دهید، نه حقیقتی نهایی.
پرسشهای متداول
آیا میتوانم رابط را از برنامه یا دامنهٔ خودم صدا بزنم؟
هنوز نه. این Worker فعلاً سرایند CORS نمیفرستد و فقط به صفحههای adeptwrite.com پاسخ میدهد. دسترسی بیرونی با کلید رابط برای طرح Pro برنامهریزی شده است و وقتی فراهم شود این مستندات بهروز میشود.
آیا متنی که به رابط میفرستم ذخیره میشود؟
خیر. متن برای ساختن پاسخ به مدل داده میشود و بعد دور ریخته میشود. گزارشها فقط فراداده دارند (کد وضعیت، کار، مدت). همهٔ جزئیات را در سیاست حریم خصوصی ببینید.
چرا خروجی متن ساده است و JSON ساختاریافته نیست؟
هر کار یک متن آمادهٔ استفاده تولید میکند، بدون مقدمه و پرچین Markdown، تا مستقیم در ویرایشگر نشان داده شود. ساختار بیشتر (مثلاً فهرست تغییرها) برای نسخهای بعدی و بیآنکه نسخهٔ ۱ عوض شود برنامهریزی شده است.
استفاده از رابط چقدر هزینه دارد؟
از روی adeptwrite.com رایگان است و به ۳۰ درخواست هوش مصنوعی در دقیقه برای هر IP محدود است. قیمت دسترسی بیرونی همراه طرح Pro اعلام میشود؛ تا آن زمان چیزی دریافت نمیشود.
کدام مدل به درخواست من پاسخ میدهد؟
به زبان بستگی دارد: انگلیسی و اندونزیایی به SEA-LION میروند و زبانهای دیگر، از جمله فارسی، به Qwen3-30B. اگر آن مدل مشغول باشد یا شکست بخورد، مدل بعدی زنجیره جایش پاسخ میدهد و فیلد model در پاسخ نام همان مدل را میآورد.