Жалпы API & API ачкычтары

Жумуш мейкиндигиңизге программа аркылуу кирүү — долбоорлорду, сеанстарды, ыңгайлаштырылган окуяларды жана сегменттерди окуп, сеанстарга кардар IDлерин кошуңуз — жумуш мейкиндиги менен чектелген API ачкычтары аркылуу корголот.

1. Сереп

MousePlayer APIсы жумуш мейкиндигиңизден маалыматтарды өз башкаруу такталарыңызга, маалымат кампаңызга же ички куралдарыңызга алууга мүмкүндүк берет. Сеанстарга кардар IDлерин кошуудан тышкары (identify, жазуу укугу бар ачкыч керек, Ачкыч укуктарын караңыз), ал окуу үчүн гана: API аркылуу маалыматты өзгөртүүгө же өчүрүүгө болбойт.

  • Негизги URL дареги: https://www.mouseplayer.com/api/v1/
  • Бардык жооптор JSON түрүндө.
  • Ар бир сурам API ачкычы менен ырасталып, автоматтык түрдө ошол ачкыч таандык жумуш мейкиндиги менен чектелет — бир жумуш мейкиндигинин ачкычы башкасынын маалыматтарын кокусунан да көрө албайт.
  • Толук сеанс жаздыруусу (чычкан кыймылы, DOM сүрөттөрү) API аркылуу берилбейт . Сеанс метадайындары, бетти көрүүлөр, ыңгайлаштырылган окуялар жана сегменттер берилет — чийки жаздыруу жүгүн ташыбай эле отчёт жана башкаруу такталарын түзүүгө жетиштүү.

2. Аныктыгын текшерүү

API ачкычтарыңызды аккаунт менюңуздагы API ачкычтары бөлүмүндө (/api-keys) түзүп, башкарыңыз. Ачкычтарды жумуш мейкиндигинин ээлери менен администраторлору гана түзүп же жокко чыгара алат.

Ачкычты сыр сактаңыз. Ал жумуш мейкиндигиңиздеги баарын окууга укук берет. Толук ачкыч түзүлгөндөн кийин так бир жолу көрсөтүлөт — аны сырсөз башкаргычында же сырлар сактагычында сактаңыз. Жоготсоңуз, жокко чыгарып, жаңысын түзүңүз.

Ар бир сурамдын Authorization аталышында ачкычты Bearer токени катары жөнөтүңүз:

# List projects in your workspace curl -H "Authorization: Bearer mp_live_..." \ https://www.mouseplayer.com/api/v1/projects

Жок, туура эмес түзүлгөн же жокко чыгарылган ачкычтарга 401 жообу берилет:

{ "error": "Invalid or missing API key. Use: Authorization: Bearer <key>" }

Тариф талабы

REST API Business жана Enterprise тарифтерине кирет. Тариф жумуш мейкиндигинин ээсинен алынат, ошондуктан чакырылган топ мүчөлөрү да аны колдонот. Текшерүү ачкыч түзүлгөндө гана эмес, ар бир сурамда жүргүзүлөт — жумуш мейкиндигинин тарифи төмөндөтүлсө, бар ачкычтар иштебей, 403 кайтарат.

Ачкыч укуктары

Ар бир ачкыч укугун өз префиксинде камтыйт. Ошондуктан ачкычты көрүү менен эле эмне кыларын билесиз — .env ичинде, өтүнмөдө же терминалда.

ПрефиксМааниси
mp_ro_Окуу үчүн гана. Долбоорлорду, сеанстарды, окуяларды жана сегменттерди окуйт. Эч нерсе өзгөртө албайт.
mp_rw_Окуу жана жазуу. Жогорудагылардын баары, ошондой эле identify чекити аркылуу кардар IDлерин кошуу.
Ачкыч түзүлгөндө укугун тандаңыз; демейкиси — окуу үчүн гана. Жазуучу чекитте окуу ачкычын колдонуу 403 жана ачкычтын укугун, чекиттин талабын атаган билдирүүнү кайтарат. Укукту кийин өзгөртүүгө болбойт — жаңы ачкыч түзүп, эскисин жокко чыгарыңыз.

3. Сурам чектери

Ар бир API ачкычынын чеги — мүнөтүнө 60 сурам, жылма аралыкта эсептелет. Ашканда аралык бошогонго чейин сурамдарга 429 жообу берилет:

{ "error": "Rate limit exceeded. Max 60 requests per minute." }

