C cenaly.com
مفت شروع کریں

پبلک API اور ویب ہکس

اجازتوں کے ساتھ کیز، لیڈز، پراپرٹیز، ایونٹس، بات چیت اور سیگمنٹس کا REST API، نئی لیڈز اور ایونٹس کے ویب ہکس — curl مثالوں کے ساتھ

On this page 9

عوامی API اور ویب ہکس

REST API آپ کے CRM، ویب سائٹ کے بیک اینڈ یا اپنے بوٹ کو cenaly.com کے لیڈز اور مکالموں کے ساتھ اسی طرح کام کرنے دیتا ہے جیسے پینل کرتا ہے: کارڈ پڑھنا، خصوصیات بدلنا، ایونٹس بھیجنا، مکالموں میں جواب دینا۔ ویب ہکس اس کے برعکس خود آپ کے سرور کو نئے لیڈز، ایونٹس اور پیغامات کی اطلاع دیتے ہیں۔

شروع کرنے کے لیے کیا درکار ہے#

کیا کہاں
کردار اکاؤنٹ کا مالک — کلید اسی کے نام سے کام کرتی ہے؛ ملازمین کلیدیں نہیں دیکھ سکتے
حصہ فعال چیٹ (لیڈز اور مکالمے اسی میں رہتے ہیں)
کلید انٹیگریشنز → API اور ویب ہکس → کلیدیں → کلید بنائیں
API کا پتہ https://api.cenaly.com/public-api/v1
میتھڈز کی رہنمائی api.cenaly.com/public-api/v1/docs
OpenAPI 3.1 api.cenaly.com/public-api/v1/openapi.json

مرحلہ 1۔ کلید اور اختیارات#

  1. انٹیگریشنز کھولیں اور صفحے کے اوپر API اور ویب ہکس پر کلک کریں۔
  2. کلیدیں ٹیب میں کلید بنائیں پر کلک کریں، نام درج کریں («CRM»، «ویب سائٹ کا بیک اینڈ»، «Telegram بوٹ»)۔
  3. اختیارات کا سیٹ منتخب کریں یا ایک ایک کر کے اختیارات نشان زد کریں، کئی برانچوں کی صورت میں — کلید کن برانچوں تک محدود ہے، اور مدت۔
  4. خفیہ کوڈ cnk_… کاپی کریں۔ یہ صرف ایک بار دکھایا جاتا ہے: ہمارے پاس صرف اس کا فنگر پرنٹ (SHA-256) محفوظ رہتا ہے۔
اختیار کیا دیتا ہے
contacts:read لیڈ کی فہرست، تلاش اور کارڈ، خصوصیات
contacts:write خصوصیات اور ٹیگز بدلنا، ضم کرنا، ڈیٹا سبجیکٹ کی درخواست پر حذف کرنا
events:read لیڈ کے ایونٹس کی فیڈ
events:write ایونٹس بھیجنا (خریداری، رجسٹریشن، کوئی بھی اپنا)
conversations:read مکالمے اور پیغامات
conversations:write آپریٹر کا جواب، نوٹ، اسٹیٹس، ذمہ دار، لیبلز
messages:send لیڈ کو اس کے آخری مکالمے میں پیغام
segments:read محفوظ سیگمنٹس اور ان کے اراکین

سیٹس: CRM / بیک اینڈ (لیڈز، خصوصیات، ایونٹس، مکالموں اور سیگمنٹس کی خواندگی)، اپنا بوٹ (لیڈز پڑھتا ہے، مکالموں میں جواب دیتا ہے، لیڈز کو لکھتا ہے)، صرف خواندگی، سب کچھ۔

  • اختیارات کلید کے اختیارات اور برانچیں فوری طور پر بدلتے ہیں — انٹیگریشن کام کرتی رہتی ہے۔
  • دوبارہ جاری کریں نیا خفیہ کوڈ دیتا ہے؛ پرانا فوراً کام کرنا بند کر دیتا ہے، اختیارات اور لاگ برقرار رہتے ہیں۔
  • منسوخ کریں — فوراً اور ہمیشہ کے لیے، اگلی درخواست کو 401 ملے گا۔

