Ашық API & API кілттері

Жұмыс кеңістігіңізге бағдарламалық қолжетімділік — жобалар, сеанстар, арнайы оқиғалар мен сегменттерді оқу және сеанстарға тұтынушы ID-лерін қосу — жұмыс кеңістігімен шектелген API кілттерімен қорғалған.

1. Шолу

MousePlayer API жұмыс кеңістігіңізден деректерді өз басқару тақталарыңызға, деректер қоймасына немесе ішкі құралдарға алуға мүмкіндік береді. Сеанстарға тұтынушы ID-ін қосудан басқа (identify, жазу ауқымы бар кілт қажет, «Кілт ауқымдары» бөлімін қараңыз), ол тек оқуға арналған: API арқылы деректерді өзгерту не жою мүмкін емес.

  • Негізгі URL: https://www.mouseplayer.com/api/v1/
  • Барлық жауап JSON түрінде.
  • Әр сұрау API кілтімен расталып, сол кілт тиесілі жұмыс кеңістігімен автоматты шектеледі — бір жұмыс кеңістігінің кілті басқа кеңістіктің деректерін кездейсоқ та көре алмайды.
  • Толық сеанс қайта ойнату жазбасы (тінтуір қозғалыстары, DOM суреттері) API арқылы берілмейді . Сеанс метадеректерін, бет қаралымдарын, арнайы оқиғалар мен сегменттерді аласыз — өңделмеген қайта ойнату деректерін тасымалдамай есептер мен тақталар жасауға жеткілікті.

2. Аутентификация

API кілттерін есептік жазба мәзіріндегі API кілттері бөлімінде жасаңыз және басқарыңыз (/api-keys). Кілттерді тек жұмыс кеңістігінің иелері мен әкімшілері жасай немесе күшін жоя алады.

Кілтті құпия сақтаңыз. Ол жұмыс кеңістігіңіздегі барлық дерекке оқу рұқсатын береді. Толық кілт жасалғаннан кейін дәл бір рет көрсетіледі — оны құпиясөз менеджерінде не құпиялар қоймасында сақтаңыз. Жоғалтсаңыз, күшін жойып, жаңасын жасаңыз.

Кілтті әр сұраудың мына тақырыбында Bearer токені ретінде жіберіңіз: Authorization :

# List projects in your workspace curl -H "Authorization: Bearer mp_live_..." \ https://www.mouseplayer.com/api/v1/projects

Жоқ, қате пішімдегі немесе күші жойылған кілттер мына жауапты алады: 401 :

{ "error": "Invalid or missing API key. Use: Authorization: Bearer <key>" }

Жоспар талабы

REST API мына жоспарларға кіреді: Business және Enterprise . Жоспар жұмыс кеңістігінің иесінен алынады, сондықтан шақырылған топ мүшелеріне де қолданылады. Тексеру тек кілт жасалғанда емес, әр сұраудаорындалады — жұмыс кеңістігі төменгі жоспарға ауысса, бар кілттер тоқтап, мына жауапты қайтарады: 403.

Кілт ауқымдары

Әр кілттің ауқымы өз префиксінде бар. Сондықтан кілтке қарап-ақ не істейтінін білуге болады — мына файлда: .env, өтінімде немесе терминалда.

ПрефиксМәні
mp_ro_Тек оқу. Жобалар, сеанстар, оқиғалар және сегменттерді оқиды. Ештеңе өзгерте алмайды.
mp_rw_Оқу және жазу. Жоғарыдағылардың бәрі және identify соңғы нүктесі арқылы тұтынушы ID-лерін қосу.
Кілт жасағанда ауқымын таңдаңыз; әдепкісі тек оқу. Жазатын соңғы нүктеде тек оқу кілтін қолдану мына күйді қайтарады: 403 және кілттің ауқымы мен соңғы нүктеге не керегін айтатын хабар. Ауқымды кейін өзгерту мүмкін емес — жаңа кілт жасап, ескісінің күшін жойыңыз.

3. Сұрау жиілігінің шектері

