End screentime
Ends active screentime previously started with `/screentime/start`. The duration is counted toward today's screentime usage, split across day boundaries in the schedule's timezone when the screentime crosses local midnight. Status semantics: * `accepted` - the screentime matching `id` was ended, or a retried call for a screentime that was already ended was absorbed idempotently. A `NOT_FOUND` code is returned when no screentime is active for `sessionId`, or when the `id` in this request doesn't match the `id` that started the active screentime.
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/end" \ -H "Content-Type: application/json" \ -d '{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "id": "3f8c1d24-6b5e-4a07-9c2f-8d1e7a4b6c90", "timestamp": "2026-06-24T16:30:00Z" }'{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "id": "3f8c1d24-6b5e-4a07-9c2f-8d1e7a4b6c90", "status": "accepted", "screentime": { "counter": { "timeUsedTodayMinutes": 75, "timeLimitTodayMinutes": 120, "timeRemainingTodayMinutes": 45, "dayResetsAt": "2026-06-25T00:00:00Z" } }}{ "error": "INVALID_INPUT", "errorMessage": "The request was missing a sessionId parameter."}Push activity records for a session POST
Submit a batch of activity records against product-declared activity types. Records are validated per-record; the response carries a per-record status (`accepted` or `rejected` with a reason). Submitting a record whose `id` was already accepted is a safe no-op - it counts as `accepted` again and is not stored twice. The whole batch is rejected if the session does not exist or is revoked.
Get screentime state GET
Returns the current screentime state for a `sessionId`: the parent-set rules, today's usage, and whether the platform may permit play right now. Platforms call this at the start of a session and after `Screentime.LimitWarning`, `Screentime.LimitReached`, `Screentime.QuietHoursWarning`, or `Screentime.QuietHoursReached` webhooks to refresh their copy of the state. Returns `{ "enabled": false }` when the parent has not configured screentime for the session, or has configured it but disabled enforcement.