ڈویلپرز کے لیے

API دستاویزات

Quik.mn کے REST API سے لنکس پروگرام کے ذریعے بنائیں، منظم کریں اور اعداد و شمار حاصل کریں۔

تمام سروسز

Quik.mn پلیٹ فارم کے تمام پروڈکٹس — REST API اور ویب دونوں پر۔

شارٹ لنک
REST API
QR کوڈ
REST API
Email Counter
REST API
Countdown
REST API
Quik Bio
REST API
مینیو QR
REST API
ای میل دستخط
REST API
UTM builder
مفت ٹولز

بنیادی ایڈریس

ہر endpoint اس بنیادی ایڈریس سے شروع ہوتا ہے:

https://quik.mn/api/v1

توثیق

ہر درخواست میں ڈیش بورڈ سے حاصل کردہ اپنی API کلید Authorization ہیڈر میں بھیجیں:

Authorization: Bearer qk_live_...

اپنی کلید کسی کو نہ دیں۔ افشا ہو جائے تو ڈیش بورڈ سے نئی بنا لیں۔

Endpoint کی فہرست

شارٹ لنک
POST /api/v1/links نیا شارٹ لنک بنائیں
GET /api/v1/links لنکس کی فہرست حاصل کریں
GET /api/v1/links/{id} ایک لنک کی تفصیلات
PATCH /api/v1/links/{id} لنک میں ترمیم کریں
DELETE /api/v1/links/{id} لنک حذف کریں
POST /api/v1/links/{id}/extend میعاد بڑھائیں — body: {"days": 365}
QR کوڈ
GET /api/v1/links/{id}/qr QR کوڈ حاصل کریں — ?format=png|svg&size=300&fg=241210&bg=FFFFFF
Email Counter
POST /api/v1/timers ای میل کاؤنٹر بنائیں — جواب: gif_url + embed_html
GET /api/v1/timers کاؤنٹرز کی فہرست
GET /api/v1/timers/{id} ایک کاؤنٹر کی تفصیلات
PATCH /api/v1/timers/{id} کاؤنٹر میں ترمیم کریں
DELETE /api/v1/timers/{id} کاؤنٹر حذف کریں
Countdown صفحہ
POST /api/v1/countdowns Countdown صفحہ بنائیں — جواب: page_url
GET /api/v1/countdowns صفحات کی فہرست
GET /api/v1/countdowns/{id} ایک صفحے کی تفصیلات
PATCH /api/v1/countdowns/{id} صفحے میں ترمیم کریں
DELETE /api/v1/countdowns/{id} صفحہ حذف کریں
Quik Bio
POST /api/v1/bio-pages Bio صفحہ بنائیں — جواب: page_url (اوتار صرف ویب سے)
GET /api/v1/bio-pages Bio صفحات کی فہرست
GET /api/v1/bio-pages/{id} ایک bio صفحہ — لنکس سمیت
PATCH /api/v1/bio-pages/{id} Bio صفحے میں ترمیم کریں
DELETE /api/v1/bio-pages/{id} Bio صفحہ حذف کریں
GET /api/v1/bio-pages/{id}/stats Bio اعداد و شمار — ویوز اور کلکس
GET /api/v1/bio-pages/{id}/links Bio لنکس کی فہرست
POST /api/v1/bio-pages/{id}/links Bio لنک شامل کریں
PATCH /api/v1/bio-pages/{id}/links/{lid} Bio لنک میں ترمیم کریں
DELETE /api/v1/bio-pages/{id}/links/{lid} Bio لنک حذف کریں
مینیو QR
POST /api/v1/menus مینیو بنائیں — جواب: page_url
GET /api/v1/menus مینیوز کی فہرست
GET /api/v1/menus/{id} ایک مینیو — ڈشز سمیت
PATCH /api/v1/menus/{id} مینیو میں ترمیم کریں
DELETE /api/v1/menus/{id} مینیو حذف کریں
GET /api/v1/menus/{id}/stats اسکین اعداد و شمار — کل، 30 دن، میز کے حساب سے
GET /api/v1/menus/{id}/items ڈشز کی فہرست
POST /api/v1/menus/{id}/items ڈش شامل کریں — تصویر صرف ویب سے
PATCH /api/v1/menus/{id}/items/{iid} ڈش میں ترمیم کریں
DELETE /api/v1/menus/{id}/items/{iid} ڈش حذف کریں
ای میل دستخط
POST /api/v1/signatures دستخط بنائیں — لوگو صرف URL کی صورت میں
GET /api/v1/signatures دستخطوں کی فہرست
GET /api/v1/signatures/{id} ایک دستخط — signature_html سمیت
PATCH /api/v1/signatures/{id} دستخط میں ترمیم کریں
DELETE /api/v1/signatures/{id} دستخط حذف کریں
اکاؤنٹ
GET /api/v1/me موجودہ اکاؤنٹ کی تفصیلات

پیرامیٹرز

POST /api/v1/links — body کے فیلڈز:

url required منزل کا لمبا ایڈریس (http/https)۔
alias optional کسٹم مختصر نام (حروف، اعداد، - اور _؛ 1–64 کیریکٹر)۔ «slug» کے نام سے بھیجیں تو بھی قبول ہے۔
title optional عنوان (زیادہ سے زیادہ 200 کیریکٹر)۔
expires_at optional میعادِ اختتام — مستقبل کی کوئی تاریخ (مثلاً 2026-12-31 23:59:59)۔ زیادہ سے زیادہ 1 سال؛ نہ دیں تو 1 سال۔ PATCH میں null بھیجنے پر میعاد دوبارہ 1 سال ہو جاتی ہے۔
expire_days optional یا دنوں میں: 1/7/30/90/180/365۔ یہ expires_at سے آسان ہے۔
starts_at optional فعال ہونے کا وقت — UTC تاریخ (مثلاً 2026-08-01 02:00:00)۔ مقررہ وقت تک وزیٹرز کو کاؤنٹ ڈاؤن نظر آتا ہے؛ یہ expires_at سے پہلے ہونا چاہیے۔ PATCH میں null بھیجیں تو لنک فوراً فعال ہو جاتا ہے۔
on_duplicate optional اگر اسی ایڈریس کا فعال لنک پہلے سے موجود ہو: "reuse" (ڈیفالٹ — پرانا لنک reused:true فیلڈ کے ساتھ واپس آتا ہے) یا "create" (نیا بنائیں)۔ alias دینے پر ہمیشہ نیا لنک بنتا ہے۔