Жогорураак чек керек болгон нерсе куруп жатасызбы? Колдоо аркылуу кайрылып, колдонуу мисалыңызды айтыңыз.

4. Чекиттер

GET/api/v1/projects

Жумуш мейкиндигиңиздеги бардык долбоорлорду (көзөмөлдөнгөн сайттарды) тизмелейт.

{ "data": [ { "channelid": "955a45df5ee842cb", "domain": "yourdomain.com", "status": "active", "total_traffic_bytes": 27304765, "created_at": "2026-07-19 22:06:39", "last_used": "2026-08-05 01:12:55" } ] }

GET/api/v1/projects/{channelid}/sessions

Долбоорго жазылган конок сеанстарын жаңысынан баштап тизмелейт. Беттерге бөлүнгөн.

Сурам параметриСүрөттөмө
pageБет номери, демейкиси 1.
per_pageБир беттеги жыйынтык саны, демейкиси 25, эң көбү 100.
sinceУшул күнү же андан кийин башталган сеанстар гана (YYYY-MM-DD).
untilУшул күнү же андан мурун башталган сеанстар гана.
{ "data": [ { "session_id": "s_kfmist058_1785795295504", "visitor_id": "v_sv90jdpzo_1785795296042", "custom_user_id": null, "country": "DE", "device_type": "desktop", "is_bot": 0, "start_time": "2026-08-04 00:14:56", "end_time": "2026-08-04 00:16:41", "duration_seconds": 105 } ], "pagination": { "page": 1, "per_page": 25, "total": 142, "total_pages": 6 } }

GET/api/v1/sessions/{session_id}

Бир сеанстын метадайындары жана бетти көрүүлөрү. Толук жаздыруу жүгү атайылап кошулбайт — ал үчүн башкаруу тактасынын ойноткучун колдонуңуз.

{ "data": { "session_id": "s_kfmist058_1785795295504", "channelid": "955a45df5ee842cb", "visitor_id": "v_sv90jdpzo_1785795296042", "country": "DE", "asn_org": "Deutsche Telekom AG", "referrer": "https://duckduckgo.com/", "device_type": "desktop", "start_time": "2026-08-04 00:14:56", "end_time": "2026-08-04 00:16:41", "duration_seconds": 105, "pageviews": [ { "pageview_id": 1199, "url": "https://yourdomain.com/pricing", "page_title": "Pricing", "start_time": "2026-08-04 00:14:56", "end_time": "2026-08-04 00:16:41" } ] } }

GET/api/v1/sessions/{session_id}/events

Сеанс учурунда болгон ыңгайлаштырылган окуялар (сиз mp('event', ...) менен жөнөткөн ошол эле окуялар), параметрлери менен.

{ "data": [ { "event_id": 61, "pageview_id": 1199, "event_name": "add_to_cart", "created_at": "2026-08-04 00:14:59", "params": { "item_id": "SKU_98765", "price": 299.99 } } ] }

GET/api/v1/projects/{channelid}/segments

Долбоор үчүн аныкталган конок сегменттерин тизмелейт (долбоорго тиешелүү жана бүт жумуш мейкиндиги боюнча сегменттер).

{ "data": [ { "segment_id": 4, "name": "High Intent Visitors", "description": "Pageviews > 5", "badge_color": "cyan", "is_global": 0, "created_at": "2026-08-03 00:00:43" } ] }

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 сеанс тизмесинде көрүнүп, изделет жана session_identified вебхугу иштейт — ал CRMиңизге ушинтип жетет.

Бир эле ID менен эки жолу чакыруу коопсуз. Жоопто "changed": false келет жана вебхук жөнөтүлбөйт. Кайталанган буйрутма экинчи лид түзбөйт.
АбалКачан
400Талаа жок, user_id 128 белгиден узун же башкаруу белгилерин камтыйт. Кыскартпай, четке кагабыз — үнсүз кыскартылган ID CRMиңизде эч нерсеге дал келбейт, бирок ийгилик болуп көрүнөт.
404Сеанс жок же жумуш мейкиндигиңизге таандык эмес. Экөөнө атайылап бирдей жооп берилет.
403Жумуш мейкиндигинин тарифинде API жок.

6. Вебхуктар: кол тамганы текшерүү

Вебхуктар ар бир долбоордун Интеграциялар бөлүмүндө жөндөлөт; ал жерде кол коюу сыры да бар. Ар бир жеткирүүдө төмөнкү аталыштар болот:

АталышМааниси
X-MousePlayer-EventОкуянын аты, мисалы session_identified
X-MousePlayer-TimestampUnix секунддары — кол коюлган тексттин бөлүгү
X-MousePlayer-AttemptБиринчи аракетте 1, кайра аракеттерде чоңураак
X-MousePlayer-Signaturesha256=<hex>

Кол тамга — timestamp + "." + raw body боюнча долбооруңуздун кол коюу сыры менен түзүлгөн HMAC-SHA256.

// 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');
JSONду талдоодон мурун чийки денеге кол коюңуз. Кайра сериалдаштыруу ачкыч тартибин жана боштуктарды өзгөртөт, ошондо кол тамга эч качан дал келбейт. Убакыт белгиси бир нече мүнөттөн эски болгон нерсени да четке кагыңыз — убакыт белгиси ошол үчүн.

Жеткирүү жана кайра аракеттер

Ийгиликсиз жеткирүү 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 вебхук аркылуу кеткенде гана жөнөтүлөт жана өзүнчө которгучу жок: 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_detectedFront-end өзгөчө кырдаалында
ceӨзүңүздүн ыңгайлаштырылган окуяларыңызга жалпы жазылуу. Ал жогорудагы окуяларды камтыбайт — алардын өз которгучтары бар.

7. Каталар & абал коддору

АбалМааниси
200Ийгилик.
401API ачкычы жок, туура эмес түзүлгөн же жокко чыгарылган.
404Суралган долбоор же сеанс жок же жумуш мейкиндигиңизге таандык эмес.
429Сурам чеги ашты — бул ачкыч менен мүнөтүнө 60 сурамдан көп жөнөтүп жатасыз.
403Жумуш мейкиндигинин тарифинде REST API жок. Билдирүү керектүү тарифти да, учурдагыны да атайт.

8. Коопсуздук эскертүүлөрү

  • Окуу ачкычтары (mp_ro_) эч нерсе өзгөртө албайт. Жазуу ачкычтары (mp_rw_) кардар IDлерин гана кошо алат; эч бир ачкыч маалымат өчүрө же чийки жаздыруу маалыматтарын экспорттой албайт.
  • Ар бир сурам автоматтык түрдө ачкычтын өз жумуш мейкиндиги менен чектелет — башка жумуш мейкиндигинин IDсин берип, бирөөнүн маалыматтарын көрүү мүмкүн эмес.
  • Ачкычты каалаган убакта /api-keys аркылуу жокко чыгарыңыз; жокко чыгаруу дароо күчүнө кирет.
  • API ачкычын сырсөздөй сактаңыз. Кокус жалпыга ачык репозиторийге коммит кылсаңыз, дароо жокко чыгарып, жаңысын түзүңүз.

Чектелген окуя беттери (API v1, 2026-жылдын 14-октябры)

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 байт менен чектелет, ошондуктан бетте per_page маанисинен аз окуя болушу мүмкүн. Ар бир окуяга эң көбү 128 параметр сабы берилет; көбүрөөк болсо params_truncated true болот. Жеке сап параметрлеринде маалымат базасынын 255 белги чеги сакталат. Кыскартылган параметрлер бул чекит аркылуу жеткиликтүү эмес. per_page азайтуу параметр чегин көтөрбөйт.

Туура эмес бет өлчөмдөрү, өзгөртүлгөн курсорлор жана башка сеанс/жумуш мейкиндигинин курсорлору 400 кайтарат. Өтө чоң жеке окуя маалыматы 413 кайтарат. Мурдагы кирүү текшерүүлөрү тиешелүү түрдө 401, 403, 404 же 409 кайтарууну улантат.

Чек ар бир API ачкычы үчүн мүнөтүнө 60 ырасталган сурам бойдон калат. Түгөнгөндө 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 — жергиликтүү SDK алдын ала көрүнүшү үчүн Dev гана сервердик башкаруу жолу. Ал өндүрүштө өчүк калат. Сервердик Bearer ачкычтарына list/replay үчүн окуу, register/grant/delete/disable үчүн жазуу укугу керек. Жергиликтүү алдын ала көрүнүштүн жеткиликтүүлүгүнө кошумча текшерүүлөр колдонулат. Туруктуу жумуш мейкиндигинин API ачкычтарын мобилдик колдонмого эч качан киргизбеңиз.