डेवलपर के लिए

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
मुफ़्त टूल

बेस URL

सभी एंडपॉइंट नीचे दिए बेस URL से शुरू होते हैं:

https://quik.mn/api/v1

प्रमाणीकरण

हर अनुरोध में अपने डैशबोर्ड से मिली API कुंजी को Authorization हेडर में भेजें:

Authorization: Bearer qk_live_...

अपनी कुंजी किसी को न दें। लीक हो जाए तो डैशबोर्ड से नई बना लें।

एंडपॉइंट सूची

छोटी लिंक
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 मियाद बढ़ाएँ — बॉडी में दिनों की संख्या (जैसे 365)
QR कोड
GET /api/v1/links/{id}/qr QR कोड लें — फ़ॉर्मैट PNG या SVG, साथ में आकार और रंग
Email Counter
POST /api/v1/timers Email Counter बनाएँ — जवाब: gif_url + embed_html
GET /api/v1/timers काउंटर की सूची
GET /api/v1/timers/{id} एक काउंटर की जानकारी
PATCH /api/v1/timers/{id} काउंटर बदलें
DELETE /api/v1/timers/{id} काउंटर मिटाएँ
काउंटडाउन पेज
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} एक सिग्नेचर — HTML कोड सहित
PATCH /api/v1/signatures/{id} सिग्नेचर बदलें
DELETE /api/v1/signatures/{id} सिग्नेचर मिटाएँ
अकाउंट
GET /api/v1/me मौजूदा अकाउंट की जानकारी

पैरामीटर

POST /api/v1/links — बॉडी फ़ील्ड:

url required भेजे जाने वाला पूरा URL (प्रोटोकॉल सहित)।
alias optional अपनी पसंद का छोटा नाम (अक्षर, अंक, - और _; 1–64 वर्ण)। «स्लग» नाम के फ़ील्ड में भेजने पर भी चलेगा।
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)। तय समय तक आने वालों को countdown दिखता है; यह expires_at से पहले होना चाहिए। PATCH में null भेजें तो लिंक तुरंत चालू हो जाती है।
on_duplicate optional अगर उसी पते की कोई चालू लिंक पहले से है: «रीयूज़» (डिफ़ॉल्ट — पुरानी लिंक ही लौटाता है, रीयूज़्ड:true फ़ील्ड के साथ) या «क्रिएट» (नई बनाता है)। अलायस देने पर हमेशा नई लिंक बनती है।

GET /api/v1/links — क्वेरी पैरामीटर:

limit एक पेज पर कितने लौटाने हैं (1–100, डिफ़ॉल्ट 25)।
offset कितनी पंक्तियाँ छोड़नी हैं (पेजिनेशन)।
q खोज — स्लग, शीर्षक और गंतव्य URL में खोजता है।

एरर का फ़ॉर्मैट

हर एरर HTTP स्टेटस कोड (401, 404, 409, 422, 429) और एक जैसे JSON ढाँचे के साथ आता है:

{ "error": "alias_taken", "message": "यह उपनाम आरक्षित है या पहले से उपयोग में है।" }

आम कोड: 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 हिस्से में एंडपॉइंट दर्ज करें, फिर चुना हुआ इवेंट होते ही हम आपके URL पर JSON डेटा POST करेंगे। 2xx जवाब = सफल; बाक़ी हालात में 1 मिनट → 10 मिनट के अंतर पर 3 बार तक फिर कोशिश करते हैं। लगातार 10 बार नाकाम होने पर webhook अपने आप बंद हो जाता है।

link.created जब नई छोटी लिंक बनती है (वेब + API)
link.deleted जब कोई लिंक मिटाई जाती है
link.expired जब लिंक की मियाद या क्लिक सीमा ख़त्म होती है (रोज़ाना जाँच से)
link.clicks.milestone जब क्लिक 100 / 1,000 / 10,000 की सीमा पार करते हैं — पेलोड में माइलस्टोन फ़ील्ड आता है
timer.expired जब ईमेल काउंटर ख़त्म होता है
countdown.expired जब काउंटडाउन पेज ख़त्म होता है
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). सीक्रेट सिर्फ़ एक ही बार दिखता है — वेबहुक बनाते समय। सिग्नेचर की जाँच हमेशा कच्ची, बिना बदली बॉडी पर और कॉन्स्टेंट-टाइम तुलना से करें:

<?php
// PHP — कच्चे (raw) रिक्वेस्ट बॉडी पर सिग्नेचर सत्यापित करें
$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) रिक्वेस्ट बॉडी पर सिग्नेचर सत्यापित करें
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 वेबहुक। एंडपॉइंट ऐसा URL होना चाहिए जो सबके लिए खुला हो (निजी नेटवर्क के पते नहीं चलेंगे)।

अपनी API कुंजी पाएँ
डैशबोर्ड के API हिस्से में कुंजी बनाएँ और तुरंत शुरू करें।
API कुंजी लें