Δημόσιο API & κλειδιά API
Προγραμματιστική πρόσβαση στον χώρο εργασίας σας — διαβάστε έργα, συνεδρίες, προσαρμοσμένα συμβάντα και τμήματα και συνδέστε ID πελατών με συνεδρίες — με προστασία μέσω κλειδιών API περιορισμένων στον χώρο εργασίας.
1. Επισκόπηση
Το API του MousePlayer σάς επιτρέπει να ανακτάτε δεδομένα από τον χώρο εργασίας σας στους δικούς σας πίνακες ελέγχου, στην αποθήκη δεδομένων ή στα εσωτερικά εργαλεία σας. Εκτός από τη σύνδεση ID πελατών με συνεδρίες (identify, απαιτεί κλειδί με δικαίωμα εγγραφής, δείτε Εμβέλεια κλειδιών), παρέχει μόνο ανάγνωση: κανένα δεδομένο δεν μπορεί να τροποποιηθεί ή να διαγραφεί μέσω του API.
- Βασικό URL:
https://www.mouseplayer.com/api/v1/ - Όλες οι αποκρίσεις είναι JSON.
- Κάθε αίτημα ελέγχεται με κλειδί API και περιορίζεται αυτόματα στον χώρο εργασίας στον οποίο ανήκει το κλειδί — ένα κλειδί από έναν χώρο εργασίας δεν μπορεί ποτέ να δει δεδομένα άλλου χώρου, ούτε κατά λάθος.
- Η πλήρης καταγραφή αναπαραγωγής συνεδρίας (κινήσεις ποντικιού, στιγμιότυπα DOM) δεν διατίθεται μέσω του API. Λαμβάνετε μεταδεδομένα συνεδριών, προβολές σελίδας, προσαρμοσμένα συμβάντα και τμήματα — αρκετά για τη δημιουργία αναφορών και πινάκων ελέγχου χωρίς μεταφορά του ανεπεξέργαστου φορτίου αναπαραγωγής.
2. Έλεγχος ταυτότητας
Δημιουργήστε και διαχειριστείτε τα κλειδιά API στην ενότητα Κλειδιά API του μενού λογαριασμού σας (/api-keys). Μόνο κάτοχοι και διαχειριστές χώρου εργασίας μπορούν να δημιουργούν ή να ανακαλούν κλειδιά.
Κρατήστε το κλειδί σας μυστικό. Παρέχει πρόσβαση ανάγνωσης σε όλα όσα βρίσκονται στον χώρο εργασίας σας. Το πλήρες κλειδί εμφανίζεται ακριβώς μία φορά, αμέσως μετά τη δημιουργία του — αποθηκεύστε το σε διαχειριστή κωδικών πρόσβασης ή θυρίδα μυστικών. Αν το χάσετε, ανακαλέστε το και δημιουργήστε νέο.
Στείλτε το κλειδί ως token Bearer στην κεφαλίδα Authorization κάθε αιτήματος:
Κλειδιά που λείπουν, έχουν λανθασμένη μορφή ή έχουν ανακληθεί λαμβάνουν απόκριση 401:
Απαίτηση προγράμματος
Το REST API περιλαμβάνεται στα προγράμματα Business και Enterprise. Λαμβάνεται υπόψη το πρόγραμμα του κατόχου του χώρου εργασίας, οπότε τα προσκεκλημένα μέλη ομάδας το κληρονομούν. Ο έλεγχος εκτελείται σε κάθε αίτημα, όχι μόνο όταν δημιουργείται ένα κλειδί — αν υποβαθμιστεί ο χώρος εργασίας, τα υπάρχοντα κλειδιά παύουν να λειτουργούν και επιστρέφουν 403.
Εμβέλεια κλειδιών
Κάθε κλειδί δηλώνει την εμβέλειά του στο δικό του πρόθεμα, ώστε να μπορείτε να καταλάβετε τι κάνει απλώς κοιτάζοντάς το — σε ένα .env, σε ένα αίτημα, σε ένα τερματικό.
| Πρόθεμα | Σημασία |
|---|---|
mp_ro_ | Μόνο ανάγνωση. Διαβάζει έργα, συνεδρίες, συμβάντα και τμήματα. Δεν μπορεί να αλλάξει τίποτα. |
mp_rw_ | Ανάγνωση και εγγραφή. Όλα τα παραπάνω, συν σύνδεση ID πελατών μέσω του τελικού σημείου ταυτοποίησης. |
403 με μήνυμα που κατονομάζει τι είναι το κλειδί και τι χρειάζεται το τελικό σημείο. Η εμβέλεια δεν μπορεί να αλλάξει εκ των υστέρων — δημιουργήστε νέο κλειδί και ανακαλέστε το παλιό.3. Όρια ρυθμού αιτημάτων
Κάθε κλειδί API περιορίζεται σε 60 αιτήματα ανά λεπτό, με παρακολούθηση σε κυλιόμενο χρονικό παράθυρο. Μόλις το υπερβείτε, τα αιτήματα λαμβάνουν απόκριση 429 μέχρι να εκκαθαριστεί το παράθυρο:
Δημιουργείτε κάτι που χρειάζεται υψηλότερο όριο; Επικοινωνήστε μέσω της Υποστήριξης και πείτε μας την περίπτωση χρήσης σας.
4. Τελικά σημεία
GET/api/v1/projects
Παραθέτει κάθε έργο (παρακολουθούμενο ιστότοπο) στον χώρο εργασίας σας.
GET/api/v1/projects/{channelid}/sessions
Παραθέτει τις συνεδρίες επισκεπτών που καταγράφηκαν για ένα έργο, με τις νεότερες πρώτα. Με σελιδοποίηση.
| Παράμετρος ερωτήματος | Περιγραφή |
|---|---|
page | Αριθμός σελίδας, προεπιλογή 1. |
per_page | Αποτελέσματα ανά σελίδα, προεπιλογή 25, μέγιστο 100. |
since | Μόνο συνεδρίες που ξεκινούν κατά ή μετά από αυτή την ημερομηνία (YYYY-MM-DD). |
until | Μόνο συνεδρίες που ξεκινούν κατά ή πριν από αυτή την ημερομηνία. |
GET/api/v1/sessions/{session_id}
Μεταδεδομένα μίας συνεδρίας μαζί με τις προβολές σελίδας της. Σκόπιμα εξαιρείται το πλήρες φορτίο αναπαραγωγής — γι’ αυτό χρησιμοποιήστε το πρόγραμμα αναπαραγωγής του πίνακα ελέγχου.
GET/api/v1/sessions/{session_id}/events
Προσαρμοσμένα συμβάντα που ενεργοποιήθηκαν στη διάρκεια μιας συνεδρίας (τα ίδια συμβάντα που στέλνετε με mp('event', ...)), μαζί με τις παραμέτρους τους.
GET/api/v1/projects/{channelid}/segments
Παραθέτει τα τμήματα επισκεπτών που έχουν οριστεί για ένα έργο (τόσο τα ειδικά για το έργο όσο και εκείνα για ολόκληρο τον χώρο εργασίας).
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 εμφανίζεται έπειτα στη λίστα συνεδριών, μπορεί να αναζητηθεί εκεί και ενεργοποιείται το webhook session_identified — έτσι φτάνει στο CRM σας.
"changed": false και δεν αποστέλλεται webhook. Μια επαναλαμβανόμενη παραγγελία δεν δημιουργεί δεύτερο υποψήφιο πελάτη.| Κατάσταση | Πότε |
|---|---|
400 | Πεδίο που λείπει, user_id με περισσότερους από 128 χαρακτήρες ή με χαρακτήρες ελέγχου. Απορρίπτουμε αντί να περικόπτουμε — ένα ID που συντομεύεται σιωπηλά δεν αντιστοιχεί σε τίποτα στο CRM σας και παρ’ όλα αυτά μοιάζει με επιτυχία. |
404 | Η συνεδρία δεν υπάρχει ή δεν ανήκει στον χώρο εργασίας σας. Σκόπιμα η ίδια απάντηση και για τα δύο. |
403 | Το πρόγραμμα του χώρου εργασίας δεν περιλαμβάνει το API. |
6. Webhook: επαλήθευση της υπογραφής
Τα webhook διαμορφώνονται ανά έργο στην ενότητα Ενσωματώσεις, όπου βρίσκετε και το μυστικό υπογραφής. Κάθε παράδοση περιέχει αυτές τις κεφαλίδες:
| Κεφαλίδα | Σημασία |
|---|---|
X-MousePlayer-Event | Όνομα συμβάντος, π.χ. session_identified |
X-MousePlayer-Timestamp | Δευτερόλεπτα Unix — μέρος του υπογεγραμμένου κειμένου |
X-MousePlayer-Attempt | 1 στην πρώτη προσπάθεια, υψηλότερο στις επαναλήψεις |
X-MousePlayer-Signature | sha256=<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');
Παράδοση και επαναλήψεις
Μια αποτυχημένη παράδοση επαναλαμβάνεται μετά από 1 λεπτό, 5 λεπτά, 15 λεπτά, 1 ώρα και 6 ώρες και μετά εγκαταλείπεται. 4xx αποκρίσεις εκτός από 408 και 429 δεν επαναλαμβάνονται — δηλώνουν "όχι έτσι", όχι "όχι αυτή τη στιγμή". Απαντήστε 2xx γρήγορα και κάντε την εργασία μετά· η παράδοση λήγει μετά από 10 δευτερόλεπτα.
Διαθέσιμα συμβάντα
| Συμβάν | Ενεργοποιείται |
|---|---|
session_identified | Όταν μια συνεδρία αποκτά για πρώτη φορά ID πελάτη — από το πρόγραμμα περιήγησης ή από το API |
session_ended | Μία φορά, όταν κλείνει η συνεδρία |
goal_reached | Μία φορά ανά συνεδρία, όταν ένα προσαρμοσμένο συμβάν εκπληρώνει έναν από τους στόχους σας. Μόνο στόχοι τύπου «event» — οι στόχοι 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 στάλθηκε μέσω webhook και δεν έχει δικό του διακόπτη: η εγγραφή στο 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 | Επιτυχία. |
401 | Κλειδί API που λείπει, έχει λανθασμένη μορφή ή έχει ανακληθεί. |
404 | Το ζητούμενο έργο ή η συνεδρία δεν υπάρχει ή δεν ανήκει στον χώρο εργασίας σας. |
429 | Υπέρβαση ορίου ρυθμού αιτημάτων — στέλνετε περισσότερα από 60 αιτήματα/λεπτό με αυτό το κλειδί. |
403 | Το πρόγραμμα του χώρου εργασίας δεν περιλαμβάνει το REST API. Το μήνυμα κατονομάζει τόσο το απαιτούμενο όσο και το τρέχον πρόγραμμα. |
8. Σημειώσεις ασφαλείας
- Τα κλειδιά μόνο ανάγνωσης (mp_ro_) δεν μπορούν να αλλάξουν τίποτα. Τα κλειδιά εγγραφής (mp_rw_) μπορούν μόνο να συνδέουν ID πελατών· κανένα κλειδί δεν μπορεί να διαγράψει δεδομένα ή να εξαγάγει ανεπεξέργαστα δεδομένα αναπαραγωγής.
- Κάθε αίτημα περιορίζεται αυτόματα στον χώρο εργασίας του ίδιου του κλειδιού — δεν υπάρχει τρόπος να μεταβιβάσετε διαφορετικό ID χώρου εργασίας και να δείτε δεδομένα άλλου.
- Ανακαλέστε ένα κλειδί ανά πάσα στιγμή από το /api-keys· η ανάκληση τίθεται σε ισχύ αμέσως.
- Αντιμετωπίζετε το κλειδί API σας όπως έναν κωδικό πρόσβασης. Αν κατά λάθος το καταχωρίσετε σε δημόσιο αποθετήριο, ανακαλέστε το αμέσως και δημιουργήστε νέο.
Περιορισμένες σελίδες συμβάντων (API v1, 14 Οκτωβρίου 2026)
Το GET /api/v1/sessions/{session_id}/events επιστρέφει έως 100 συμβάντα από προεπιλογή. Ορίστε το per_page σε ακέραιο από 1 έως 100. Ακολουθήστε το pagination.next_cursor στέλνοντας το cursor αμετάβλητο στο επόμενο αίτημα· διατηρήστε την ίδια συνεδρία και τον ίδιο χώρο εργασίας. Τα συμβάντα ταξινομούνται βάσει created_at και event_id. Οι δρομείς σελιδοποίησης είναι υπογεγραμμένοι και δεσμευμένοι σε εκείνη τη συνεδρία και τον χώρο εργασίας. Δεν επιστρέφεται συνολικό πλήθος ή αριθμητική σελίδα.
Ο υπάρχων πίνακας data και η αντιστοίχιση params παραμένουν διαθέσιμα. Το pagination.returned είναι το πραγματικό πλήθος που επιστράφηκε· το pagination.has_more υποδεικνύει επιπλέον σελίδα. Το next_cursor είναι null όταν ολοκληρωθεί η ανάκτηση. Μια απόκριση περιορίζεται σε 524288 byte, οπότε μια σελίδα μπορεί να περιέχει λιγότερα συμβάντα από το per_page. Ανά συμβάν επιστρέφονται το πολύ 128 γραμμές παραμέτρων· το params_truncated είναι true αν υπάρχουν περισσότερες. Οι μεμονωμένες παράμετροι συμβολοσειράς διατηρούν το όριο της βάσης δεδομένων των 255 χαρακτήρων. Οι περικομμένες παράμετροι δεν διατίθενται μέσω αυτού του τελικού σημείου. Η μείωση του per_page δεν αυξάνει το όριο παραμέτρων.
Μη έγκυρα μεγέθη σελίδας, αλλοιωμένοι δρομείς σελιδοποίησης και δρομείς για άλλη συνεδρία/χώρο εργασίας επιστρέφουν 400. Υπερμεγέθη δεδομένα μεμονωμένου συμβάντος επιστρέφουν 413. Οι υπάρχοντες έλεγχοι πρόσβασης εξακολουθούν να επιστρέφουν 401, 403, 404 ή 409, ανάλογα με την περίπτωση.
Το όριο παραμένει 60 αιτήματα με έλεγχο ταυτότητας ανά κλειδί API ανά λεπτό. Η εξάντληση επιστρέφει 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 είναι διαδρομή ελέγχου του διακομιστή αποκλειστικά στο Dev για την προεπισκόπηση του εγγενούς SDK. Παραμένει απενεργοποιημένο στην παραγωγή. Τα κλειδιά Bearer του διακομιστή χρειάζονται δικαίωμα ανάγνωσης για list/replay και εγγραφής για register/grant/delete/disable. Ισχύουν επιπλέον έλεγχοι διαθεσιμότητας της εγγενούς προεπισκόπησης. Μην ενσωματώνετε ποτέ μόνιμα κλειδιά API χώρου εργασίας σε εφαρμογή κινητού.