Push activity records for a session
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.
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/activity/push" \ -H "Content-Type: application/json" \ -d '{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "records": [ { "id": "7c3e0c6e-9c2a-4f1e-bd2b-1f9a3c6d8e10", "type": "2f9a1c84-6b3e-4d52-9f08-1a7c3e5d9b20", "value": { "seconds": 1800 }, "timestamp": "2026-06-24T14:32:05Z" }, { "id": "a4f2b8d1-3e7c-4a90-8b6f-2c5d9e0a1b34", "type": "8d3b6e10-4f29-4a71-bc52-9e0a1c7d3f64", "value": { "amount": 999, "currency": "USD" }, "timestamp": "2026-06-24T15:02:05Z" } ] }'{ "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672", "accepted": 2, "rejected": 0, "records": [ { "id": "7c3e0c6e-9c2a-4f1e-bd2b-1f9a3c6d8e10", "status": "accepted" }, { "id": "a4f2b8d1-3e7c-4a90-8b6f-2c5d9e0a1b34", "status": "accepted" } ]}{ "error": "INVALID_INPUT", "errorMessage": "The request was missing a sessionId parameter."}Perform trusted adult verification POST
Starts a trusted adult verification and returns a hosted URL to display in an iframe. It establishes that the person completing it is an adult who can act for a minor, rather than establishing a specific age — so it takes no age criteria. The player completes it at the returned URL; read the outcome from `/age-verification/get-status` or a webhook.
End screentime POST
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.