Endpoints스크린타임

스크린타임 상태 조회

`sessionId`의 현재 스크린타임 상태를 반환합니다. 보호자가 설정한 규칙, 오늘의 사용량, 그리고 지금 플레이를 허용해도 되는지 여부가 포함됩니다. 플랫폼은 세션 시작 시점과 `Screentime.LimitWarning`, `Screentime.LimitReached`, `Screentime.QuietHoursWarning`, `Screentime.QuietHoursReached` 웹훅을 받은 뒤에 보관 중인 상태를 갱신하기 위해 이 API를 호출합니다. 보호자가 해당 세션에 스크린타임을 설정하지 않았거나, 설정했더라도 적용을 비활성화한 경우에는 `{ "enabled": false }`를 반환합니다.

GET
/screentime/get-state
AuthorizationBearer <token>

In: header

Query Parameters

sessionId*string
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/screentime/get-state?sessionId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "enabled": true,  "access": {    "allowed": true  },  "state": {    "timeUsedTodayMinutes": 75,    "continuousUsageMinutes": 30,    "timeLimitTodayMinutes": 120,    "timeRemainingTodayMinutes": 45,    "dayResetsAt": "2026-06-25T00:00:00Z"  },  "schedule": {    "timezone": "UTC",    "breakReminderIntervalMinutes": 45,    "dailyLimits": [      {        "day": "mon",        "limitMinutes": 120      },      {        "day": "tue",        "limitMinutes": 120      },      {        "day": "wed",        "limitMinutes": 120      },      {        "day": "thu",        "limitMinutes": 120      },      {        "day": "fri",        "limitMinutes": 120      },      {        "day": "sat",        "limitMinutes": 180      },      {        "day": "sun",        "limitMinutes": 180      }    ],    "quietHours": [      {        "name": "Bedtime",        "days": [          "mon",          "tue",          "wed",          "thu",          "fri"        ],        "start": "21:00",        "end": "07:00"      }    ]  }}

스크린타임 종료 POST

`/screentime/start`로 시작한 활성 스크린타임을 종료합니다. 해당 시간은 오늘의 스크린타임 사용량에 반영되며, 현지 자정을 넘기는 경우 스케줄의 타임존을 기준으로 날짜별로 분할됩니다. 상태 의미: * `accepted` - `id`가 일치하는 스크린타임이 종료되었거나, 이미 종료된 스크린타임에 대한 재시도가 멱등적으로 처리되었습니다. `sessionId`에 활성 스크린타임이 없거나, 이 요청의 `id`가 활성 스크린타임을 시작한 `id`와 일치하지 않으면 `NOT_FOUND` 코드가 반환됩니다.

세션의 완료된 스크린타임 사용 구간 전송 POST

k-ID 세션에 대해 완료된 스크린타임 사용 구간을 하나 이상 전송합니다. 각 이벤트는 사용이 언제 시작되어 얼마나 이어졌는지를 기록합니다. 사용 시간을 사후에만 알 수 있는 경우(구간을 버퍼링해 주기적으로 업로드하는 백엔드, 종료 시점에 세션 합계를 보고하는 게임 엔진 등)에 이 API를 사용하십시오. 수락된 각 구간의 `durationSeconds`는 플레이어의 당일 스크린타임 합계에 더해집니다. 구간이 보호자가 설정한 타임존에서 자정을 넘기면 두 날짜로 분할되어, 각 날짜의 합계가 실제로 그날 발생한 사용량을 반영합니다. 이벤트는 각각 독립적으로 처리됩니다. 응답에는 이벤트별 상태가 담깁니다. * `accepted` - 구간이 기록되어 당일 합계에 반영되었습니다. 이미 수락된 `id`를 가진 이벤트를 다시 전송해도 안전한 무동작으로 처리되어 다시 `accepted`로 집계되고 중복 반영되지 않으므로, 네트워크 장애 후 재시도로 이중 집계되지 않습니다. * `rejected` - 구간이 검증을 통과하지 못했습니다. `reason`이 어떤 규칙에 걸렸는지 알려줍니다. 세션이 존재하지 않거나 무효화된 경우에는 배치 전체가 거부됩니다. 실시간 적용 신호(`Screentime.LimitWarning`, `Screentime.LimitReached`, `Screentime.BreakReminder`)는 이 API에서 발생하지 않습니다. 임계값을 넘는 시점에 이러한 웹훅이 발생해야 하는 연동에서는 `/screentime/start`와 `/screentime/end`를 사용하십시오.