Әр API кілті үшін шек — минутына 60 сұрау, жылжымалы тереземен есептеледі. Асқаннан кейін терезе босағанша сұраулар мына жауапты алады: 429 :

{ "error": "Rate limit exceeded. Max 60 requests per minute." }

Жоғарырақ шек қажет нәрсе жасап жатырсыз ба? Мына бөлім арқылы хабарласыңыз: Қолдау және қолдану жағдайыңызды айтыңыз.

4. Соңғы нүктелер

GET/api/v1/projects

Жұмыс кеңістігіңіздегі әр жобаны (бақыланатын ресурсты) тізімдейді.

{ "data": [ { "channelid": "955a45df5ee842cb", "domain": "yourdomain.com", "status": "active", "total_traffic_bytes": 27304765, "created_at": "2026-07-19 22:06:39", "last_used": "2026-08-05 01:12:55" } ] }

GET/api/v1/projects/{channelid}/sessions

Жоба үшін жазылған келуші сеанстарын ең жаңасынан бастап тізімдейді. Беттерге бөлінеді.

Сұрау параметріСипаттама
pageБет нөмірі, әдепкісі — 1.
per_pageӘр беттегі нәтиже саны, әдепкісі — 25, ең көбі — 100.
sinceТек осы күні не одан кейін басталған сеанстар (YYYY-MM-DD).
untilТек осы күні не одан бұрын басталған сеанстар.
{ "data": [ { "session_id": "s_kfmist058_1785795295504", "visitor_id": "v_sv90jdpzo_1785795296042", "custom_user_id": null, "country": "DE", "device_type": "desktop", "is_bot": 0, "start_time": "2026-08-04 00:14:56", "end_time": "2026-08-04 00:16:41", "duration_seconds": 105 } ], "pagination": { "page": 1, "per_page": 25, "total": 142, "total_pages": 6 } }

GET/api/v1/sessions/{session_id}

Бір сеанстың метадеректері және бет қаралымдары. Толық қайта ойнату деректері әдейі берілмейді — ол үшін басқару тақтасының ойнатқышын қолданыңыз.

{ "data": { "session_id": "s_kfmist058_1785795295504", "channelid": "955a45df5ee842cb", "visitor_id": "v_sv90jdpzo_1785795296042", "country": "DE", "asn_org": "Deutsche Telekom AG", "referrer": "https://duckduckgo.com/", "device_type": "desktop", "start_time": "2026-08-04 00:14:56", "end_time": "2026-08-04 00:16:41", "duration_seconds": 105, "pageviews": [ { "pageview_id": 1199, "url": "https://yourdomain.com/pricing", "page_title": "Pricing", "start_time": "2026-08-04 00:14:56", "end_time": "2026-08-04 00:16:41" } ] } }

GET/api/v1/sessions/{session_id}/events

Сеанс кезінде жіберілген арнайы оқиғалар (мына әдіспен жіберетін оқиғаларыңыз: mp('event', ...)), параметрлерімен бірге.

{ "data": [ { "event_id": 61, "pageview_id": 1199, "event_name": "add_to_cart", "created_at": "2026-08-04 00:14:59", "params": { "item_id": "SKU_98765", "price": 299.99 } } ] }

GET/api/v1/projects/{channelid}/segments

Жоба үшін анықталған келуші сегменттерін тізімдейді (жобаға тән және бүкіл жұмыс кеңістігінің сегменттері).

{ "data": [ { "segment_id": 4, "name": "High Intent Visitors", "description": "Pageviews > 5", "badge_color": "cyan", "is_global": 0, "created_at": "2026-08-03 00:00:43" } ] }

5. Серверіңізден тұтынушы ID-ін қосу

Браузер көбіне кім отырғанын білмейді. B2B өнімінде сәйкестік жүйеге кіргеннен кейін серверіңізде анықталады — ал дүкенде тапсырыс расталғанда. Осы соңғы нүкте дәл сол сәтке арналған.

POST /api/v1/sessions/{session_id}/identify
Authorization: Bearer mp_live_xxxxxxxxxxxx
Content-Type: application/json

{"user_id": "customer-4711"}