کلید Authorization: Bearer cnk_… ہیڈر سے بھیجی جاتی ہے (یا X-Api-Key: cnk_…)۔ اسے صرف سرور پر رکھیں — نہ براؤزر میں اور نہ موبائل ایپ میں۔

مرحلہ 2۔ پہلی درخواستیں#

KEY=cnk_ваш_ключ
API=https://api.cenaly.com/public-api/v1

# что умеет ключ: права, точки, лимит
curl -H "Authorization: Bearer $KEY" "$API/me"

# лиды, свежие сверху (20 на страницу)
curl -H "Authorization: Bearer $KEY" "$API/contacts?limit=20"

# поиск по имени, почте или телефону
curl -H "Authorization: Bearer $KEY" "$API/contacts?q=anna"

جواب ہمیشہ ایک لفافے میں ہوتا ہے:

{
  "meta": { "status": 200, "requestId": "…", "nextCursor": "WyIyMDI2LTEwLTA0…" },
  "data": { "total": 128, "contacts": [ { "id": "…", "status": "lead", "name": "Анна", "updatedAt": "2026-10-04T09:12:00Z" } ] }
}

اگلا صفحہ — وہی درخواست cursor=<meta.nextCursor> کے ساتھ؛ nextCursor نہ ہو تو مزید صفحات نہیں۔ خرابی — {"meta": {...}, "error": {"code": "…"}}۔

برانچ۔ اگر کلید کو ایک ہی برانچ تک رسائی ہو تو اسے بتانے کی ضرورت نہیں۔ اگر کئی ہوں — location=<برانچ کی id> شامل کریں (فہرست — GET /v1/locations)، ورنہ جواب 400 location_required آئے گا۔

آپ کے user_id کے ذریعے خصوصیات اور ایونٹس۔ ہمارے لیڈ کی id محفوظ رکھنا لازمی نہیں: ?by=user_id شامل کریں، اور پتہ آپ کا صارف شناخت کنندہ بن جائے گا۔ اس user_id والا لیڈ ابھی نہ ہو تو ہم اسے بنا دیں گے۔

# свойства: операции update_or_create, set_once, add, delete, append, union, exclude
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"ops":[{"op":"update_or_create","key":"$email","value":"anna@example.com"},
              {"op":"add","key":"orders","value":1},
              {"op":"union","key":"interests","value":"yoga"}]}' \
  "$API/contacts/u-1001/props?by=user_id"

# события пачкой (до 100), повтор с тем же id засчитывается один раз
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"events":[{"id":"ord-5531","userId":"u-1001","name":"order_paid","props":{"sum":45,"currency":"GEL"}}]}' \
  "$API/events"

# ответ в диалоге и смена статуса
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"text":"Здравствуйте! Заказ передан курьеру."}' "$API/conversations/<id>/reply"
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"status":"resolved"}' "$API/conversations/<id>/status"

تحریر اسی قطار سے گزرتی ہے جس سے پینل کی تبدیلیاں: تبدیلیاں سیکنڈوں میں لاگو ہوتی ہیں، اور user_id کے ذریعے تحریر کا جواب 202 ہوتا ہے pending کے ساتھ۔ لیڈ کے کارڈ میں تحریر کرنے والا «API: <کلید کا نام>» کے طور پر نظر آتا ہے۔

طریقے#

