C cenaly.com
Ахәыдаԥсаны алагара

Иаарту API-и авебхукқәеи

Азинқәа змоу акульчқәа, алидқәа, аҟазшьақәа, ахҭысқәа, адиалогқәа, асегментқәа р-REST API, алид ҿыцқәеи ахҭысқәеи рганахьала авебхукқәа — curl аҿырԥштәқәа рыла

On this page 9

Ажәларбжьаратә API авебхукқәеи

REST API аԥхьаҩ аизгара, саит аԥшьаҭ, ма бот шәара иаҵанакуа алидқәеи адиалогқәеи 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. Интеграциақәа аарты, нас аԥхьаҟа 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_…) ала ишьҭуеит. Уи сервер аҟны мацара шәыԥхьаӡа — браузер аҟны ма мобилтә приложение аҟны шәыҭаӡом.

Ахԥатәи ашьаҟа. Аҳәарақәа раԥхьатәи#

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"

2xx шәҭакы 5 секундк рҟынӡа — иадаҟьамзар анагӡара даҽазны иаҵалоит; аҭацәра ду ашьҭахь вебхук иаԥыхоит, уи аԥшьашарақәа рҟны иаарԥшуп. Адубликатқәа 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 алид ма адиалог ыҟам шәидқәа рзы ?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?