// 200 OK
{"data": {"session_id": "s_a1b2c3", "user_id": "customer-4711",
          "changed": true, "previous": null, "webhook_queued": true}}

Одан кейін ID сеанс тізімінде көрінеді және ізделеді, ал мына session_identified вебхук іске қосылады — CRM жүйеңізге осылай жетеді.

Бір ID-мен екі рет шақыру қауіпсіз. Жауап мына мәнмен қайтады: "changed": false және вебхук жіберілмейді. Қайталанған тапсырыс екінші әлеуетті тұтынушы жасамайды.
КүйіҚашан
400Өріс жоқ, user_id 128 таңбадан ұзын немесе басқару таңбалары бар. Біз қысқартпай, қабылдамаймыз — үнсіз қысқарған ID CRM ішінде ештеңемен сәйкес келмесе де, сәтті көрінеді.
404Сеанс жоқ немесе жұмыс кеңістігіңізге тиесілі емес. Екеуіне әдейі бірдей жауап.
403Жұмыс кеңістігінің жоспарына API кірмейді.

6. Вебхуктар: қолтаңбаны тексеру

Вебхуктар әр жобаның Интеграцияларбөлімінде бапталады, қол қою құпиясы да сонда. Әр жеткізілімде мына тақырыптар бар:

ТақырыпМәні
X-MousePlayer-EventОқиға атауы, мысалы session_identified
X-MousePlayer-TimestampUnix секундтары — қол қойылатын мәтіннің бөлігі
X-MousePlayer-AttemptАлғашқы әрекетте 1, қайталауларда жоғарырақ
X-MousePlayer-Signaturesha256=<hex>

Қолтаңба — мына деректер бойынша есептелген HMAC-SHA256: timestamp + "." + raw body, кілт ретінде жобаның қолтаңба құпиясы қолданылады.

// PHP
$erwartet = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
if (!hash_equals($erwartet, $signature)) { http_response_code(401); exit; }

// Node
const expected = 'sha256=' + crypto.createHmac('sha256', secret)
                                     .update(timestamp + '.' + rawBody).digest('hex');
Қолтаңбаны JSON талдауынан бұрын дененің бастапқы нұсқасы бойынша есептеңіз. Қайта сериализациялау кілттердің ретін және бос орындарды өзгертеді, сондықтан қолтаңба ешқашан сәйкес келмейді. Уақыт белгісі бірнеше минуттан ескі сұрауларды да қабылдамаңыз — уақыт белгісі осы үшін қажет.

Жеткізу және қайталап жіберу

Жеткізу сәтсіз болса, мына аралықтардан кейін қайталанады: 1 мин, 5 мин, 15 мин, 1 сағ және 6 сағ, содан кейін тоқтатылады. 4xx жауаптарының ішінен 408 және 429 жауаптарынан басқалары қайта жіберілмейді — олар "қазір емес" дегенді емес, "бұлай болмайды" дегенді білдіреді. Мына жауапты 2xx жылдам қайтарып, жұмысты кейін орындаңыз; жеткізу 10 секундтан кейін уақыт шегіне жетеді.

Қолжетімді оқиғалар

