اردو سمیت 56 زبانوں میں پیرا فریزنگ، گرامر کی جانچ، خلاصہ، ترجمہ اور سرقہ کی جانچ۔ سادہ REST، جو Cloudflare کے ایج سے چلتی ہے۔
صرف اسی ڈومین سے
API فی الحال صرف adeptwrite.com کے اپنے صفحات سے آنے والی درخواستیں قبول کرتی ہے (CORS ہیڈر نہیں ہیں)۔ بیرونی رسائی API کلیدوں کے ساتھ پرو پلان کے ساتھ منصوبے میں ہے۔ یہ دستاویزات پہلے سے اس لیے شائع کی گئی ہیں کہ معاہدہ کھلا رہے اور آپ تیاری کر سکیں۔
خلاصہ
AdeptWrite کی v1 API میں تین فعال اینڈ پوائنٹس ہیں۔ POST /api/v1/run میں task، mode، lang اور text (زیادہ سے زیادہ 6,000 حروف) کا JSON بھیجا جاتا ہے اور Cloudflare Workers AI ماڈل کا سادہ متن نتیجہ ملتا ہے؛ POST /api/v1/plagiarism متن کو کھلے ذرائع سے ملا کر تلاش شدہ ذرائع بتاتا ہے؛ GET /api/v1/health سروس کی حالت بتاتا ہے۔ متن نہ محفوظ ہوتا ہے نہ لاگ، اور اے آئی درخواستیں 30 فی منٹ فی آئی پی ہیں۔
بنیادی باتیں
بنیادی پتہ:https://adeptwrite.com/api/v1
فارمیٹ: درخواستیں اور جوابات JSON میں ہیں (Content-Type: application/json، UTF-8)۔
تصدیق: ابھی نہیں؛ درخواستیں adeptwrite.com کے صفحات (ایک ہی ڈومین) سے آنی چاہئیں۔ API کلیدیں پرو کے ساتھ آئیں گی۔
رازداری:text فیلڈ نہ محفوظ ہوتا ہے نہ لاگ؛ جوابات میں Cache-Control: no-store ہوتا ہے۔
ورژن:/v1/ کا راستہ غیر موافق طریقے سے نہیں بدلے گا؛ بڑی تبدیلیاں /v2/ کے تحت آئیں گی۔
اردو متن بھیجتے وقت lang میں ur دیں، یا auto رکھیں تاکہ نتیجہ ان پٹ کی زبان ہی میں آئے۔
POST/api/v1/run
ایک متن پر ایک اے آئی کام چلاتا ہے اور نتیجہ سادہ متن کی صورت میں لوٹاتا ہے (کوئی تمہید نہیں، Markdown کے بلاک نہیں)۔
درخواست
Field
Type
Required
Notes
task
string
✓
کام کا نام؛ نیچے کاموں کی فہرست دیکھیں۔
text
string
✓
ان پٹ متن، 1 تا 6,000 حروف۔
lang
string
✓
نتیجے کی زبان: سائٹ کے 56 لوکیل کوڈ میں سے ایک (ur، en، id، ja، 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": "ur",
"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":"ur","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: 'ur', 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
متن میں سے 4 تا 8 نمایاں فقرے چنتا ہے، متن کی زبان کے کھلے ذرائع (Wikipedia، Wikisource، Internet Archive کا مکمل متن، Europe PMC، DOAJ، arXiv؛ ویب سرچ فراہم کنندہ صرف تب جب ترتیب دیا گیا ہو اور مانگا جائے) میں تلاش کرتا ہے اور مماثلت کا اسکور نکالتا ہے۔ سرور سے صرف یہی مختصر فقرے باہر جاتے ہیں۔
درخواست
Field
Type
Required
Notes
text
string
✓
کم از کم 30 الفاظ، زیادہ سے زیادہ 6,000 حروف۔
lang
string
✓
سائٹ کا لوکیل کوڈ یا auto۔
options
object
—
web: true تب ویب سرچ فراہم کنندہ سے بھی پوچھتا ہے جب آپریٹر نے اسے ترتیب دیا ہو؛ جواب میں webSearched بتاتا ہے کہ اس نے واقعی جواب دیا یا نہیں۔
POST /api/v1/plagiarism HTTP/1.1
Content-Type: application/json
{ "text": "…کم از کم 30 الفاظ…", "lang": "ur", "options": { "web": false } }
جواب
اسٹیٹس 200 کے ساتھ score (مماثل الفاظ ÷ کل الفاظ، 0 تا 1)، ہر ماخذ کے لیے matches اور نمایاں کیے گئے passages (آپ کے متن میں حروف کے آفسٹ)، sourcesSearched (بالکل وہی ذرائع جن کے جواب نتیجے میں شامل ہیں)، وجہ کے ساتھ sourcesSkipped، اور webSearched۔
curl -X POST https://adeptwrite.com/api/v1/plagiarism \
-H "Content-Type: application/json" \
-d '{"lang":"ur","text":"…کم از کم 30 الفاظ…"}'
GET/api/v1/health
بتاتا ہے کہ کون سی سروسز چل رہی ہیں۔ اس میں کوئی باڈی نہیں ہوتی اور یہ کوٹے میں شمار نہیں ہوتا۔
جواب
اسٹیٹس 200۔ جب تک اے آئی کا کِل سوئچ آن ہو، ai غلط ہوتا ہے؛ plagiarism ان ذرائع کی فہرست دیتا ہے جن میں جانچ ممکن ہے؛ aidetect اے آئی ڈیٹیکٹر کے سرور والے گہرے تجزیے کی حالت بتاتا ہے، جو ابھی تعینات نہیں ہوا (POST /api/v1/aidetect کا جواب 503 disabled ہے؛ سائٹ پر ڈیٹیکٹر آپ کے براؤزر میں چلتا ہے)۔
ہر درخواست میں زیادہ سے زیادہ 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 کے لیے) وہ ابھی تعینات نہیں ہوئی۔
غلطی کا فارمیٹ
ہر غلطی JSON کی صورت میں متعلقہ HTTP اسٹیٹس کوڈ کے ساتھ ایک ہی ساخت میں لوٹتی ہے:
{ "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 کلیدوں کے ساتھ بیرونی رسائی پرو پلان کے ساتھ منصوبے میں ہے؛ دستیاب ہونے پر یہ دستاویزات اپ ڈیٹ ہوں گی۔
کیا API کو بھیجا گیا متن محفوظ ہوتا ہے؟
نہیں۔ متن جواب بنانے کے لیے ماڈل کو دیا جاتا ہے اور پھر ضائع کر دیا جاتا ہے۔ لاگ میں صرف میٹا ڈیٹا (اسٹیٹس کوڈ، کام، دورانیہ) ہوتا ہے۔ پوری تفصیل [رازداری کی پالیسی](/ur/privacy/) میں ہے۔
آؤٹ پٹ منظم JSON کے بجائے سادہ متن کیوں ہے؟
ہر کام ایک تیار متن دیتا ہے جس میں تمہید یا Markdown بلاک نہیں ہوتے، تاکہ اسے سیدھا ایڈیٹر میں دکھایا جا سکے۔ اضافی ساخت (مثلاً تبدیلیوں کی فہرست) v1 کو بدلے بغیر بعد کے ورژن میں شامل کرنے کا منصوبہ ہے۔
API کی قیمت کیا ہے؟
adeptwrite.com سے استعمال مفت ہے اور فی آئی پی 30 اے آئی درخواستیں فی منٹ تک محدود ہے۔ بیرونی رسائی کی قیمتوں کا اعلان پرو پلان کے ساتھ ہوگا؛ اس سے پہلے کچھ وصول نہیں کیا جاتا۔
میری درخواست کا جواب کون سا ماڈل دیتا ہے؟
یہ زبان پر منحصر ہے: انگریزی اور انڈونیشیائی SEA-LION کو جاتی ہیں، اردو سمیت باقی زبانیں Qwen3-30B کو۔ اگر وہ ماڈل مصروف ہو یا ناکام ہو تو متبادل زنجیر کا اگلا ماڈل جواب دیتا ہے، اور جواب کا model فیلڈ اسی کا نام بتاتا ہے۔