Logs

Every change to a room is written to its activity log. Use these endpoints to read the log and to undo a change.


The log entry object

A room keeps its latest 500 entries.

  • Name
    _id
    Type
    string
    Description

    Unique id.

  • Name
    _model
    Type
    string
    Description

    The type of this object. Always log_entry.

  • Name
    _timestamp
    Type
    timestamp
    Description

    When it happened.

  • Name
    actor
    Type
    object
    Description

    Who made the change.

  • Name
    action
    Type
    string
    Description

    What happened, as a key such as timer.start.

  • Name
    target
    Type
    object or null
    Description

    What the change was made to.

  • Name
    detail
    Type
    object or null
    Description

    More about the change. Its contents depend on action.

  • Name
    formatted
    Type
    string
    Description

    The change as a sentence in English.


GET/rooms/{room_id}/logs

List log entries

Returns the room's activity, newest first.

Path parameters

  • Name
    room_id
    Type
    string
    Required
    Description

    The room's id, from its address: /o/ROOM_ID/….

Query parameters

  • Name
    limit
    Type
    integer
    Description

    How many entries to return. From 1 to 200. Defaults to 20.

  • Name
    offset
    Type
    integer
    Description

    How many entries to skip. Defaults to 0.

Request

GET
/rooms/{room_id}/logs
curl https://app.kloksi.com/api/v1/rooms/ROOM_ID/logs \
  -H "Authorization: Bearer YOUR_API_KEY"

Response 200

{
  "ok": true,
  "message": "Logs loaded",
  "data": {
    "list": [
      {
        "_id": "Q6rS7tU8vW9x",
        "_model": "log_entry",
        "_timestamp": "2026-11-05T09:30:00.000Z",
        "actor": {
          "kind": "device",
          "id": "",
          "label": ""
        },
        "action": "timer.start",
        "target": null,
        "detail": null,
        "formatted": "Started timer `Opening keynote`"
      }
    ]
  }
}

POST/rooms/{room_id}/logs/{log_id}/restore

Undo a logged change

Undoes an edit or a delete recorded in the log, and logs that too. If the item has changed since, you get a 409 with current_after in the body. Send force: true to overwrite it anyway.

Path parameters

  • Name
    room_id
    Type
    string
    Required
    Description

    The room's id, from its address: /o/ROOM_ID/….

  • Name
    log_id
    Type
    string
    Required
    Description

    The log entry's id.

Body

  • Name
    force
    Type
    boolean
    Description

    Overwrite the item even if it has changed since. Defaults to false.

Request

POST
/rooms/{room_id}/logs/{log_id}/restore
curl -X POST https://app.kloksi.com/api/v1/rooms/ROOM_ID/logs/LOG_ID/restore \
  -H "Authorization: Bearer YOUR_API_KEY"

Response 200

{
  "ok": true,
  "message": "Restored",
  "data": {
    "restored_log_id": "Q6rS7tU8vW9x"
  }
}