ОқиғаІске қосылуы
session_identifiedСеанс браузерден немесе API арқылы алғаш рет клиент идентификаторын алғанда — бір рет
session_endedСеанс жабылғанда бір рет
goal_reachedӘр сеанста бір рет, теңшелетін оқиға мақсаттарыңыздың бірін орындағанда. Тек «оқиға» түріндегі мақсаттар — URL, ұзақтық, бет қаралымы және шұңқыр мақсаттары бағаланбайды. Мына деректер беріледі: goal_id, goal_name, goal_value және currency.
high_value_sessionКелуші белгілі бір күні осы жобаның құндылық шегінен алғаш рет асқанда. Шек өз бағаларыңыздың үлестірімінен есептеледі (соңғы 90 күннің 90-процентилі), тұрақты сан емес және кемінде 20 келуші бағаланғанға дейін болмайды. Мына деректер беріледі: visitor_id, value_score, threshold және сол күннің қарауға ең лайық сеансы.
funnel_dropoffШұңқырларыңыздың біріне кіріп, оны аяқтамаған сеанстың соңында. Тоқтаған қадамды көрсетеді (dropped_at). Шығып кету — оқиғаның болмауы, сондықтан оны тек сеанс аяқталғаннан кейін білуге болады. Шұңқырға мүлде кірмеген сеанстар шығып кету болып саналмайды және бұл оқиғаны іске қоспайды.
high_friction_sessionӘр сеанста бір рет, кедергілер бағасы шекке алғаш жеткенде (әдепкіде 60, ең жоғары баға — 100). Мына деректер беріледі: friction_score, оның негізіндегі сигналдар (reasons) және шектен асырған сигнал (trigger).
element_brokenБақыланатын элемент бірнеше күн бойы тексерілген ешбір бет қаралымында табылмағанда бір рет — әдетте сайт қайта іске қосылғаннан кейін. Белгілеу қайтадан сәйкес келіп, тағы бұзылғаннан кейін ғана қайта іске қосылады. Бұл оқиға ешбір сеансқа тиесілі емес: session_id және session_url мәндері null, link_url оның орнына белгілеуді ашады, ал subject_id белгілеуді атайды — барлық нұсқада бірдей, сондықтан қайта бұзылған жаңа селектор ашық инцидентке қосылады. Мына деректер беріледі: rule_id, rule_name, selector, page, checked_page_views, window_days және last_matched. Келуші деректері жоқ.
element_recoveredМына оқиға үшін мәселенің шешілгені туралы хабарлама: element_broken: белгілеу қайтадан нақты элементті тапқанда — бет қаралымдарының аз болуы жеткіліксіз. Тек мына оқиға element_broken вебхук арқылы жіберілсе ғана жіберіледі және жеке қосқышы жоқ: мына оқиғаға жазылу element_broken оны да қамтиды. Мына мән бірдей: subject_id, сондықтан PagerDuty инцидентті шешеді, ал Opsgenie ескертуді жабады. Қосымша мына деректер беріледі: matched_page_views және checked_page_views .
anomaly_detectedКүніне бір рет, кешегі күн алдындағы 28 күннен айқын ерекшеленгенде: сеанстар едәуір азайса немесе көбейсе, мақсатқа жету үлесі төмендесе, кедергілері немесе JS қателері бар сеанстар көбейсе. Бірдей көрсеткіш пен бағыт бір апта бойы қайта хабарланбайды (өзгертуге болады). Бұл оқиға ешбір сеансқа тиесілі емес: session_id және session_url мәндері null, link_url жобаның шолуын ашады, ал subject_id көрсеткішті, бағытты және күнді атайды. Мына деректер беріледі: metric (sessions, goal_rate, friction_rate, js_error_rate, lcp_p75, inp_p75, cls_p75), direction, day, value, expected, sessions, robust_z, z_score және оқуға түсінікті summary және hint. Келуші деректері жоқ. Web Vitals үшін measurements мына өрісті алмастырады: sessions, ал page (бүкіл сайт үшін бос) және device (desktop немесе mobil) оқиғаның қайда болғанын көрсетеді; link_url содан кейін Web Vitals қойындысын ашады.
rage_clickАшулы басу анықталғанда
error_detectedИнтерфейсте ерекше жағдай туындағанда
ceӨзіңіздің теңшелетін оқиғаларыңызға ортақ жазылым. Ол жоғарыдағы оқиғаларды қамтымайды — олардың жеке қосқыштары бар.

7. Қателер & күй кодтары

КүйМағынасы
200Сәтті.
401API кілті жоқ, пішімі қате немесе қайтарып алынған.
404Сұралған жоба немесе сеанс жоқ не сіздің жұмыс кеңістігіңізге тиесілі емес.
429Жиілік шегі асқан — осы кілтпен минутына 60 сұраудан артық жіберіп жатырсыз.
403Жұмыс кеңістігінің тарифіне REST API кірмейді. Хабарламада қажетті тариф те, ағымдағы тариф те аталады.

