Guide
History API provides a way to access workspace full change log.
POST /api/history/v2/search
This endpoint provides access to historical changes of workspace data.
This API does not include changes to Documents content.
Request Body
Sample
{
"where": [
{
"field": "typeId",
"operator": "=",
"value": "019c56b5-dde0-746b-9856-3a544e406ddd"
},
{
"field": "action",
"operator": "in",
"value": ["fibery.entity/create", "fibery.entity/delete"]
}
],
"timeframe": {
"start": "2025-09-01T00:00:00.000Z",
"end": "2026-02-01T00:00:00.000Z"
},
"limit": 50,
"sinceItem": "16079594"
}
Parameters
limit — number of items per page.
The API may return fewer items than requested but still indicate that there is a next page. This can happen for long‑running tasks that may be interrupted in the middle.
sinceItem — identifier of the last item from the previous page.
Pass this value to retrieve the next page.
where — array of filters.
All filters are combined with logical AND.
timeframe — optional parameter. Maximum length is 1 year. If omitted, data for the past year is returned.
The following filters are supported:
Field | Description | Operators | Value |
id
| Find entries by history item id | =
in
| Item id (number) |
action
| Find entries by history action | =
in
| Available values: fibery.entity/create
fibery.entity/delete
fibery.entity/update
fibery.entity/add-collection-items
fibery.entity/remove-collection-items
history/fibery.entity/archived
history/fibery.entity/restored
history/permissions-changed
|
entityPublicId
| Find entries by entity public ID | =
in
| Public ID (string) |
entityState
| Find entries by current entity state | =
in
| Available values: EXIST
DELETED
ARCHIVED
|
author
| Find entries by author | =
in
empty
not-empty
| User UUID In case of empty and not-empty don't pass value {
"field": "author",
"operator": "empty"
}
|
typeId
| Find entries by Database ID. Returns entries for entities of this Database only. For example, for a Bug Database, only Bug entities are returned. Schema changes for Bug are not included. | =
in
| Database UUID |
entityTypeId
| Find entries by Database ID, including related schema changes. For example, for a Bug Database, the result includes Bug entities and all schema changes related to Bug. | =
in
| Database UUID |
entityName
| Find entries by entity name. | contains
| Text (at least 3 characters). |
entityId
| Find entries by entity ID | =
in
| Entity UUID |
field
| Allows to filter out several field types | not-in
| Can specify field name. E.g: Also it supports wildcards: :hidden — all hidden fields
:private — all private fields
:deleted — all deleted fields
:formula — all formula fields
:createdBy — created by fields
:system — all system fields
:name — all title fields
:linkedRelations — all automatically linked relations
:automations — all automations based changes
{
"field": "field",
"operator": "not-in",
"value": [
{
"field": ":hidden",
"options": {
"includeSoftDeleted": true
}
},
{
"field": "fibery/rank"
},
{
"field": "fibery/menu-rank"
},
{
"type": "Collaboration~Documents/Document"
},
{
"type": "fibery/rich-text"
},
{
"field": "fibery/public-id"
},
{
"field": ":createdBy"
},
{
"field": ":formula"
}
]
}
|
Response Body
Sample
{
"items": [
{
"id": "120659039",
"action": "fibery.entity/update",
"date": "2026-02-16T05:08:57.853Z",
"schemaVersion": 22782,
"sequenceId": "18740668",
"type": {
"id": "1e1d96c0-5dcb-11e8-90b6-c6e140253257",
"name": "Product Management/feature",
"title": "Feature",
"exist": true,
"softDeleted": false,
"meta": {
"ui/order": "0",
"fibery/domain?": true,
"fibery/primitive?": false,
"ui/color": "#28A500",
"ui/show-in-menu?": false,
"semantic-index/enabled": true,
"app/mixins": {
"comments/comments-mixin": true,
"whiteboards/whiteboards-mixin": true,
"documents/documents-mixin": true,
"icon/icon-mixin": true,
"Collaboration~Documents/ReferencesMixin": true,
"workflow/workflow": true,
"fibery/rank-mixin": true
},
"ui/level": "0",
"fibery/secured?": true
}
},
"entity": {
"id": "d7cea490-354d-11eb-9bfa-a53706ca0a40",
"name": "History API",
"exist": true,
"softDeleted": false,
"publicId": "2797",
"capabilities": {
"restore": false
}
},
"author": {
"id": "79f2f29b-9a45-4e30-9ba6-b785f10c78ec",
"name": "Eugene Kisel",
"exist": true,
"softDeleted": false,
"publicId": "1210"
},
"order": "120659039",
"fromService": null,
"caller": null,
"changedValues": [
{
"field": {
"id": "56cba110-5dcb-11e8-90b6-c6e140253257",
"exist": true,
"name": "workflow/state",
"title": "State",
"type": {
"id": "56cba118-5dcb-11e8-90b6-c6e140253257",
"name": "workflow/state_Product Management/feature",
"title": "Feature State",
"exist": true,
"softDeleted": false,
"meta": {
"fibery/primitive?": false,
"fibery/domain?": false,
"fibery/enum?": true,
"ui/color": "#5357ac",
"app/mixins": {
"fibery/rank-mixin": true
},
"fibery/secured?": true,
"fibery/type-component?": true
}
},
"meta": {
"ui/object-editor-order": 12,
"fibery/default-value": {
"fibery/id": "3a27d1f0-a965-11e9-b140-716906907767"
},
"fibery/required?": true,
"fibery/relation": "f9535b17-8d15-11e9-b98a-9abbdf4720ab",
"fibery/type-component?": true,
"fibery/entity-of-field-type-can-be-created-by-creator-only?": true,
"ui/type-editor-order": 2
},
"softDeleted": false
},
"currentValue": {
"id": "5715c970-5dcb-11e8-90b6-c6e140253257",
"name": "In Progress",
"exist": true,
"softDeleted": false,
"publicId": "2"
},
"previousValue": {
"id": "c9cfb7f0-a45d-11ec-b0b9-197891c72881",
"name": "Next",
"exist": true,
"softDeleted": false,
"publicId": "174"
}
}
]
},
{
"id": "120555138",
"action": "fibery.entity/add-collection-items",
"date": "2026-02-13T16:43:52.699Z",
"schemaVersion": 22782,
"sequenceId": "18716358",
"type": {
"id": "1e1d96c0-5dcb-11e8-90b6-c6e140253257",
"name": "Product Management/feature",
"title": "Feature",
"exist": true,
"softDeleted": false,
"meta": {
"ui/order": "0",
"fibery/domain?": true,
"fibery/primitive?": false,
"ui/color": "#28A500",
"ui/show-in-menu?": false,
"semantic-index/enabled": true,
"app/mixins": {
"comments/comments-mixin": true,
"whiteboards/whiteboards-mixin": true,
"documents/documents-mixin": true,
"icon/icon-mixin": true,
"Collaboration~Documents/ReferencesMixin": true,
"workflow/workflow": true,
"fibery/rank-mixin": true
},
"ui/level": "0",
"fibery/secured?": true
}
},
"entity": {
"id": "3fdcbc80-bcfd-11ea-a703-bbedad280135",
"name": "Time tracking extension",
"publicId": "2514",
"exist": true,
"softDeleted": false,
"capabilities": {
"restore": false
}
},
"author": {
"id": "86160190-3c54-11ea-a075-0b3503254ab9",
"name": "Polina Zenevich",
"publicId": "1098",
"exist": true,
"softDeleted": false
},
"order": "120555138",
"fromService": "collabdoc",
"caller": null,
"changedValues": [
{
"field": {
"id": "f88ae885-295a-436d-8ed6-b449dad20f45",
"exist": true,
"name": "Product Management/Highlights",
"title": "Highlights",
"type": {
"id": "c3dbc040-ba9b-11ee-a5cb-c3dc8aaf2fdf",
"name": "highlights/Highlight",
"title": "Highlight",
"exist": true,
"softDeleted": false,
"meta": {
"fibery/primitive?": false,
"fibery/domain?": true,
"fibery/highlight?": true,
"fibery/secured?": true,
"ui/color": "#fba32f",
"app/mixins": {
"fibery/rank-mixin": true
},
"fibery/entity-component?": true
}
},
"meta": {
"fibery/collection?": true,
"fibery/multi-relation": "c3dbc042-ba9b-11ee-a5cb-c3dc8aaf2fdf",
"ui/object-editor-order": 39,
"fibery/readonly?": true
},
"softDeleted": false
},
"currentValue": [
{
"id": "0329f0c9-7dc7-4c60-b399-2d3dbb82aba5",
"wasCreated": true,
"name": "Managing High-Volume Time-Logging Data",
"publicId": "23494",
"exist": true,
"softDeleted": false
}
]
}
]
}
],
"nextPage": {
"hasNext": true,
"sinceItem": "120550073"
}
}
Response body includes:
Samples
Sample: exclude automatic changes
By default we track a lot of changes and result set can be noisy. There is a possibility to exclude such changes from result set by adding field not-in filter
{
"where": [
{
"field": "field",
"operator": "not-in",
"value": [
{
"field": ":hidden",
"options": {
"includeSoftDeleted": true
}
},
{
"field": "fibery/rank"
},
{
"field": "fibery/menu-rank"
},
{
"type": "Collaboration~Documents/Document"
},
{
"type": "fibery/rich-text"
},
{
"field": "fibery/public-id"
},
{
"field": ":createdBy"
},
{
"field": ":formula"
},
{
"field": ":linkedRelations"
},
{
"field": ":automations"
}
]
}
],
"limit": 50,
"timeframe": {
"start": "2026-02-09T21:00:00.000Z",
"end": "2026-03-12T20:59:59.999Z",
}
}
Sample: Get feature changes for Last Week
{
"where": [
{
"field": "typeId",
"operator": "=",
"value": "{feature-type-uuid}"
}
],
"timeframe": {
"start": "2026-03-01T00:00:00.000Z",
"end": "2026-03-07T23:59:99.999Z"
},
"limit": 50,
"sinceItem": "{next-page-since-item}"
}
If you need also schema changes then replace typeId with entityTypeId
Sample: Get user's changes for yesterday
{
"where": [
{
"field": "author",
"operator": "=",
"value": "{user-uuid}"
},
],
"timeframe": {
"start": "2026-03-01T00:00:00.000Z",
"end": "2026-03-01T23:59:99.9999Z"
},
"limit": 50,
"sinceItem": "{next-page-since-item}"
}
Sample: Get all changes from specific entity
There are two possible options
By UUID:
{
"where": [
{
"field": "typeId",
"operator": "=",
"value": "{type-uuid}"
},
{
"field": "entityId",
"operator": "=",
"value": "{entity-uuid}"
},
],
"timeframe": {
"start": "2026-03-01T00:00:00.000Z",
"end": "2026-03-07T23:59:99.9999Z"
},
"limit": 50,
"sinceItem": "{next-page-since-item}"
}
By Public Id
{
"where": [
{
"field": "typeId",
"operator": "=",
"value": "{type-uuid}"
},
{
"field": "entityPublicId",
"operator": "=",
"value": "{entity-public-id}"
},
],
"timeframe": {
"start": "2026-03-01T00:00:00.000Z",
"end": "2026-03-07T23:59:99.9999Z"
},
"limit": 50,
"sinceItem": "{next-page-since-item}"
}
Sample: Get all changes from yesterday
{
"where": [
],
"timeframe": {
"start": "2026-03-01T00:00:00.000Z",
"end": "2026-03-01T23:59:99.9999Z"
},
"limit": 50,
"sinceItem": "{next-page-since-item}"
}