Restore an item to the state it was in when the specified event was created. This can also be used to restore an item that has been deleted.
POST https://api.jsonpad.io/lists/{listId}/items/{itemId}/events/{eventId}/restoreOn a list with write rules, this is checked against the rules for update before anything is written. A write nothing authorises is refused with 403, one that fails a check with 400 and the rule's message, and one whose item changed while it was being written with 409.
When an item is restored, the data, description, readonly and activated fields will be restored to the values they had when the specified event was created. A new version will be created containing the restored state, and the version number will be incremented.
If the item has been deleted, it will be re-created with the same id. Deleted items must be referenced by id (not by alias), and restoring a deleted item counts towards the maximum number of items allowed in a list.
Use the Fetch item events endpoint with restorable=true to find events that an item can be restored from. Restoring an item requires the restore (or restore-with-identity) token permission.
curl https://api.jsonpad.io/lists/373a814d-bb0d-47aa-a65b-598fb12ac426/items/eca630e3-7367-40be-ad9d-ad1847770b5a/events/7a687820-6018-4af7-bb9b-b99fdd4ff4d8/restore \
-X POST \
-H "x-api-token: <YOUR TOKEN>"listIdstringA list id or path name.itemIdstringAn item id or alias. Deleted items must be referenced by id.eventIdstringThe id of the event to restore the item from.
This must be an item-created, item-updated, item-restored or item-deleted event for this item.
includeDatabooleanhttps://api.jsonpad.io/lists/70f78155-fa02-40ce-a941-1912d79812d7/items/0f936196-242b-4910-9d99-9f885e8ab170/events/32e6cf83-4239-479f-8344-909e543defc8/restore?includeData=trueWhether to include the item data in the response or not. Can be true or false.
Defaults to true.
includeGuardedboolean?includeGuarded=trueInclude values hidden by guard indexes in the response. Can be true or false.
This only applies when the request is authenticated as an identity, and only to the items that identity owns. Without an identity, guarded values stay hidden.
Defaults to false.
x-api-tokenstringYour API token.if-matchstringThe item's ETag, from the etag header of the response you last read or wrote it with.
If the item has changed since then, nothing is written and we return a 412 ("Precondition failed") response. Fetch the item again and retry. See conditional writes.
x-identity-tokenstringAn identity token.x-identity-groupstringAn identity group.No request body
{id: "5dd85b0c-8869-4f04-b72e-ea9019773e4c"createdAt: "2026-10-01T23:15:47.531Z"updatedAt: "2026-10-01T23:15:47.531Z"data: {test: 123}version: "3"readonly: falseactivated: truedescription: "This is a sample item"tags: [0: "my-app"]size: 12identity: {id: "e1a5f955-995f-40ce-9220-33f1e4b3afb7"displayName: "Sample Display Name"}}etagaf2bdbe1aa9b6ec1e2ade1d694f41fc71a831d0268e9891562113d8a62add1bfA SHA-256 hash of the item.last-modified2026-10-01T23:15:47.531ZThe date this item was last modified.