This page describes the events in the Editor Logs. To fetch them with the SDK, see View Editor Logs. To read them in your code, see Read Events with the SDK.
Overview
The Encord Editor tracks user interactions and changes to provide analytics, audit trails, and workflow management capabilities. All events are logged with a consistent base structure and additional properties specific to each action type.Base Properties
All editor log events include the following base properties:Read Events with the SDK
The property names on this page are the field names the API uses.get_editor_logs() converts them to snake_case Python attributes, so dataUnitId becomes log.data_unit_id. To get the original names back, use log.to_dict(). The action value is a lowercase string, for example "create_object" for CREATE_OBJECT.
Python SDK Example
Python SDK Example
The following script prints the events from the last day for a Project. It reads the properties all events share, then checks the event’s class to read the properties only object or classification events have.
Read editor log events
Properties on this page and their SDK names
Additional properties returned by the SDK
Every log returned by the SDK also includes:eventInformation is not available through the SDK. The SDK log classes don’t define it, and the SDK ignores any field it doesn’t define, so details such as old and new coordinates, lastEditedBy, and winningSetAnnotator can’t currently be read with get_editor_logs().Object Actions
Object actions track changes to annotation objects (bounding boxes, polygons, points, etc.).Common Object Properties
All object actions include these properties:CREATE_OBJECT
When: An annotation object is created (drawn) in the editor. Additional Properties:eventInformation.coordinates(null for audio): Object coordinates (bounding box, polygon points, etc.)
UPDATE_OBJECT
When: An object is modified (frame range, classifications, or feature type changed). Additional Properties:eventInformation.oldRange(optional): Previous frame ranges[number, number][]eventInformation.newRange(optional): New frame ranges[number, number][]eventInformation.oldClassification(optional): Previous classification valueseventInformation.newClassification(optional): New classification valueseventInformation.oldFeatureHash(optional): Previous feature hasheventInformation.newFeatureHash(optional): New feature hasheventInformation.lastEditedBy: User hash of who made the edit
UPDATE_OBJECT with EventInformationObjectEditCoordinates.
UPDATE_OBJECT (Coordinate Changes)
When: Only the coordinates/shape of an object are modified (e.g., resizing a bounding box, moving polygon vertices). Additional Properties:eventInformation.oldCoordinates: Previous coordinate valueseventInformation.newCoordinates: New coordinate valueseventInformation.lastEditedBy: User hash of who made the edit
DELETE_OBJECT
When: An annotation object is deleted. Additional Properties:eventInformation.classifications(optional): Classification values that were associated with the objecteventInformation.coordinates(optional): Final coordinates of the deleted object
APPROVE_OBJECT
When: An object is approved during review. Additional Properties:eventInformation.classifications(optional): Classification values associated with the objecteventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action ("APPROVE","REJECT", or"REOPEN")
REJECT_OBJECT
When: An object is rejected during review. Additional Properties:eventInformation.classifications(optional): Classification values associated with the objecteventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
REVERT_TO_PENDING_OBJECT
When: An approved or rejected object is reopened/reverted to pending status. Additional Properties:eventInformation.classifications(optional): Classification values associated with the objecteventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action (typically"APPROVE")
Classification/Attribute Actions
Classification/attribute actions track changes to frame-level or object-level classifications (attributes).Common Classification Properties
All classification actions include these properties:CREATE_ATTRIBUTE
When: A classification/attribute is created. Additional Properties:eventInformation.classifications: Object mapping feature hashes to classification results, including:featureId: Feature hashname: Display namevalue: Selected value- Nested answers (for nested attributes)
UPDATE_ATTRIBUTE
When: A classification is modified (frame range or value changed). Additional Properties:eventInformation.oldRange(optional): Previous frame rangeseventInformation.newRange(optional): New frame rangeseventInformation.oldValue(optional): Previous classification valueseventInformation.newValue(optional): New classification valueseventInformation.lastEditedBy: User hash of who made the edit
DELETE_ATTRIBUTE
When: A classification/attribute is deleted. Additional Properties:eventInformation.classifications: Classification values that were deleted
APPROVE_CLASSIFICATION
When: A classification is approved during review. Additional Properties:eventInformation.classifications(optional): Classification valueseventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
REJECT_CLASSIFICATION
When: A classification is rejected during review. Additional Properties:eventInformation.classifications(optional): Classification valueseventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
REVERT_TO_PENDING_CLASSIFICATION
When: An approved or rejected classification is reopened/reverted to pending status. Additional Properties:eventInformation.classifications(optional): Classification valueseventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
Task Actions
Task actions track workflow-level operations.SKIP_TASK
When: A task is skipped in the workflow. Additional Properties:eventInformation.skipReason: String reason provided for skipping the task
SAVE_TASK
When: A task is saved (manually or via autosave). Additional Properties:eventInformation.saveType: Either"manual"or"autosave"eventInformation.success: Boolean indicating if the save operation succeeded
SUBMIT_TASK
When: A task is submitted for review or completion. Additional Properties:eventInformation.labels: Array of label identifiers (object/classification hashes) included in the submission
APPROVE_TASK
When: A task is approved during review. Additional Properties: For non-consensus reviews:eventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:false
eventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:trueeventInformation.isDetermineConsensus:falseeventInformation.annotatorsWithApprovedLabels: Array of{ email: string, hash: string }for annotators whose labels were approved
eventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:trueeventInformation.isDetermineConsensus:trueeventInformation.selectedAnnotators: Array of{ email: string, hash: string }for selected annotatorseventInformation.winningSetAnnotator:{ email: string, hash: string }for the annotator whose labels won
REJECT_TASK
When: A task is rejected during review. Additional Properties: For non-consensus reviews:eventInformation.rejectedLabelHashes: Array of rejected label hasheseventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:false
eventInformation.approvedLabelHashes(optional): Array of approved label hasheseventInformation.isConsensus:trueeventInformation.isDetermineConsensus: Boolean indicating if consensus determination was involvedeventInformation.annotators: Array of annotator identifiers
Agent Actions
RUN_AGENT
When: An automated agent/ML model is executed. Additional Properties:eventInformation.objectHashes: Array of object hashes that were created or modified by the agenteventInformation.agentUuid: UUID of the agent that was runeventInformation.agentEndpoint: API endpoint used for the agenteventInformation.agentTitle: Display title of the agenteventInformation.agentDescription: Description of the agenteventInformation.success: Boolean indicating if the agent run succeeded
Editor Actions
Editor actions track editor-level state changes and user interactions.ENTER_EDITOR
When: A user opens/enters the editor. Additional Properties:- None (empty
eventInformation: {})
ENTER_EDIT_MODE
When: The editor enters edit mode (e.g., when starting to draw an annotation). Additional Properties:- None (empty
eventInformation: {})
EXIT_EDIT_MODE
When: The editor exits edit mode (e.g., after completing an annotation). Additional Properties:- None (empty
eventInformation: {})
FORCE_OVERWRITE
When: A user forces an overwrite operation (e.g., overwriting existing labels). Additional Properties:- None (empty
eventInformation: {})
Event Flow Examples
Creating an Object
- ENTER_EDITOR - User opens editor
- ENTER_EDIT_MODE - User selects drawing tool
- CREATE_OBJECT - User draws a bounding box
- EXIT_EDIT_MODE - User completes the annotation
- SAVE_TASK (autosave) - System auto-saves
- SUBMIT_TASK - User submits the task
Reviewing Objects
- APPROVE_OBJECT - Reviewer approves object 1
- REJECT_OBJECT - Reviewer rejects object 2
- APPROVE_TASK - Reviewer approves the entire task
Editing an Object
- UPDATE_OBJECT (coordinates) - User resizes a bounding box
- UPDATE_OBJECT (feature) - User changes the object’s class/type
- UPDATE_OBJECT (range) - User extends the object to additional frames
Notes
- All timestamps are in UTC ISO 8601 format
- Empty UUIDs (
EMPTY_UUID) are used when workflow information is not available - Classification values are stored as nested objects for complex attribute structures
- Coordinates are stored in shape-specific formats (bounding boxes, polygons, etc.)
- Frame ranges use inclusive start and end frames:
[startFrame, endFrame] - Segmentations do not have frame ranges (empty array) or current frame (null)