GET /api/v1/links — query پیرامیٹرز:

limit فی صفحہ واپس آنے والی تعداد (1–100، ڈیفالٹ 25)۔
offset چھوڑی جانے والی قطاروں کی تعداد (صفحہ بندی)۔
q تلاش — slug، عنوان اور لمبے ایڈریس میں تلاش کرتی ہے۔

خرابی کا فارمیٹ

ہر خرابی HTTP اسٹیٹس کوڈ (401، 404، 409، 422، 429) اور یکساں JSON ساخت کے ساتھ آتی ہے:

{ "error": "alias_taken", "message": "یہ نام محفوظ (reserved) ہے یا پہلے سے استعمال میں ہے۔" }

عام کوڈز: unauthorized (401), not_found (404), alias_taken (409), invalid_url / invalid_alias / invalid_expires_at / invalid_starts_at (422), rate_limited (429).

حدود

ہر API کلید کے لیے فی منٹ 60 درخواستیں
حد سے بڑھنے پر 429 rate_limited جواب ملتا ہے — تھوڑا انتظار کر کے دوبارہ کوشش کریں۔

نمونہ درخواست

شارٹ لنک بنانے کی cURL مثال:

curl -X POST https://quik.mn/api/v1/links \
  -H "Authorization: Bearer qk_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/بہت/لمبا/راستہ",
    "alias": "promo",
    "title": "بہار کی مہم",
    "expires_at": "2026-12-31 23:59:59"
  }'

Webhook

ڈیش بورڈ کے Webhook سیکشن میں endpoint رجسٹر کریں — منتخب ایونٹ ہوتے ہی ہم آپ کے URL پر JSON POST بھیجیں گے۔ 2xx جواب = کامیاب؛ ورنہ 1 منٹ سے 10 منٹ تک بڑھتے وقفے سے 3 بار دوبارہ کوشش ہوتی ہے۔ لگاتار 10 ناکامیوں پر webhook خودکار طور پر غیر فعال ہو جاتا ہے۔

link.created نیا شارٹ لنک بننے پر (ویب + API)
link.deleted لنک حذف ہونے پر
link.expired لنک کی میعاد یا کلک حد ختم ہونے پر (روزانہ کی جانچ کے ذریعے)
link.clicks.milestone کلکس کے 100 / 1,000 / 10,000 کی حد عبور کرنے پر — payload میں milestone فیلڈ آتا ہے
timer.expired ای میل کاؤنٹر ختم ہونے پر
countdown.expired Countdown صفحہ ختم ہونے پر
webhook.ping «ٹیسٹ کریں» بٹن سے بھیجا جانے والا آزمائشی ایونٹ

ہر ترسیل کی ساخت (مثال):

{
  "event": "link.created",
  "created_at": "2026-07-18T09:30:00+00:00",
  "data": {
    "link": {
      "id": 42, "slug": "promo", "short_url": "https://quik.mn/promo",
      "long_url": "https://example.com/بہت/لمبا/راستہ", "title": "بہار کی مہم",
      "clicks": 0, "active": true, "state": "ok",
      "created_at": "2026-07-18 09:30:00", "expires_at": "2027-07-18 09:30:00"
    }
  }
}

دستخط کی تصدیق

ہر ترسیل ان ہیڈرز کے ساتھ پہنچتی ہے: X-Quik-Event (ایونٹ کا نام), X-Quik-Signaturesha256=HMAC_SHA256(body, secret). خفیہ کلید (secret) صرف webhook بناتے وقت ایک بار نظر آتی ہے۔ دستخط کی تصدیق لازماً خام (raw) body پر اور constant-time موازنے سے کریں:

<?php
// PHP — دستخط کی تصدیق خام (raw) body پر کریں
$payload   = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_QUIK_SIGNATURE'] ?? '';
$expected  = 'sha256=' . hash_hmac('sha256', $payload, $secret);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('invalid signature');
}
$event = json_decode($payload, true);
// $event['event'], $event['data'] ...
http_response_code(200);
// Node.js (Express) — دستخط کی تصدیق خام (raw) body پر کریں
const crypto = require('crypto');

app.post('/quik-webhook', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.get('X-Quik-Signature') || '';
  const expected  = 'sha256=' +
    crypto.createHmac('sha256', secret).update(req.body).digest('hex');

  const a = Buffer.from(expected), b = Buffer.from(signature);
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
    return res.status(401).send('invalid signature');
  }
  const event = JSON.parse(req.body); // event.event, event.data ...
  res.sendStatus(200);
});

حدود: Free پلان 1، Pro‏ 3، Business‏ 10 webhook۔ endpoint عوامی طور پر قابلِ رسائی http/https ایڈریس ہونا چاہیے (اندرونی نیٹ ورک کے ایڈریس ممنوع ہیں)۔

اپنی API کلید حاصل کریں
ڈیش بورڈ کے API سیکشن سے کلید بنائیں اور فوراً شروع ہو جائیں۔
API کلید حاصل کریں