Açıq API & API açarları
İş sahənizə proqram vasitəsilə giriş — layihələri, seansları, fərdi hadisələri və seqmentləri oxuyun, müştəri ID-lərini seanslara bağlayın — iş sahəsi ilə məhdud API açarları ilə qorunur.
1. İcmal
MousePlayer API məlumatları iş sahənizdən öz idarə panellərinizə, məlumat anbarınıza və ya daxili alətlərinizə çıxarmağa imkan verir. Müştəri ID-lərinin seanslara bağlanması (identify, yazma səlahiyyətli açar tələb edir, Açar səlahiyyətlərinə baxın) istisna olmaqla yalnız oxumaüçündür: API vasitəsilə heç bir məlumat dəyişdirilə və ya silinə bilməz.
- Əsas URL:
https://www.mouseplayer.com/api/v1/ - Bütün cavablar JSON-dur.
- Hər sorğu API açarı ilə autentifikasiya olunur və avtomatik həmin açarın aid olduğu iş sahəsi ilə məhdudlaşır — bir iş sahəsinin açarı başqa iş sahəsinin məlumatını təsadüfən belə görə bilməz.
- Tam seans təkrar oynatma qeydi (siçan hərəkətləri, DOM anlıq görüntüləri) API vasitəsilə təqdim edilmir . Seans metaməlumatlarını, səhifə baxışlarını, fərdi hadisələri və seqmentləri alırsınız — xam təkrar oynatma yükünü daşımadan hesabat və idarə panelləri qurmaq üçün kifayətdir.
2. Autentifikasiya
API açarlarınızı hesab menyunuzda bu bölmədə yaradın və idarə edin: API açarları (/api-keys). Açarları yalnız iş sahəsinin sahibləri və adminlər yarada və ya ləğv edə bilər.
Açarınızı gizli saxlayın. İş sahənizdəki hər şeyə oxuma girişi verir. Tam açar məhz bir dəfə, yaradıldıqdan dərhal sonra göstərilir — parol menecerində və ya məxfi məlumat anbarında saxlayın. İtirsəniz, ləğv edib yenisini yaradın.
Açarı hər sorğunun bu başlığında Bearer tokeni kimi göndərin: Authorization :
Çatışmayan, yanlış formatlı və ya ləğv edilmiş açarlar bu cavabı alır: 401 :
Plan tələbi
REST API bu planlara daxildir: Business və Enterprise . Plan iş sahəsinin sahibindən götürülür, buna görə dəvət edilmiş komanda üzvləri də ondan yararlanır. Yoxlama yalnız açar yaradılarkən deyil, hər sorğudaişləyir — iş sahəsinin planı aşağı salınsa, mövcud açarlar dayanıb bunu qaytarır: 403.
Açar səlahiyyətləri
Hər açar səlahiyyətini öz prefiksində daşıyır, buna görə ona baxmaqla nə etdiyini bilmək olar — bu yerdə: .env, sorğuda və ya terminalda.
| Prefiks | Məna |
|---|---|
mp_ro_ | Yalnız oxuma. Layihələri, seansları, hadisələri və seqmentləri oxuyur. Heç nəyi dəyişə bilməz. |
mp_rw_ | Oxuma və yazma. Yuxarıdakıların hamısı və əlavə olaraq identify son nöqtəsi ilə müştəri ID-lərinin bağlanması. |
403 və açarın nə olduğunu, son nöqtənin nə tələb etdiyini bildirən mesaj verir. Səlahiyyət sonradan dəyişdirilə bilməz — yeni açar yaradıb köhnəni ləğv edin.3. Sorğu tezliyi limitləri
Hər API açarı bu limitlə məhdudlaşdırılır: dəqiqədə 60 sorğu, sürüşən zaman aralığı üzrə izlənir. Aşdıqdan sonra aralıq boşalanadək sorğular bu cavabı alır: 429 :
Daha yüksək limit tələb edən bir şey qurursunuz? Bu bölmədən əlaqə saxlayın: Dəstək və istifadə halınızı bildirin.
4. Son nöqtələr
GET/api/v1/projects
İş sahənizdəki bütün layihələri (izlənən resursları) siyahıya alır.
GET/api/v1/projects/{channelid}/sessions
Layihə üçün qeydə alınmış ziyarətçi seanslarını, ən yenilər əvvəl olmaqla siyahıya alır. Səhifələnir.
| Sorğu parametri | Təsvir |
|---|---|
page | Səhifə nömrəsi, standart: 1. |
per_page | Hər səhifədə nəticə sayı, standart: 25, maksimum: 100. |
since | Yalnız bu tarixdə və ya sonra başlayan seanslar (YYYY-MM-DD). |
until | Yalnız bu tarixdə və ya əvvəl başlayan seanslar. |
GET/api/v1/sessions/{session_id}
Tək seansın metaməlumatları və səhifə baxışları. Tam təkrar oynatma yükü qəsdən daxil deyil — onun üçün idarə panelinin pleyerindən istifadə edin.
GET/api/v1/sessions/{session_id}/events
Seans ərzində baş vermiş fərdi hadisələr (bu üsulla göndərdiyiniz eyni hadisələr: mp('event', ...)), parametrləri ilə birlikdə.
GET/api/v1/projects/{channelid}/segments
Layihə üçün müəyyən edilmiş ziyarətçi seqmentlərini (həm layihəyə xüsusi, həm də bütün iş sahəsi üzrə) siyahıya alır.
5. Arxa tərəfinizdən müştəri ID-si bağlamaq
Brauzer çox vaxt qarşısında kimin olduğunu bilmir. B2B məhsulunda kimlik girişdən sonra — arxa tərəfinizdə müəyyənləşir. Mağazada sifariş təsdiqi ilə müəyyənləşir. Bu son nöqtə məhz həmin an üçündür.
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}}Sonra ID seans siyahısında görünür, orada axtarıla bilir və bu vebhuk: session_identified işə düşür — CRM sisteminizə belə çatır.
"changed": false və vebhuk göndərilmir. Təkrar sifariş ikinci potensial müştəri yaratmır.| Vəziyyət | Nə vaxt |
|---|---|
400 | Sahə çatışmır, user_id 128 simvoldan uzundur və ya daxilində idarəetmə simvolları var. Kəsmək əvəzinə rədd edirik — səssiz qısaldılmış ID CRM sisteminizdə heç nə ilə uyğun gəlməz, amma yenə uğur kimi görünər. |
404 | Seans mövcud deyil və ya iş sahənizə aid deyil. Hər ikisinə qəsdən eyni cavab verilir. |
403 | İş sahəsinin planına API daxil deyil. |
6. Vebhuklar: imzanın yoxlanması
Vebhuklar hər layihə üçün bu bölmədə tənzimlənir: İnteqrasiyalar, imzalama sirrini də orada tapırsınız. Hər çatdırılma bu başlıqları daşıyır:
| Başlıq | Məna |
|---|---|
X-MousePlayer-Event | Hadisənin adı, məsələn: session_identified |
X-MousePlayer-Timestamp | Unix saniyələri — imzalanan mətnin bir hissəsi |
X-MousePlayer-Attempt | İlk cəhddə 1, təkrar cəhdlərdə daha yüksək |
X-MousePlayer-Signature | sha256=<hex> |
İmza bu mətn üzərində HMAC-SHA256-dır: timestamp + "." + raw body, layihənizin imzalama sirri açar kimi istifadə olunur.
// 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');
Çatdırılma və təkrar cəhdlər
Uğursuz çatdırılma bu fasilələrlə yenidən sınanır: 1 dəq, 5 dəq, 15 dəq, 1 saat və 6 saat, sonra cəhdlər dayandırılır. 4xx Bu cavablardan başqa: 408 və 429 olan cavablar yenidən sınanmır — onlar "belə olmaz" deyir, "indi olmaz" deyil. Tez bu cavabı verin: 2xx və işi sonra görün; çatdırılma 10 saniyədən sonra vaxt limitinə çatır.
Əlçatan hadisələr
| Hadisə | İşə düşdüyü vaxt |
|---|---|
session_identified | Seans ilk dəfə müştəri ID-si alanda — brauzerdən və ya API-dən |
session_ended | Bir dəfə, seans bağlananda |
goal_reached | Fərdi hadisə hədəflərinizdən birini yerinə yetirdikdə hər seansda bir dəfə. Yalnız “hadisə” növlü hədəflər — URL, müddət, səhifə baxışı və qıf hədəfləri qiymətləndirilmir. Bu sahələri daşıyır: goal_id, goal_name, goal_value və currency. |
high_value_session | Ziyarətçi müəyyən gündə bu layihənin dəyər həddini ilk dəfə keçdikdə. Hədd öz xal bölgünüzdən çıxarılır (son 90 günün 90-cı persentili), sabit rəqəm deyil və ən azı 20 ziyarətçi qiymətləndirilənədək mövcud olmur. Bu sahələri daşıyır: visitor_id, value_score, threshold və həmin günün baxmağa ən uyğun seansını. |
funnel_dropoff | Qıflarınızdan birinə daxil olub tamamlamayan seansın sonunda. Dayandığı addımı bildirir (dropped_at). Ayrılma hadisənin olmamasıdır, buna görə yalnız seans bitdikdən sonra məlum ola bilər. Qıfa heç daxil olmayan seanslar ayrılma deyil və hadisə yaratmır. |
high_friction_session | Seansın maneə xalı ilk dəfə həddə çatanda hər seansda bir dəfə (standart 60, maksimum 100). Bu sahəni: friction_score, onun arxasındakı siqnalları (reasons) və həddi keçirən siqnalı daşıyır (trigger). |
element_broken | İzlənən element bir neçə gün ərzində yoxlanmış heç bir səhifə baxışında heç nə tapmadıqda bir dəfə — adətən sayt yeniləndikdən sonra. Yalnız işarələmə yenidən uyğun gəlib bir daha pozulduqdan sonra təkrar işə düşür. Bu hadisə heç bir seansaaid deyil: session_id və session_url bu dəyərdədir: null, link_url əvəzində işarələməni açır və subject_id işarələməni adlandırır — hər versiya üçün eyni, beləliklə yenidən pozulan yeni selektor açıq insidentə qoşulur. Bu sahələri daşıyır: rule_id, rule_name, selector, page, checked_page_views, window_days və last_matched. Ziyarətçi məlumatı yoxdur. |
element_recovered | Bu hadisə üçün bərpa bildirişi: element_broken: işarələmə həqiqətən yenidən element tapdıqda bir dəfə — səhifə baxışlarının çox az olması kifayət deyil. Yalnız bu hadisə: element_broken vebhukla göndərilibsə göndərilir və öz ayrıca keçidi yoxdur: bu hadisəyə abunəlik: element_broken onu da əhatə edir. Eyni subject_idistifadə olunur, beləliklə PagerDuty insidenti həll edir, Opsgenie xəbərdarlığı bağlayır. Əlavə olaraq bu sahələri daşıyır: matched_page_views və checked_page_views . |
anomaly_detected | Dünən əvvəlki 28 gündən aydın fərqləndikdə gündə bir dəfə: xeyli az və ya çox seans, azalmış hədəfə çatma nisbəti, daha çox maneəli və ya JS xətalı seans. Eyni göstərici və istiqamət bir həftə susur (tənzimlənə bilər). Bu hadisə heç bir seansaaid deyil: session_id və session_url bu dəyərdədir: null, link_url layihə icmalını açır və subject_id göstəricini, istiqaməti və günü adlandırır. Bu sahəni daşıyır: metric (sessions, goal_rate, friction_rate, js_error_rate, lcp_p75, inp_p75, cls_p75), direction, day, value, expected, sessions, robust_z, z_score və oxunaqlı bu mətni: summary və hint. Ziyarətçi məlumatı yoxdur. Web Vitals üçün, measurements bu sahəni əvəz edir: sessions, həmçinin page (bütün sayt üçün boşdur) və device (desktop və ya mobil) harada baş verdiyini bildirir; link_url sonra Web Vitals vərəqini açır. |
rage_click | Qəzəbli klik aşkarlananda |
error_detected | Ön tərəf istisnası baş verəndə |
ce | Öz fərdi hadisələriniz üçün ümumi abunəlik. Yuxarıdakı hadisələr buna daxil deyil — onların ayrıca keçidləri var. |
7. Xətalar & vəziyyət kodları
| Vəziyyət | Məna |
|---|---|
200 | Uğur. |
401 | API açarı çatışmır, yanlış formatdadır və ya ləğv edilib. |
404 | İstənilən layihə və ya seans mövcud deyil, yaxud iş sahənizə aid deyil. |
429 | Sorğu tezliyi limiti aşılıb — bu açarla dəqiqədə 60-dan çox sorğu göndərirsiniz. |
403 | İş sahəsinin planına REST API daxil deyil. Mesaj həm tələb olunan, həm də cari planın adını bildirir. |
8. Təhlükəsizlik qeydləri
- Yalnız oxuma açarları (mp_ro_) heç nəyi dəyişə bilməz. Yazma açarları (mp_rw_) yalnız müştəri ID-lərini bağlaya bilər; heç bir açar məlumat silə və ya xam təkrar oynatma məlumatlarını ixrac edə bilməz.
- Hər sorğu avtomatik açarın öz iş sahəsi ilə məhdudlaşır — başqa iş sahəsinin ID-sini ötürüb başqasının məlumatlarını görmək mümkün deyil.
- Açarı istənilən vaxt bu səhifədən ləğv edin: /api-keys; ləğv dərhal qüvvəyə minir.
- API açarınıza parol kimi yanaşın. Təsadüfən açıq repozitoriyaya əlavə etsəniz, dərhal ləğv edib yenisini yaradın.
Məhdud hadisə səhifələri (API v1, 14 oktyabr 2026)
GET /api/v1/sessions/{session_id}/events standart olaraq ən çox 100 hadisə qaytarır. per_page parametrini 1-dən 100-ə qədər tam ədədə təyin edin. Növbəti sorğuda cursor parametrini dəyişmədən göndərərək pagination.next_cursor dəyərini izləyin; eyni seansı və iş sahəsini saxlayın. Hadisələr created_at və event_id üzrə sıralanır. Kursorlar imzalanır, həmin seansa və iş sahəsinə bağlanır. Ümumi say və ya rəqəmli səhifə qaytarılmır.
Mövcud data massivi və params xəritəsi əlçatan qalır. pagination.returned həqiqətən qaytarılan saydır; pagination.has_more başqa səhifənin olduğunu bildirir. Tamamlandıqda next_cursor null olur. Cavab 524288 baytla məhdudlaşır, buna görə səhifədə per_page dəyərindən az hadisə ola bilər. Hər hadisə üçün ən çox 128 parametr sətri qaytarılır; daha çoxdursa, params_truncated true olur. Ayrı mətn parametrləri verilənlər bazasının 255 simvol limitini saxlayır. Kəsilmiş parametrlər bu son nöqtədən əlçatan deyil. per_page dəyərini azaltmaq parametr limitini artırmır.
Yanlış səhifə ölçüləri, dəyişdirilmiş kursorlar və başqa seans/iş sahəsi üçün kursorlar 400 qaytarır. Həddindən böyük fərdi hadisə məlumatları 413 qaytarır. Mövcud giriş yoxlamaları müvafiq olaraq yenə 401, 403, 404 və ya 409 qaytarır.
Limit hər API açarına dəqiqədə 60 autentifikasiya olunmuş sorğu olaraq qalır. Tükəndikdə Retry-After: 60 ilə 429 qaytarılır. Redis və ya limitləyici əlçatmazdırsa, sorğular Retry-After: 5 ilə 503 qaytarır; limitsiz heç vaxt qəbul edilmir. Retry-After-a əməl edin və təsadüfi gözləmə əlavə edin; sıx dövrədə təkrar cəhd etməyin. Hadisə bazası xətaları da 503 qaytarır. Kursorlar anlıq görüntünü sabitləmir: daha köhnə vaxt nişanlı paralel əlavələr yeni skan tələb edə bilər.
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 nativ SDK önbaxışı üçün yalnız Dev arxa tərəf idarəetmə yoludur. İstehsalda deaktiv qalır. Arxa tərəf Bearer açarlarına list/replay üçün oxuma, register/grant/delete/disable üçün yazma səlahiyyəti lazımdır. Əlavə nativ önbaxış əlçatanlıq yoxlamaları tətbiq olunur. Mobil tətbiqə heç vaxt daimi iş sahəsi API açarları yerləşdirməyin.