Openbare API & API-sleutels
Programmatiese toegang tot u werkruimte — lees projekte, sessies, pasgemaakte gebeure en segmente en heg klant-ID's aan sessies — beveilig met API-sleutels waarvan die omvang tot 'n werkruimte beperk is.
1. Oorsig
Die MousePlayer API laat u data uit u werkruimte na eie kontroleskerms, 'n datapakhuis of interne hulpmiddels haal. Buiten die hegting van klant-ID's aan sessies (identify, vereis 'n sleutel met skryfomvang; sien Sleutelomvang) is dit slegs vir lees: geen data kan deur die API verander of uitgevee word nie.
- Basis-URL:
https://www.mouseplayer.com/api/v1/ - Alle antwoorde is JSON.
- Elke versoek word met 'n API-sleutel gestaaf en outomaties tot die sleutel se werkruimte beperk — 'n sleutel van een werkruimte kan nooit 'n ander se data sien nie, nie eens per ongeluk nie.
- Die volledige sessieherspeelopname (muisbewegings, DOM-kiekies) word nie deur die API blootgestel nie. U kry sessiemetadata, bladsybesigtigings, pasgemaakte gebeure en segmente — genoeg vir verslae en kontroleskerms sonder om rou herspeeldata rond te stuur.
2. Stawing
Skep en bestuur u API-sleutels onder API-sleutels in u rekeningkieslys (/api-keys). Net werkruimte-eienaars en administrateurs kan sleutels skep of herroep.
Hou u sleutel geheim. Dit gee leestoegang tot alles in u werkruimte. Die volle sleutel word presies een keer gewys, direk ná skepping — stoor dit in 'n wagwoordbestuurder of geheimekluis. As u dit verloor, herroep dit en skep 'n nuwe een.
Stuur die sleutel as 'n Bearer-token in elke versoek se Authorization kopskrif:
Ontbrekende, verkeerd gevormde of herroepe sleutels ontvang 'n 401 antwoord:
Planvereiste
Die REST API is deel van die Business en Enterprise planne. Die plan kom van die werkruimte se eienaar en word dus deur genooide spanlede geërf. Die kontrole loop op elke versoek, nie net by sleutelskepping nie — as 'n werkruimte afgegradeer word, hou bestaande sleutels op werk en gee 403terug.
Sleutelomvang
Elke sleutel dra sy omvang in sy voorvoegsel, sodat u deur net daarna te kyk kan sien wat dit doen — in 'n .env, kaartjie of terminaal.
| Voorvoegsel | Betekenis |
|---|---|
mp_ro_ | Slegs lees. Lees projekte, sessies, gebeure en segmente. Kan niks verander nie. |
mp_rw_ | Lees en skryf. Alles hierbo, plus die hegting van klant-ID's deur die identify-eindpunt. |
403 met 'n boodskap wat die sleutel se omvang en eindpunt se vereiste noem. Die omvang kan nie later verander word nie — skep 'n nuwe sleutel en herroep die oue.3. Frekwensielimiete
Elke API-sleutel is beperk tot 60 versoeke per minuut, in 'n bewegende tydvenster getel. Ná oorskryding ontvang versoeke 'n 429 antwoord totdat die venster skoon is:
Bou u iets wat 'n hoër limiet benodig? Kontak ons deur Ondersteuning en vertel van u gebruiksgeval.
4. Eindpunte
GET/api/v1/projects
Lys elke projek (nagespoorde webwerf) in u werkruimte.
GET/api/v1/projects/{channelid}/sessions
Lys besoekersessies vir 'n projek, nuutste eerste. In bladsye verdeel.
| Navraagparameter | Beskrywing |
|---|---|
page | Bladsynommer, by verstek 1. |
per_page | Resultate per bladsy, by verstek 25, maks. 100. |
since | Net sessies wat op/ná hierdie datum begin (YYYY-MM-DD). |
until | Net sessies wat op/voor hierdie datum begin. |
GET/api/v1/sessions/{session_id}
Metadata vir een sessie plus sy bladsybesigtigings. Die volle herspeeldata word doelbewus uitgesluit — gebruik daarvoor die kontroleskerm se speler.
GET/api/v1/sessions/{session_id}/events
Pasgemaakte gebeure tydens 'n sessie (dieselfde wat u stuur met mp('event', ...)), met hul parameters.
GET/api/v1/projects/{channelid}/segments
Lys besoekersegmente vir 'n projek (sowel projekspesifieke as werkruimtewye segmente).
5. Heg 'n klant-ID vanuit u agterkant
Die blaaier weet dikwels nie wie daar sit nie. In 'n B2B-produk word die identiteit ná aanmelding bepaal — in u agterkant. In 'n winkel gebeur dit by bestellingsbevestiging. Hierdie eindpunt is juis vir dié oomblik.
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}}Die ID verskyn dan in die sessielys, is daar soekbaar en die session_identified webhaak aktiveer — só bereik dit u CRM.
"changed": false terug en geen webhaak word gestuur nie. 'n Herhaalde bestelling skep nie 'n tweede potensiële klant nie.| Status | Wanneer |
|---|---|
400 | Ontbrekende veld, user_id meer as 128 karakters of beheerkarakters daarin. Ons weier eerder as afkap — 'n stilweg verkorte ID pas by niks in u CRM nie en lyk steeds soos sukses. |
404 | Die sessie bestaan nie of behoort nie aan u werkruimte nie. Doelbewus dieselfde antwoord vir albei. |
403 | Die werkruimteplan sluit nie die API in nie. |
6. Webhake: verifieer die handtekening
Webhake word per projek opgestel onder Integrasies, waar u ook die ondertekeningsgeheim vind. Elke aflewering bevat dié kopskrifte:
| Kopskrif | Betekenis |
|---|---|
X-MousePlayer-Event | Gebeurtenisnaam, bv. session_identified |
X-MousePlayer-Timestamp | Unix-sekondes — deel van die getekende teks |
X-MousePlayer-Attempt | 1 op die eerste poging, hoër by herprobeerslae |
X-MousePlayer-Signature | sha256=<hex> |
Die handtekening is 'n HMAC-SHA256 oor timestamp + "." + raw body, met u projek se ondertekeningsgeheim as sleutel.
// 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');
Aflewering en herprobeerslae
'n Mislukte aflewering word weer probeer ná 1 min, 5 min, 15 min, 1 h en 6 hen dan opgegee. 4xx antwoorde buiten 408 en 429 word nie weer probeer nie — hulle sê "nie só nie", nie "nie nou nie". Antwoord 2xx vinnig en doen die werk daarna; aflewering se tydlimiet is 10 sekondes.
Beskikbare gebeure
| Gebeurtenis | Aktiveer |
|---|---|
session_identified | Wanneer 'n sessie die eerste keer 'n klant-ID kry — uit die blaaier of API |
session_ended | Een keer wanneer die sessie sluit |
goal_reached | Een keer per sessie wanneer 'n pasgemaakte gebeurtenis een van u doelwitte bereik. Net doelwitte van tipe “event” — URL-, duur-, bladsybesigtigings- en tregterdoelwitte word nie beoordeel nie. Bevat goal_id, goal_name, goal_value en currency. |
high_value_session | Wanneer 'n besoeker op 'n gegewe dag die projek se waardedrempel vir die eerste keer oorskry. Die drempel word uit u eie punteverdeling afgelei (90ste persentiel van die laaste 90 dae), is nie 'n vaste getal nie en bestaan nie voordat minstens 20 besoekers beoordeel is nie. Bevat visitor_id, value_score, threshold en die mees kykbare sessie van daardie dag. |
funnel_dropoff | Aan die einde van 'n sessie wat een van u tregters betree het, maar nie voltooi het nie. Noem die stap waar dit gestop het (dropped_at). Uitval is die afwesigheid van 'n gebeurtenis en kan dus eers ná die sessie bekend wees. Sessies wat nooit die tregter betree het nie, is nie uitval nie en aktiveer nie. |
high_friction_session | Een keer per sessie wanneer die struikelbloktelling die drempel die eerste keer bereik (by verstek 60 uit 100). Bevat friction_score, die onderliggende seine (reasons) en die sein wat die grens oorskry het (trigger). |
element_broken | Een keer wanneer 'n nagespoorde element etlike dae niks in enige nagegane bladsybesigtiging gevind het nie — gewoonlik ná 'n herbekendstelling. Dit aktiveer weer eers nadat die merk weer gepas en daarna weer gebreek het. Hierdie gebeurtenis behoort aan geen sessie nie: session_id en session_url is null, link_url maak eerder die merk oop en subject_id benoem die merk — dieselfde vir elke weergawe, sodat 'n nuwe kieser wat weer breek by die oop insident aansluit. Bevat rule_id, rule_name, selector, page, checked_page_views, window_days en last_matched. Geen besoekersdata nie. |
element_recovered | Die herstelsein vir element_broken: een keer wanneer die merk weer werklik 'n element vind — te min bladsybesigtigings is nie genoeg nie. Net gestuur as element_broken per webhaak uitgegaan het en het geen eie skakelaar nie: intekening op element_broken sluit dit in. Dieselfde subject_id, dus sluit PagerDuty die insident en Opsgenie die waarskuwing. Bevat ook matched_page_views en checked_page_views . |
anomaly_detected | Een keer per dag wanneer gister duidelik van die vorige 28 dae verskil het: baie minder of meer sessies, laer doelwitkoers, meer sessies met struikelblokke of JS-foute. Dieselfde metriek en rigting bly 'n week stil (verstelbaar). Hierdie gebeurtenis behoort aan geen sessie nie: session_id en session_url is null, link_url maak die projek-oorsig oop en subject_id benoem metriek, rigting en dag. Bevat metric (sessions, goal_rate, friction_rate, js_error_rate, lcp_p75, inp_p75, cls_p75), direction, day, value, expected, sessions, robust_z, z_score en 'n leesbare summary en hint. Geen besoekersdata nie. Vir Web Vitals measurements vervang sessionsen page (leeg vir die hele webwerf) en device (desktop of mobil) sê waar dit gebeur het; link_url maak dan die Web Vitals-oortjie oop. |
rage_click | By 'n bespeurde woedeklik |
error_detected | By 'n voorkant-uitsondering |
ce | Gesamentlike intekening op u eie pasgemaakte gebeure. Dit sluit nie die gebeure hierbo in nie — dié het eie skakelaars. |
7. Foute & statuskodes
| Status | Betekenis |
|---|---|
200 | Sukses. |
401 | Ontbrekende, verkeerd gevormde of herroepe API-sleutel. |
404 | Die gevraagde projek of sessie bestaan nie of behoort nie aan u werkruimte nie. |
429 | Frekwensielimiet oorskry — u stuur meer as 60 versoeke/minuut met hierdie sleutel. |
403 | Die werkruimteplan sluit nie die REST API in nie. Die boodskap noem sowel die vereiste as huidige plan. |
8. Sekuriteitsnotas
- Leessleutels (mp_ro_) kan niks verander nie. Skryfsleutels (mp_rw_) kan net klant-ID's heg; geen sleutel kan data uitvee of rou herspeeldata uitvoer nie.
- Elke versoek word outomaties tot die sleutel se eie werkruimte beperk — u kan nie 'n ander werkruimte-ID deurgee en iemand anders se data sien nie.
- Herroep enige tyd 'n sleutel by /api-keys; herroeping geld onmiddellik.
- Behandel u API-sleutel soos 'n wagwoord. As u dit per ongeluk in 'n openbare kodebewaarplek vaslê, herroep dit onmiddellik en skep 'n nuwe een.
Beperkte gebeurtenisbladsye (API v1, 14 Oktober 2026)
GET /api/v1/sessions/{session_id}/events gee by verstek tot 100 gebeure terug. Stel per_page op 'n heelgetal van 1 tot 100. Volg pagination.next_cursor deur cursor onveranderd in die volgende versoek te stuur; behou dieselfde sessie en werkruimte. Gebeure word volgens created_at en event_id gerangskik. Kursors is geteken en aan dié sessie en werkruimte gebind. Geen totale telling of numeriese bladsy word teruggegee nie.
Die bestaande data-skikking en params-kaart bly beskikbaar. pagination.returned is die werklike getal teruggegee; pagination.has_more dui nog 'n bladsy aan. next_cursor is null by voltooiing. 'n Antwoord is tot 524288 grepe beperk, dus kan 'n bladsy minder gebeure as per_page bevat. Hoogstens 128 parameterrye per gebeurtenis word teruggegee; params_truncated is true as meer bestaan. Individuele teksparameters behou die databasislimiet van 255 karakters. Afgekapte parameters is nie deur hierdie eindpunt beskikbaar nie. Kleiner per_page verhoog nie die parameterlimiet nie.
Ongeldige bladsygroottes, veranderde kursors en kursors vir 'n ander sessie/werkruimte gee 400 terug. Buitensporig groot individuele gebeurtenisdata gee 413. Bestaande toegangskontroles gee steeds 401, 403, 404 of 409 terug soos toepaslik.
Die limiet bly 60 gestaafde versoeke per API-sleutel per minuut. Uitputting gee 429 met Retry-After: 60. As Redis of die beperker onbeskikbaar is, gee versoeke 503 met Retry-After: 5; hulle word nooit sonder limiet toegelaat nie. Eerbiedig Retry-After en voeg ewekansige wagtyd by; moenie in 'n vinnige lus herprobeer nie. Gebeurtenisdatabasisfoute gee ook 503. Kursors vries nie 'n kiekie nie: gelyktydige invoegings met ouer tydstempels kan 'n nuwe skandering vereis.
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 is 'n agterkant-beheerroete slegs vir Dev, vir die inheemse SDK-voorskou. Dit bly in produksie af. Agterkant-Bearer-sleutels vereis leesomvang vir lys/herspeel en skryfomvang vir registreer/magtig/uitvee/deaktiveer. Bykomende beskikbaarheidskontroles vir die inheemse voorskou geld. Moet nooit permanente werkruimte-API-sleutels in 'n mobiele app inbed nie.