Skip to main content

Session.Unlink

Emitted when a verified parent link ends. Either side can end it: the player through POST /session/unlink-parent in your product, or the parent from Family Connect. Because a parent-initiated unlink never passes through your API, this event is the only way you learn about it.

The session isn't deleted. It stays ACTIVE and keeps the player's permissions and pushed data, and only the parent link is removed: the kuid, the parent's email, and the allowances and controls the parent had set. The player carries on with the same sessionId and can invite a parent again later.

Subscribe to this event

A webhook endpoint receives only the event types it's subscribed to. Select Session.Unlink for your endpoint on the product's Developer Settings page in Compliance Studio, or k-ID drops the event without a delivery attempt or an error. It's listed only once verified parent linking is enabled for your organization.

Delivery and recovery

Webhook events are retried up to 2 times on failure. If your server misses one, call GET /session/get with the sessionId and check hasApproverEmail. See Delivery, retries, and recovery for details.

Fields

FieldTypeRequiredDescription
eventTypestringyesAlways "Session.Unlink"
dataobjectyesUnlink data
data.sessionIdstring (UUID)yesThe session the parent was unlinked from
data.productIdnumberyesThe productId for the product
data.unlinkedBystringyesWhich side ended the link. One of player, parent
data.unlinkedAtstring (RFC 3339)yesWhen the link ended

unlinkedBy

ValueMeaning
playerThe unlink came through POST /session/unlink-parent, which is the player-facing surface in your product. k-ID also emails the parent to tell them the link ended
parentThe parent unlinked from Family Connect

Example

{
"eventType": "Session.Unlink",
"data": {
"sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672",
"productId": 12345,
"unlinkedBy": "player",
"unlinkedAt": "2026-04-20T18:42:11Z"
}
}

Handling the event

  • Match data.sessionId back to your stored player record, and stop showing a parent as connected.
  • Stop applying the controls the parent had set. They're cleared on the k-ID side too, so GET /screentime/get-state no longer returns their schedule.
  • Keep the session. Don't send the player back through the age gate, and keep pushing usage data as before.
  • Make your handler idempotent. Deliveries are at-least-once, so the same event can arrive more than once. A repeated POST /session/unlink-parent doesn't fire a second event: it returns the original unlinkedAt and stops there.