طریقہ کیا کرتا ہے اجازت
GET /v1/me, GET /v1/locations کلید، اجازتیں، برانچیں —
GET /v1/contacts لیڈز: status (anon, lead, user)، q، limit، cursor contacts:read
GET /v1/contacts/{id} کارڈ: خصوصیات، ٹیگز، واقعات کا خلاصہ contacts:read
POST /v1/contacts/{id}/props خصوصیات بطور آپریشنز (زیادہ سے زیادہ 250) یا {"props":{…}} contacts:write
POST / DELETE /v1/contacts/{id}/tags لیڈ کے ٹیگز contacts:write
POST /v1/contacts/merge دو کارڈز کا انضمام: پیش منظر، پھر "apply": true contacts:write
POST /v1/contacts/{id}/erase متعلقہ شخص کی درخواست پر حذف کرنا ("confirm": true) contacts:write
GET /v1/contacts/{id}/events لیڈ کے واقعات کی فیڈ events:read
POST /v1/contacts/{id}/events, POST /v1/events واقعات (ایک بار میں زیادہ سے زیادہ 100) events:write
GET /v1/contacts/{id}/conversations لیڈ کی گفتگو conversations:read
POST /v1/contacts/{id}/messages لیڈ کو اس کی آخری گفتگو میں پیغام بھیجنا messages:send
GET /v1/conversations, /{id}, /{id}/messages گفتگو اور پیغامات conversations:read
POST /v1/conversations/{id}/reply آپریٹر کا جواب یا نوٹ ("type": "note") conversations:write
POST /v1/conversations/{id}/status, /assign, /tags حیثیت، ذمہ دار، لیبل conversations:write
GET /v1/segments, GET /v1/segments/{id}/contacts سیگمنٹس اور ان کے شرکا segments:read

ہر طریقے کے فیلڈز، مثالیں اور ایرر کوڈز حوالہ جات میں موجود ہیں۔

مرحلہ 3۔ ویب ہکس#

ویب ہکس برانچ کی سطح پر ترتیب دیے جاتے ہیں: چیٹ → ترتیبات → ویب ہکس — https پتہ، واقعات اور دستخط کا خفیہ کوڈ۔ گفتگو کے واقعات (نئی گفتگو، نیا پیغام، حیثیت، درجہ بندی، لیبل) کے ساتھ لیڈ کے واقعات بھی شامل ہو گئے ہیں:

واقعہ کب آتا ہے
lead.created نیا لیڈ آیا (رابطہ چیٹ، فارم میں چھوڑا گیا یا API کے ذریعے بنایا گیا)
lead.props_changed لیڈ کی خصوصیات بدلیں — کلیدوں کی فہرست changedProps میں
lead.event_tracked لیڈ کا کوئی واقعہ ہوا؛ بطور ڈیفالٹ آپ کے تمام واقعات بغیر سسٹم والوں کے ($…)، ناموں کی فہرست «کون سے واقعات بھیجنے ہیں» فیلڈ سے طے ہوتی ہے
message.goal_reached لیڈ نے پیغام کا ہدف حاصل کر لیا (پاپ اپ، مہم)
{
  "event": "lead.event_tracked",
  "deliveryId": "WD…",
  "at": "2026-10-04T09:12:03Z",
  "webhookId": "…",
  "locationId": "…",
  "contact": { "id": "…", "status": "user", "userId": "u-1001", "props": { "orders": 3 }, "tags": ["vip"] },
  "leadEvent": { "name": "order_paid", "at": "2026-10-04T09:12:00Z", "props": { "sum": 45 } }
}

لیڈ کا نام، ای میل اور فون نمبر صرف اسی صورت میں باڈی میں شامل ہوتے ہیں جب ویب ہک میں «مہمان کے روابط بھیجیں» کا چیک باکس فعال ہو۔ دستخط کی تصدیق — ویب ہک کے خفیہ کوڈ سے باڈی کا HMAC-SHA256:

# заголовок X-Meni-Signature: sha256=<hex>
echo -n "$BODY" | openssl dgst -sha256 -hmac "$SECRET"

5 سیکنڈ کے اندر 2xx جواب دیں — ورنہ ترسیل دہرائی جائے گی؛ ناکامیوں کی طویل سیریز کے بعد ویب ہک بند ہو جاتا ہے، اور یہ ترتیبات میں نظر آتا ہے۔ نقل کو deliveryId سے چھانٹیں۔

