> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seam.co/llms.txt
> Use this file to discover all available pages before exploring further.

# The Event Object

> Learn how the event object represents an occurrence in your workspace, such as a device action or status change, that you can list and react to.

## The event Object

<ResponseExample>
  ```json Event theme={null}
  {
    "connected_account_id": "2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b",
    "created_at": "2025-06-15T16:54:18.000000Z",
    "device_id": "b3c4d5e6-f7a8-49bc-def1-23456789abcd",
    "event_description": "The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.",
    "event_id": "6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a",
    "event_type": "device.connected",
    "occurred_at": "2025-06-15T16:54:17.946329Z",
    "workspace_id": "9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d"
  }
  ```
</ResponseExample>

***

## Properties

<ResponseField name="created_at" type="String (ISO 8601)">
  Date and time at which the event was created.
</ResponseField>

<ResponseField name="event_description" type="String">
  Human-readable description of the event. Persisted when the event is created (so the creating code, including a provider, can supply a tailored description) and otherwise derived from the event.
</ResponseField>

<ResponseField name="event_id" type="String (UUID)">
  ID of the event.
</ResponseField>

<ResponseField name="event_type" type="Enum (String)">
  The event type.

  <Accordion title="Enum values">
    * `access_code.created`
    * `access_code.changed`
    * `access_code.name_changed`
    * `access_code.code_changed`
    * `access_code.time_frame_changed`
    * `access_code.mutations_requested`
    * `access_code.scheduled_on_device`
    * `access_code.set_on_device`
    * `access_code.removed_from_device`
    * `access_code.delay_in_setting_on_device`
    * `access_code.failed_to_set_on_device`
    * `access_code.deleted`
    * `access_code.delay_in_removing_from_device`
    * `access_code.failed_to_remove_from_device`
    * `access_code.modified_external_to_seam`
    * `access_code.deleted_external_to_seam`
    * `access_code.backup_access_code_pulled`
    * `access_code.unmanaged.converted_to_managed`
    * `access_code.unmanaged.failed_to_convert_to_managed`
    * `access_code.unmanaged.created`
    * `access_code.unmanaged.removed`
    * `access_grant.created`
    * `access_grant.deleted`
    * `access_grant.access_granted_to_all_doors`
    * `access_grant.access_granted_to_door`
    * `access_grant.access_to_door_lost`
    * `access_grant.access_times_changed`
    * `access_grant.could_not_create_requested_access_methods`
    * `access_method.issued`
    * `access_method.revoked`
    * `access_method.card_encoding_required`
    * `access_method.deleted`
    * `access_method.reissued`
    * `access_method.created`
    * `acs_system.connected`
    * `acs_system.added`
    * `acs_system.disconnected`
    * `acs_credential.deleted`
    * `acs_credential.issued`
    * `acs_credential.reissued`
    * `acs_credential.invalidated`
    * `acs_user.created`
    * `acs_user.deleted`
    * `acs_encoder.added`
    * `acs_encoder.removed`
    * `acs_access_group.deleted`
    * `acs_entrance.added`
    * `acs_entrance.removed`
    * `client_session.deleted`
    * `connected_account.connected`
    * `connected_account.created`
    * `connected_account.successful_login`
    * `connected_account.disconnected`
    * `connected_account.completed_first_sync`
    * `connected_account.deleted`
    * `connected_account.completed_first_sync_after_reconnection`
    * `connected_account.reauthorization_requested`
    * `action_attempt.lock_door.succeeded`
    * `action_attempt.lock_door.failed`
    * `action_attempt.unlock_door.succeeded`
    * `action_attempt.unlock_door.failed`
    * `action_attempt.simulate_keypad_code_entry.succeeded`
    * `action_attempt.simulate_keypad_code_entry.failed`
    * `action_attempt.simulate_manual_lock_via_keypad.succeeded`
    * `action_attempt.simulate_manual_lock_via_keypad.failed`
    * `connect_webview.login_succeeded`
    * `connect_webview.login_failed`
    * `device.connected`
    * `device.added`
    * `device.converted_to_unmanaged`
    * `device.unmanaged.converted_to_managed`
    * `device.unmanaged.connected`
    * `device.disconnected`
    * `device.unmanaged.disconnected`
    * `device.tampered`
    * `device.low_battery`
    * `device.battery_status_changed`
    * `device.removed`
    * `device.deleted`
    * `device.third_party_integration_detected`
    * `device.third_party_integration_no_longer_detected`
    * `device.salto.privacy_mode_activated`
    * `device.salto.privacy_mode_deactivated`
    * `device.connection_became_flaky`
    * `device.connection_stabilized`
    * `device.error.subscription_required`
    * `device.error.subscription_required.resolved`
    * `device.accessory_keypad_connected`
    * `device.accessory_keypad_disconnected`
    * `noise_sensor.noise_threshold_triggered`
    * `lock.locked`
    * `lock.unlocked`
    * `lock.access_denied`
    * `thermostat.climate_preset_activated`
    * `thermostat.manually_adjusted`
    * `thermostat.temperature_threshold_exceeded`
    * `thermostat.temperature_threshold_no_longer_exceeded`
    * `thermostat.temperature_reached_set_point`
    * `thermostat.temperature_changed`
    * `device.name_changed`
    * `camera.activated`
    * `device.doorbell_rang`
    * `enrollment_automation.deleted`
    * `phone.deactivated`
    * `space.device_membership_changed`
    * `space.created`
    * `space.deleted`
  </Accordion>
</ResponseField>

<ResponseField name="occurred_at" type="String (ISO 8601)">
  Date and time at which the event occurred.
</ResponseField>

<ResponseField name="workspace_id" type="String (UUID)">
  ID of the workspace associated with the event.
</ResponseField>
