API publikoa & API gakoak
Zure lan-eremurako sarbide programatikoa — irakurri proiektuak, saioak, gertaera pertsonalizatuak eta segmentuak, eta erantsi bezero-IDak saioei — lan-eremuari mugatutako API gakoekin babestuta.
1. Ikuspegi orokorra
MousePlayer APIak zure lan-eremuko datuak zure aginte-paneletara, datu-biltegira edo barne-tresnetara ateratzen uzten dizu. Saioei bezero-IDak eransteaz gain (identify, idazteko esparruko gakoa behar du; ikus Gakoen esparruak), sarbidea irakurtzeko soilik da: ezin da daturik aldatu edo ezabatu APIaren bidez.
- Oinarrizko URLa:
https://www.mouseplayer.com/api/v1/ - Erantzun guztiak JSON dira.
- Eskaera bakoitza API gakoarekin autentifikatzen da eta automatikoki mugatzen da gakoari dagokion lan-eremura — lan-eremu bateko gakoak ezin ditu inoiz beste lan-eremu baten datuak ikusi, ezta ustekabean ere.
- Saioaren erreprodukzio-grabazio osoa (saguaren mugimenduak, DOM kapturak) ez da APIaren bidez eskaintzen. Saioen metadatuak, orri-ikustaldiak, gertaera pertsonalizatuak eta segmentuak jasotzen dituzu — nahikoa txostenak eta aginte-panelak eraikitzeko, erreprodukzioaren karga gordina alde batetik bestera eraman gabe.
2. Autentifikazioa
Sortu eta kudeatu zure API gakoak hemen: API gakoak zure kontuaren menuan (/api-keys). Lan-eremuaren jabeek eta administratzaileek soilik sor edo baliogabetu ditzakete gakoak.
Mantendu zure gakoa ezkutuan. Zure lan-eremuko guztia irakurtzeko sarbidea ematen du. Gako osoa behin zehazki erakusten da, sortu eta berehala — gorde pasahitz-kudeatzaile edo sekretu-biltegi batean. Galtzen baduzu, baliogabetu eta sortu berria.
Bidali gakoa Bearer token gisa eskaera bakoitzaren Authorization goiburuan:
Falta diren, gaizki osatutako edo baliogabetutako gakoek honako hau jasotzen dute: 401 erantzuna:
Planaren eskakizuna
REST APIa bi mailatan sartzen da: Business eta Enterprise planetan. Plana lan-eremuaren jabearengandik hartzen da; beraz, gonbidatutako taldekideek heredatzen dute. Egiaztapena eskaera guztietan egiten da, ez gakoa sortzean soilik — lan-eremua maila txikiagora aldatzen bada, lehendik dauden gakoek funtzionatzeari uzten diote eta honako hau itzultzen dute: 403.
Gakoen esparruak
Gako bakoitzak bere esparrua aurrizkian darama; beraz, begiratuta bakarrik jakin dezakezu zer egiten duen — honako honetan: .env, eskaera batean edo terminal batean.
| Aurrizkia | Esanahia |
|---|---|
mp_ro_ | Irakurtzeko soilik. Proiektuak, saioak, gertaerak eta segmentuak irakurtzen ditu. Ezin du ezer aldatu. |
mp_rw_ | Irakurtzeko eta idazteko. Aurreko guztia, eta bezero-IDak eranstea identifikazio-muturraren bidez. |
403 gakoa nolakoa den eta muturrak zer behar duen izendatzen duen mezuarekin. Esparrua ezin da gero aldatu — sortu gako berria eta baliogabetu zaharra.3. Eskaera-mugak
API gako bakoitzak honako muga du: 60 eskaera minutuko, leiho mugikor batean zenbatuta. Gainditzean, eskaerek honako hau jasotzen dute: 429 erantzuna, leihoa libratu arte:
Muga handiagoa behar duen zerbait eraikitzen ari zara? Jarri gurekin harremanetan Laguntza bidez eta azaldu zure erabilera-kasua.
4. Muturrak
GET/api/v1/projects
Zure lan-eremuko proiektu guztiak (jarraitutako propietateak) zerrendatzen ditu.
GET/api/v1/projects/{channelid}/sessions
Proiektu baterako grabatutako bisitari-saioak zerrendatzen ditu, berrienak lehenik. Orrikatuta.
| Kontsulta-parametroa | Deskribapena |
|---|---|
page | Orri-zenbakia, lehenetsia: 1. |
per_page | Emaitzak orriko, lehenetsia: 25, gehienez 100. |
since | Data honetan edo ondoren hasten diren saioak soilik (YYYY-MM-DD). |
until | Data honetan edo aurretik hasten diren saioak soilik. |
GET/api/v1/sessions/{session_id}
Saio bakar baten metadatuak eta haren orri-ikustaldiak. Erreprodukzioaren karga osoa nahita kanpoan uzten du — erabili aginte-paneleko erreproduzitzailea horretarako.
GET/api/v1/sessions/{session_id}/events
Saioan abiarazitako gertaera pertsonalizatuak (honako honekin bidaltzen dituzun gertaera berak: mp('event', ...)), beren parametroak barne.
GET/api/v1/projects/{channelid}/segments
Proiektu baterako definitutako bisitari-segmentuak zerrendatzen ditu, proiektuarenak nahiz lan-eremu osokoak.
5. Zure backend-etik bezero-IDa eranstea
Nabigatzaileak askotan ez daki nor dagoen bertan. B2B produktu batean identitatea saioa hasi ondoren zehazten da — zure backend-ean. Denda batean eskaeraren berrespenarekin zehazten da. Mutur hau une horretarako da hain zuzen.
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}}IDa saio-zerrendan agertzen da orduan, han bila daiteke, eta session_identified webhooka abiarazten da — horrela iristen da zure CRMra.
"changed": false eta ez da webhookik bidaltzen. Eskaera errepikatuak ez du bigarren bezero potentzialik sortzen.| Egoera | Noiz |
|---|---|
400 | Eremua falta da, user_id 128 karaktere baino gehiago ditu edo kontrol-karaktereak ditu. Moztu beharrean baztertzen dugu — isilean laburtutako IDa ez dator bat zure CRMko ezerrekin eta hala ere arrakasta dirudi. |
404 | Saioa ez da existitzen edo ez da zure lan-eremukoa. Nahita erantzun bera bietarako. |
403 | Lan-eremuaren planak ez du APIa barne. |
6. Webhookak: sinadura egiaztatzea
Webhookak proiektuka konfiguratzen dira hemen: Integrazioak, eta sinadura-sekretua ere hor aurkituko duzu. Bidalketa bakoitzak goiburu hauek daramatza:
| Goiburua | Esanahia |
|---|---|
X-MousePlayer-Event | Gertaeraren izena, adib. session_identified |
X-MousePlayer-Timestamp | Unix segundoak — sinatutako testuaren parte |
X-MousePlayer-Attempt | 1 lehen saiakeran, handiagoa berriz saiatzean |
X-MousePlayer-Signature | sha256=<hex> |
Sinadura HMAC-SHA256 bat da honako honen gainean: timestamp + "." + raw body, zure proiektuaren sinadura-sekretua gakotzat erabiliz.
// 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');
Bidalketa eta berriz saiatzea
Huts egindako bidalketa berriro saiatzen da epe hauen ondoren: 1 min, 5 min, 15 min, 1 h eta 6 h, eta gero etsi egiten da. Honako kodeko 4xx erantzunak — honako hauek izan ezik: 408 eta 429 — ez dira berriro saiatzen — "ez horrela" diote, ez "ez orain". Erantzun 2xx azkar eta egin lana ondoren; bidalketak 10 segundoren buruan gainditzen du denbora-muga.
Gertaera erabilgarriak
| Gertaera | Noiz abiarazten den |
|---|---|
session_identified | Saio batek lehen aldiz bezero-IDa jasotzen duenean — nabigatzailetik edo APItik |
session_ended | Behin, saioa ixten denean |
goal_reached | Behin saio bakoitzeko, gertaera pertsonalizatu batek zure helburuetako bat betetzen duenean. «event» motako helburuak soilik — URL, iraupen, orri-ikustaldi eta inbutu helburuak ez dira ebaluatzen. Honako hauek daramatza: goal_id, goal_name, goal_value eta currency. |
high_value_session | Bisitariak egun jakin batean proiektu honen balio-atalasea lehen aldiz gainditzen duenean. Atalasea zure puntuazio-banaketatik eratortzen da (azken 90 egunetako 90. pertzentila), ez zenbaki finko batetik, eta ez da existitzen gutxienez 20 bisitariri puntuazioa eman arte. Honako hauek daramatza: visitor_id, value_score, threshold eta egun horretako saiorik ikusgarriena. |
funnel_dropoff | Zure inbutuetako batean sartu baina amaitu ez duen saioaren amaieran. Gelditu den urratsa izendatzen du (dropped_at). Uztea gertaera baten absentzia da; beraz, saioa amaitutakoan soilik jakin daiteke. Inbutuan inoiz sartu ez diren saioak ez dira uzteak eta ez dute abiarazten. |
high_friction_session | Behin saio bakoitzeko, marruskadura-puntuazioa lehen aldiz atalase batera iristen denean (lehenetsia: 60 / 100). Honako hau darama: friction_score, haren atzean dauden seinaleak (reasons) eta muga gainditu duen seinalea (trigger). |
element_broken | Behin, jarraitutako elementuak hainbat egunez egiaztatutako orri-ikustaldi bakar batean ere ezer aurkitu ez duenean — normalean berrargitalpen baten ondoren. Markaketak berriro bat egin eta berriro huts egin ondoren soilik abiarazten da berriro. Gertaera hau ez da inongo saiokoa: session_id eta session_url honako balioarekin datoz: null, link_url markaketa irekitzen du horren ordez, eta subject_id markaketa izendatzen du — bertsio guztietan bera; beraz, berriro huts egiten duen hautatzaile berria gorabehera irekira batzen da. Honako hauek daramatza: rule_id, rule_name, selector, page, checked_page_views, window_days eta last_matched. Bisitari-daturik ez. |
element_recovered | Honako honen normaltasun-berrespena: element_broken: markaketak benetan elementu bat berriro aurkitzen duenean behin — orri-ikustaldi gutxiegi izatea ez da nahikoa. Honako hau webhook bidez bidali bazen soilik bidaltzen da: element_broken gertaera, eta ez du berezko etengailurik: honako honetara harpidetzeak: element_broken barne hartzen du. Honako bera: subject_id; beraz, PagerDuty-k gorabehera ebazten du eta Opsgenie-k alerta ixten du. Honako hauek daramatza: matched_page_views eta checked_page_views gainera. |
anomaly_detected | Egunean behin, atzo aurreko 28 egunetatik nabarmen desberdina izan zenean: saio askoz gutxiago edo gehiago, helburu-tasaren jaitsiera, marruskadura edo JS erroreak dituzten saio gehiago. Metrika eta noranzko berak isilik mantentzen dira astebetez (doigarria). Gertaera hau ez da inongo saiokoa: session_id eta session_url honako balioarekin datoz: null, link_url proiektuaren ikuspegi orokorra irekitzen du, eta subject_id metrika, noranzkoa eta eguna izendatzen ditu. Honako hauek daramatza: metric (sessions, goal_rate, friction_rate, js_error_rate, lcp_p75, inp_p75, cls_p75), direction, day, value, expected, sessions, robust_z, z_score eta irakurgarriak diren summary eta hint. Bisitari-daturik ez. Web Vitals-erako, measurements eremuak sessionsordezten du, eta page (hutsik webgune osorako) eta device (desktop edo mobil) gertatu den tokia adierazten dute; link_url ondoren Web Vitals fitxa irekitzen du. |
rage_click | Amorru-klika hautematean |
error_detected | Frontend-eko salbuespena gertatzean |
ce | Zure gertaera pertsonalizatuetarako harpidetza kolektiboa. Goiko gertaerak ez ditu barne hartzen — haiek beren etengailuak dituzte. |
7. Erroreak & egoera-kodeak
| Egoera | Esanahia |
|---|---|
200 | Arrakasta. |
401 | API gakoa falta da, gaizki osatuta dago edo baliogabetuta dago. |
404 | Eskatutako proiektua edo saioa ez da existitzen edo ez da zure lan-eremukoa. |
429 | Eskaera-muga gainditu da — gako honekin 60 eskaera/minutu baino gehiago bidaltzen ari zara. |
403 | Lan-eremuaren planak ez du REST APIa barne. Mezuak behar den plana eta unekoa izendatzen ditu. |
8. Segurtasun-oharrak
- Irakurtzeko soilik diren gakoek (mp_ro_) ezin dute ezer aldatu. Idazteko gakoek (mp_rw_) bezero-IDak soilik erants ditzakete; inolako gakok ezin ditu datuak ezabatu edo erreprodukzio-datu gordinak esportatu.
- Eskaera bakoitza automatikoki mugatzen da gakoaren lan-eremura — ez dago beste lan-eremu baten IDa pasatu eta beste norbaiten datuak ikusteko modurik.
- Baliogabetu gakoa edozein unetan hemen: /api-keys; baliogabetzeak berehala du eragina.
- Tratatu zure API gakoa pasahitza bezala. Ustekabean biltegi publiko batera igotzen baduzu, baliogabetu berehala eta sortu berria.
Gertaeren orri mugatuak (API v1, 2026ko urriaren 14a)
GET /api/v1/sessions/{session_id}/events muturrak gehienez 100 gertaera itzultzen ditu lehenespenez. Ezarri per_page 1 eta 100 arteko zenbaki oso batera. Jarraitu pagination.next_cursor balioari, hurrengo eskaeran cursor aldatu gabe bidaliz; mantendu saio eta lan-eremu berak. Gertaerak created_at eta event_id arabera ordenatzen dira. Kurtsoreak sinatuta daude eta saio eta lan-eremu horiei lotuta. Ez da guztizko kopururik edo zenbakizko orririk itzultzen.
Lehendik dauden data arraya eta params mapa erabilgarri mantentzen dira. pagination.returned benetan itzulitako kopurua da; pagination.has_more beste orri bat dagoela adierazten du. next_cursor null da osatutakoan. Erantzuna 524288 bytera mugatuta dago; beraz, orriak per_page baino gertaera gutxiago izan ditzake. Gertaera bakoitzeko gehienez 128 parametro-errenkada itzultzen dira; params_truncated true da gehiago badaude. Banakako testu-kateen parametroek datu-basearen 255 karaktereko muga mantentzen dute. Moztutako parametroak ez daude eskuragarri mutur honen bidez. Per_page murrizteak ez du parametro-muga handitzen.
Orri-tamaina baliogabeek, aldatutako kurtsoreek eta beste saio/lan-eremu bateko kurtsoreek 400 itzultzen dute. Banakako gertaera-datu handiegiek 413 itzultzen dute. Lehendik dauden sarbide-egiaztapenek 401, 403, 404 edo 409 itzultzen jarraitzen dute, dagokion bezala.
Muga API gako bakoitzeko minutuko autentifikatutako 60 eskaera izaten jarraitzen du. Agortzeak 429 itzultzen du Retry-After: 60 goiburuarekin. Redis edo mugatzailea erabilgarri ez badago, eskaerek 503 itzultzen dute Retry-After: 5 goiburuarekin; ez dira inoiz mugarik gabe onartzen. Errespetatu Retry-After eta gehitu ausazko itxaronaldi gehigarria; ez saiatu berriro begizta estu batean. Gertaeren datu-basearen hutsegiteek ere 503 itzultzen dute. Kurtsoreek ez dute kaptura finkorik izozten: denbora-marka zaharragoekin aldi berean txertatutako datuek berriro eskaneatzea eska dezakete.
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 Dev ingurunerako soilik den backend-kontroleko bidea da, SDK natiboaren aurrebistarako. Produkzioan desaktibatuta mantentzen da. Backend-eko Bearer gakoek irakurtzeko esparrua behar dute list/replay eragiketetarako, eta idazteko esparrua register/grant/delete/disable eragiketetarako. Aurrebista natiboaren erabilgarritasun-egiaztapen gehigarriak aplikatzen dira. Ez txertatu inoiz lan-eremuaren API gako iraunkorrak mugikorretarako aplikazio batean.