پابندیاں#

  • فی کلید 60 درخواستیں فی منٹ؛ اس سے زیادہ پر 429 اور Retry-After ہیڈر۔ باقی مقدار X-RateLimit-* میں۔
  • فی صفحہ زیادہ سے زیادہ 200 ریکارڈز (بطور ڈیفالٹ 50)، ایک بیچ میں زیادہ سے زیادہ 100 واقعات، فی درخواست زیادہ سے زیادہ 250 خصوصیات کے آپریشنز، ایک بار میں زیادہ سے زیادہ 30 ٹیگز۔
  • فی اکاؤنٹ زیادہ سے زیادہ 20 فعال کلیدیں۔
  • کلید کی کالز کا جرنل 30 دن محفوظ رہتا ہے: وقت، طریقہ، پاتھ ٹیمپلیٹ (بغیر id اور باڈی)، جواب کا کوڈ، دورانیہ۔
  • API کے ذریعے بھیجے گئے واقعات لیڈ کے کارڈ میں (فیڈ، خلاصہ، سیگمنٹس) شامل ہوتے ہیں، مگر وزٹ کے تجزیات کے خام جرنل میں نہیں۔
  • لیڈ کو صرف موجودہ گفتگو میں پیغام بھیجا جا سکتا ہے: گفتگو نہ ہو تو جواب 409 no_conversation۔

مسائل کا حل#

جواب کیا مطلب ہے کیا کرنا ہے
401 api_key_missing / api_key_invalid درخواست میں کلید نہیں، یا وہ غلط، منسوخ یا میعاد ختم شدہ ہے ہیڈر چیک کریں؛ ضرورت ہو تو کلید دوبارہ جاری کریں
403 scope_required کلید کے پاس مطلوبہ اجازت نہیں کلید کی اجازتیں — اجازت شامل کریں
400 location_required کلید کے لیے کئی برانچیں دستیاب ہیں location=<id> شامل کریں
404 location_not_found کلید کی برانچوں میں یہ برانچ نہیں GET /v1/locations سے موازنہ کریں
404 not_found لیڈ یا گفتگو موجود نہیں اپنے id کے لیے ?by=user_id استعمال کریں
429 rate_limited فی منٹ 60 سے زیادہ درخواستیں Retry-After سیکنڈ انتظار کریں، واقعات کو بیچوں میں گروپ کریں
502 upstream_error عارضی خرابی درخواست بعد میں دہرائیں

ہر درخواست کالز کا جرنل ٹیب میں نظر آتی ہے — جواب کے کوڈ اور کلید کے نام کے ساتھ۔

عام سوالات#

کیا API براؤزر سے کال کی جا سکتی ہے؟ نہیں: کلید برانچ کے تمام لیڈز تک رسائی دیتی ہے۔ API اپنے سرور سے کال کریں۔

user_id لیڈ کے id سے کیسے مختلف ہے؟ لیڈ کا id ہمارا کارڈ شناخت کنندہ ہے۔ user_id آپ کا صارف شناخت کنندہ ہے (CRM میں نمبر، سائٹ پر اکاؤنٹ کا id)؛ ?by=user_id کے ساتھ کارڈ کو اسی سے مخاطب کیا جا سکتا ہے۔

واقعہ دوبارہ بھیجنے پر کیا ہوگا؟ ایک ہی id والا واقعہ صرف ایک بار شمار ہوتا ہے — نیٹ ورک کی خرابی پر درخواست بے دھڑک دہرائی جا سکتی ہے۔

کیا ہر برانچ کے لیے الگ کلید درکار ہے؟ نہیں: ایک کلید کئی برانچوں کے ساتھ کام کر سکتی ہے، برانچ location پیرامیٹر سے منتخب ہوتی ہے۔

متعلقہ حصے#

Was this article helpful?