Start screentime
Marks the start of active screentime on this product. While screentime is active, k-ID delivers real-time webhooks - `Screentime.BreakReminder`, `Screentime.LimitWarning`, and `Screentime.LimitReached` - that fire at the moment a threshold is crossed, not only when usage ends. Status semantics: * `accepted` - screentime was started, or a retried call against an already-active session was absorbed idempotently. * `replaced` - a different `id` was sent while screentime was already active for this `sessionId`; the prior screentime was automatically ended and its duration counted toward today's screentime usage. Use this to recover when the prior screentime was never explicitly ended (e.g. after an app or device restart). Only one active screentime is supported per `sessionId` at a time. Calls must be made in real time - the `timestamp` value cannot be more than 5 minutes in the past.
Authorization
api-key In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/screentime/start" \ -H "Content-Type: application/json" \ -d '{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "id": "3f8c1d24-6b5e-4a07-9c2f-8d1e7a4b6c90", "timestamp": "2026-06-24T16:00:00Z" }'{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "id": "3f8c1d24-6b5e-4a07-9c2f-8d1e7a4b6c90", "status": "accepted", "screentime": { "counter": { "timeUsedTodayMinutes": 45, "timeLimitTodayMinutes": 120, "timeRemainingTodayMinutes": 75, "dayResetsAt": "2026-06-25T00:00:00Z" } }}{ "error": "INVALID_INPUT", "errorMessage": "The request was missing a sessionId parameter."}Request a screentime override POST
Submits an override request on the kid's behalf when they want more time today or to bypass active quiet hours. k-ID records the request and notifies the parent to approve or deny. Idempotent per kid: a call made while another request from the same kid is still pending returns that pending request unchanged rather than creating a second one. The resolution arrives asynchronously as a single `Screentime.OverrideResult` webhook with `status: "granted" | "denied" | "expired"`. The webhook body carries the same shape as `GET /screentime/get-state` under `state`, so the platform can update its copy of the state directly without a follow-up fetch. Requests that aren't resolved within 24 hours fire the webhook with `status: "expired"`.
Normalize a merchant of record's payment into a standard format POST
Normalizes a merchant of record's raw payment payload into a standard, provider-independent shape, so downstream transaction calls do not need to know each provider's format. Name the merchant of record in `provider` and pass its raw payload in `data`. For Xsolla that payload is the `payment` webhook body, which must include the card BIN.