Herkese Açık API & API Anahtarları
Çalışma alanınıza programatik erişim — projeleri, oturumları, özel olayları ve segmentleri okuyun, oturumlara müşteri kimlikleri ekleyin — çalışma alanı kapsamlı API anahtarlarıyla korunur.
1. Genel bakış
MousePlayer API, çalışma alanınızdaki verileri kendi gösterge panellerinize, veri ambarınıza veya dahili araçlarınıza almanızı sağlar. Oturumlara müşteri kimliği ekleme dışında (identify; yazma kapsamlı anahtar gerektirir, bkz. Anahtar kapsamları) salt okunurdur: API üzerinden veri değiştirilemez veya silinemez.
- Temel URL:
https://www.mouseplayer.com/api/v1/ - Tüm yanıtlar JSON biçimindedir.
- Her istek bir API anahtarıyla doğrulanır ve otomatik olarak anahtarın ait olduğu çalışma alanıyla sınırlandırılır — bir çalışma alanının anahtarı, yanlışlıkla bile olsa başka bir çalışma alanının verilerini asla göremez.
- Tam oturum yeniden oynatma kaydı (fare hareketleri, DOM anlık görüntüleri) API üzerinden sunulmaz . Oturum üstverisini, sayfa görüntülemelerini, özel olayları ve segmentleri alırsınız — ham yeniden oynatma verisini taşımadan rapor ve gösterge panelleri oluşturmak için yeterlidir.
2. Kimlik doğrulama
API anahtarlarınızı hesap menünüzdeki API Anahtarları bölümünde (/api-keys) oluşturun ve yönetin. Yalnızca çalışma alanı sahipleri ve yöneticileri anahtar oluşturabilir veya iptal edebilir.
Anahtarınızı gizli tutun. Çalışma alanınızdaki her şeye okuma erişimi verir. Tam anahtar, oluşturulduktan hemen sonra tam olarak bir kez gösterilir — bir parola yöneticisinde veya gizli bilgi kasasında saklayın. Kaybederseniz iptal edip yeni bir anahtar oluşturun.
Anahtarı her istekte Bearer belirteci olarak şu başlıkta gönderin Authorization :
Eksik, hatalı biçimli veya iptal edilmiş anahtarlar şu yanıtı alır 401 :
Plan gereksinimi
REST API, Business ve Enterprise planlarına dahildir. Plan, çalışma alanının sahibinden alınır; böylece davet edilen ekip üyeleri de aynı plandan yararlanır. Kontrol yalnızca anahtar oluşturulurken değil, her istekte çalışır — çalışma alanının planı düşürülürse mevcut anahtarlar çalışmayı durdurur ve şu yanıtı döndürür: 403.
Anahtar kapsamları
Her anahtar, kapsamını kendi önekinde taşır. Böylece bir anahtarın ne yaptığını ona bakarak anlayabilirsiniz — bir .env içinde, bir destek kaydında veya terminalde.
| Önek | Anlamı |
|---|---|
mp_ro_ | Salt okunur. Projeleri, oturumları, olayları ve segmentleri okur. Hiçbir şeyi değiştiremez. |
mp_rw_ | Okuma ve yazma. Yukarıdakilerin tümü ve ayrıca tanımlama uç noktası üzerinden müşteri kimliği ekleme. |
403 ; mesaj, anahtarın türünü ve uç noktanın gereksinimini belirtir. Kapsam sonradan değiştirilemez — yeni bir anahtar oluşturun ve eskisini iptal edin.3. İstek sınırları
Her API anahtarı kayan zaman aralığında izlenerek dakikada 60 istekle sınırlandırılır. Bu sınırı aştığınızda zaman aralığı temizlenene kadar istekler şu yanıtı alır 429 :
Daha yüksek bir sınıra ihtiyaç duyan bir şey mi geliştiriyorsunuz? Şu bölümden bize ulaşın: Destek ; kullanım senaryonuzu anlatın.
4. Uç noktalar
GET/api/v1/projects
Çalışma alanınızdaki her projeyi (takip edilen siteyi) listeler.
GET/api/v1/projects/{channelid}/sessions
Bir proje için kaydedilen ziyaretçi oturumlarını en yeniden başlayarak listeler. Sayfalandırılır.
| Sorgu parametresi | Açıklama |
|---|---|
page | Sayfa numarası; varsayılan: 1. |
per_page | Sayfa başına sonuç; varsayılan: 25, en fazla: 100. |
since | Yalnızca bu tarihte veya sonrasında başlayan oturumlar (YYYY-MM-DD). |
until | Yalnızca bu tarihte veya öncesinde başlayan oturumlar. |
GET/api/v1/sessions/{session_id}
Tek bir oturumun üstverisi ve sayfa görüntülemeleri. Tam yeniden oynatma verisi özellikle dahil edilmez — bunun için gösterge panelindeki Oynatıcıyı kullanın.
GET/api/v1/sessions/{session_id}/events
Oturum sırasında tetiklenen özel olaylar (şu yöntemle gönderdiğiniz olaylarla aynıdır: mp('event', ...)) ve parametreleri.
GET/api/v1/projects/{channelid}/segments
Bir proje için tanımlanmış ziyaretçi segmentlerini listeler (hem projeye özgü hem çalışma alanı genelindeki segmentler).
5. Arka ucunuzdan müşteri kimliği ekleme
Tarayıcı çoğu zaman karşısında kimin olduğunu bilmez. B2B ürününde kimlik girişten sonra — arka ucunuzda belirlenir. Mağazada ise sipariş onayıyla belirlenir. Bu uç nokta tam olarak o an içindir.
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}}Kimlik daha sonra oturum listesinde görünür, orada aranabilir ve şu webhook tetiklenir: session_identified — CRM'inize bu yolla ulaşır.
"changed": false ; webhook gönderilmez. Yinelenen sipariş ikinci bir potansiyel müşteri oluşturmaz.| Durum | Ne zaman? |
|---|---|
400 | Eksik alan, user_id 128 karakterden uzun veya kontrol karakterleri içeriyor. Kısaltmak yerine reddederiz — sessizce kısaltılan bir kimlik CRM'inizde hiçbir şeyle eşleşmez ve yine de başarılı görünür. |
404 | Oturum mevcut değil veya çalışma alanınıza ait değil. Her ikisi için özellikle aynı yanıt verilir. |
403 | Çalışma alanı planı API'yi içermiyor. |
6. Webhook'lar: imzayı doğrulama
Webhook'lar proje başına şu bölümde yapılandırılır: Entegrasyonlar. İmzalama gizli anahtarını da burada bulursunuz. Her teslim şu başlıkları taşır:
| Başlık | Anlamı |
|---|---|
X-MousePlayer-Event | Olay adı; örneğin session_identified |
X-MousePlayer-Timestamp | Unix saniyeleri — imzalanan metnin parçasıdır |
X-MousePlayer-Attempt | İlk denemede 1; yeniden denemelerde daha yüksek |
X-MousePlayer-Signature | sha256=<hex> |
İmza, şu veri üzerinde hesaplanan HMAC-SHA256 değeridir: timestamp + "." + raw body; anahtar olarak projenizin imzalama gizli anahtarı kullanılır.
// 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');
Teslim ve yeniden denemeler
Başarısız teslim şu aralıklarla yeniden denenir: 1 dk, 5 dk, 15 dk, 1 sa ve 6 sa; ardından vazgeçilir. 4xx türü yanıtlardan şu iki durum dışındakiler: 408 ve 429 , yeniden denenmez — bunlar "şimdi olmaz" değil, "bu şekilde olmaz" der. Hızlıca şu yanıtı verin: 2xx ; işi sonrasında yapın. Teslim 10 saniyede zaman aşımına uğrar.
Kullanılabilir olaylar
| Olay | Tetiklenme anı |
|---|---|
session_identified | Bir oturum, tarayıcıdan veya API'den ilk kez müşteri kimliği aldığında — tetiklenir |
session_ended | Oturum kapandığında bir kez |
goal_reached | Özel bir olay hedeflerinizden birini gerçekleştirdiğinde, oturum başına bir kez. Yalnızca “event” türündeki hedefler — URL, süre, sayfa görüntüleme ve huni hedefleri değerlendirilmez. Şu alanları taşır: goal_id, goal_name, goal_value ve currency. |
high_value_session | Bir ziyaretçi belirli bir günde bu projenin değer eşiğini ilk kez aştığında. Eşik, kendi puan dağılımınızdan türetilir (son 90 günün 90. yüzdelik dilimi); sabit bir sayı değildir ve en az 20 ziyaretçi puanlanana kadar mevcut olmaz. Şu alanları taşır: visitor_id, value_score, threshold ve o günün izlemeye en değer oturumu. |
funnel_dropoff | Hunilerinizden birine girip tamamlamayan bir oturumun sonunda. Durduğu adımı belirtir (dropped_at). Ayrılma, bir olayın yokluğudur; bu nedenle yalnızca oturum bittikten sonra bilinebilir. Huniye hiç girmeyen oturumlar ayrılma sayılmaz ve tetiklenmez. |
high_friction_session | Sürtünme puanı eşiğe ilk ulaştığında, oturum başına bir kez (varsayılan 100 üzerinden 60). Şu alanı taşır: friction_score, arkasındaki sinyalleri (reasons) ve eşiği aşıran sinyali (trigger). |
element_broken | Takip edilen bir öğe, birkaç gün boyunca kontrol edilen hiçbir sayfa görüntülemesinde bulunamadığında bir kez — genellikle yeniden yayımlama sonrasında. Yalnızca işaretleme tekrar eşleşip bir kez daha bozulduktan sonra yeniden tetiklenir. Bu olayın ait olduğu bir oturum yoktur: session_id ve session_url alanları null, link_url ise işaretlemeyi açar ve subject_id işaretlemeyi adlandırır — tüm sürümler için aynıdır; böylece yeniden bozulan yeni bir seçici açık olaya dahil olur. Şu alanları taşır: rule_id, rule_name, selector, page, checked_page_views, window_days ve last_matched. Ziyaretçi verisi yoktur. |
element_recovered | Şu olay için sorun giderildi bildirimi: element_broken. İşaretleme gerçekten yeniden bir öğe bulduğunda gönderilir — çok az sayfa görüntülemesi yeterli değildir. Yalnızca şu olay webhook üzerinden gönderilmişse gönderilir: element_broken ; kendine ait bir anahtarı yoktur. Şu olaya abone olmak: element_broken , bunu da kapsar. Aynı subject_id kullanılır; böylece PagerDuty olayı çözer, Opsgenie uyarıyı kapatır. Ek olarak şu alanları taşır: matched_page_views ve checked_page_views . |
anomaly_detected | Dün, önceki 28 günden belirgin şekilde farklıysa günde bir kez: çok daha az veya çok daha fazla oturum, düşen hedef oranı, sürtünme veya JS hatası içeren daha fazla oturum. Aynı metrik ve yön bir hafta boyunca sessiz kalır (ayarlanabilir). Bu olayın ait olduğu bir oturum yoktur: session_id ve session_url alanları null, link_url proje genel bakışını açar ve subject_id metrik, yön ve günü adlandırır. Şu alanları taşı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 ve okunabilir bir summary ve hint. Ziyaretçi verisi yoktur. Web Vitals için measurements , şu alanın yerini alır: sessions; şu alan: page (tüm site için boş) ve device (desktop veya mobil) nerede olduğunu belirtir; link_url ise Web Vitals sekmesini açar. |
rage_click | Öfke tıklaması algılandığında |
error_detected | Ön yüz istisnasında |
ce | Kendi özel olaylarınız için toplu abonelik. Yukarıdaki olayları içermez — onların ayrı anahtarları vardır. |
7. Hatalar & Durum Kodları
| Durum | Anlamı |
|---|---|
200 | Başarılı. |
401 | Eksik, hatalı biçimli veya iptal edilmiş API anahtarı. |
404 | İstenen proje veya oturum mevcut değil ya da çalışma alanınıza ait değil. |
429 | İstek sınırı aşıldı — bu anahtarla dakikada 60'tan fazla istek gönderiyorsunuz. |
403 | Çalışma alanı planı REST API'yi içermiyor. Mesaj hem gereken planı hem mevcut planı belirtir. |
8. Güvenlik notları
- Salt okunur anahtarlar (mp_ro_) hiçbir şeyi değiştiremez. Yazma anahtarları (mp_rw_) yalnızca müşteri kimliği ekleyebilir; hiçbir anahtar veri silemez veya ham yeniden oynatma verilerini dışa aktaramaz.
- Her istek otomatik olarak anahtarın kendi çalışma alanıyla sınırlandırılır — farklı bir çalışma alanı kimliği gönderip başkasının verilerini görmenin yolu yoktur.
- Anahtarı istediğiniz zaman şu bölümden iptal edin: /api-keys; iptal anında geçerli olur.
- API anahtarınızı parola gibi koruyun. Yanlışlıkla herkese açık bir depoya eklerseniz hemen iptal edin ve yeni bir anahtar oluşturun.
Sınırlı olay sayfaları (API v1, 14 Ekim 2026)
GET /api/v1/sessions/{session_id}/events varsayılan olarak en fazla 100 olay döndürür. per_page değerini 1 ile 100 arasında bir tam sayıya ayarlayın. Sonraki istekte cursor değerini değiştirmeden göndererek pagination.next_cursor alanını izleyin; aynı oturum ve çalışma alanını kullanın. Olaylar created_at ve event_id sırasındadır. İmleçler imzalanır ve o oturum ile çalışma alanına bağlanır. Toplam sayı veya sayısal sayfa döndürülmez.
Mevcut data dizisi ve params eşlemesi kullanılabilir kalır. pagination.returned gerçekten döndürülen sayıdır; pagination.has_more başka bir sayfa olduğunu belirtir. Tamamlandığında next_cursor null olur. Yanıt 524288 baytla sınırlıdır; bu yüzden sayfa per_page değerinden daha az olay içerebilir. Olay başına en fazla 128 parametre satırı döndürülür; fazlası varsa params_truncated true olur. Tekil dize parametreleri veritabanının 255 karakter sınırını korur. Kısaltılmış parametreler bu uç nokta üzerinden alınamaz. per_page değerini azaltmak parametre üst sınırını artırmaz.
Geçersiz sayfa boyutları, değiştirilmiş imleçler ve başka oturum/çalışma alanına ait imleçler 400 döndürür. Boyutu aşırı büyük tekil olay verileri 413 döndürür. Mevcut erişim kontrolleri duruma göre hâlâ 401, 403, 404 veya 409 döndürür.
Sınır, API anahtarı başına dakikada 60 kimliği doğrulanmış istek olarak kalır. Sınırın tükenmesi Retry-After: 60 ile 429 döndürür. Redis veya sınırlayıcı kullanılamıyorsa istekler Retry-After: 5 ile 503 döndürür; hiçbir zaman sınırsız kabul edilmezler. Retry-After değerine uyun ve rastgele geri çekilme süresi ekleyin; sıkı bir döngüde yeniden denemeyin. Olay veritabanı hataları da 503 döndürür. İmleçler bir anlık görüntüyü dondurmaz: daha eski zaman damgalı eşzamanlı eklemeler yeni bir tarama gerektirebilir.
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, yerel SDK önizlemesi için yalnızca Dev ortamında kullanılan bir arka uç kontrol yoludur. Üretimde devre dışı kalır. Arka uç Bearer anahtarları list/replay için okuma, register/grant/delete/disable için yazma kapsamı gerektirir. Ek yerel önizleme kullanılabilirlik kontrolleri uygulanır. Kalıcı çalışma alanı API anahtarlarını bir mobil uygulamaya asla gömmeyin.