8. Қауіпсіздік ескертпелері

  • Тек оқуға арналған кілттер (mp_ro_) ештеңені өзгерте алмайды. Жазу кілттері (mp_rw_) тек клиент идентификаторларын тіркей алады; ешбір кілт деректерді жоя алмайды немесе бастапқы қайта ойнату деректерін экспорттай алмайды.
  • Әр сұрау автоматты түрде кілттің өз жұмыс кеңістігімен шектеледі — басқа жұмыс кеңістігінің идентификаторын беріп, бөтен деректерді көру мүмкін емес.
  • Кілтті кез келген уақытта мына жерден қайтарып алыңыз: /api-keys; қайтарып алу бірден күшіне енеді.
  • API кілтін құпиясөздей сақтаңыз. Оны байқамай ашық репозиторийге коммиттесеңіз, бірден қайтарып алып, жаңасын жасаңыз.

Оқиғалардың шектелген беттері (API v1, 14 қазан 2026)

GET /api/v1/sessions/{session_id}/events әдепкіде 100 оқиғаға дейін қайтарады. per_page мәнін 1 мен 100 аралығындағы бүтін санға орнатыңыз. Келесі сұрауда cursor мәнін өзгертпей жіберіп, pagination.next_cursor бойынша өтіңіз; сеанс пен жұмыс кеңістігін өзгертпеңіз. Оқиғалар created_at және event_id бойынша реттеледі. Курсорларға қолтаңба қойылады және олар сол сеанс пен жұмыс кеңістігіне байланыстырылған. Жалпы сан немесе сандық бет нөмірі қайтарылмайды.

Қолданыстағы data массиві мен params картасы қолжетімді болып қалады. pagination.returned — нақты қайтарылған сан; pagination.has_more келесі бет бар екенін көрсетеді. Аяқталғанда next_cursor мәні null болады. Жауап 524288 байтпен шектеледі, сондықтан бетте per_page мәнінен аз оқиға болуы мүмкін. Әр оқиға үшін ең көбі 128 параметр жолы қайтарылады; көбірек болса, params_truncated мәні true болады. Жеке жолдық параметрлерде дерекқордың 255 таңбалық шегі сақталады. Қысқартылған параметрлер бұл эндпоинт арқылы қолжетімсіз. per_page мәнін азайту параметрлер шегін көтермейді.

Бет өлшемі жарамсыз болса, курсор өзгертілсе немесе басқа сеансқа/жұмыс кеңістігіне тиесілі болса, 400 қайтарылады. Жеке оқиға деректерінің көлемі тым үлкен болса, 413 қайтарылады. Қолданыстағы қолжетімділік тексерістері жағдайға қарай бұрынғыдай 401, 403, 404 немесе 409 қайтарады.

Шек өзгермейді: әр API кілтіне минутына 60 аутентификацияланған сұрау. Шек таусылғанда 429 (Retry-After: 60) қайтарылады. Redis немесе шектеу тетігі қолжетімсіз болса, сұраулар 503 (Retry-After: 5) қайтарады; сұраулар ешқашан шектеусіз қабылданбайды. Retry-After мәнін сақтап, кездейсоқ кідіріс қосыңыз; тығыз циклде қайта сұрамаңыз. Оқиғалар дерекқорының ақаулары да 503 қайтарады. Курсорлар деректердің өзгермейтін суретін бекітпейді: ескі уақыт белгілерімен қатар енгізілген жазбалар үшін қайтадан толық қарап шығу қажет болуы мүмкін.

GET /api/v1/sessions/s_example/events?per_page=25
GET /api/v1/sessions/s_example/events?per_page=25&cursor=SIGNED_CURSOR

/api/v1/native — жергілікті SDK алдын ала қарауына арналған, тек Dev ортасында қолжетімді серверлік басқару маршруты. Өндірісте ол өшірулі қалады. Серверлік Bearer кілттеріне list/replay үшін read ауқымы, ал register/grant/delete/disable үшін write ауқымы қажет. Жергілікті алдын ала қараудың қолжетімділігіне қосымша тексерістер қолданылады. Тұрақты жұмыс кеңістігі API кілттерін мобильді қолданбаға ешқашан ендірмеңіз.