The recovery read: the records deleted within the last 30 days (at most the store's newest 500), newest delete first, each as its envelope-only tombstone.
Undelete one by naming its revision. To see what a tombstone held before deciding, read it from its revision history: while it is still kept, the newest revision listed there holds the content an undelete restores.
store string required
The store: aitronos-browser. Up to 64 characters; an unknown store is 404 SEALED_STORE_NOT_FOUND.
kind string optional
Only records of this kind: session or favourites. Up to 32 characters.
cursor string optional
The next_cursor of an earlier page, up to 512 characters.
limit integer optional
The most records in this page, 1 to 500. Defaults to 100.
Authorization string required
Bearer <access token> from the person's own sign-in. API keys and service accounts are refused with 403 SEALED_STORE_PERSONAL_SESSION_REQUIRED.
200 OK:
objectstring —list.dataarray — tombstones, newest delete first. Each is asealed_recordwithdeleted: trueand no content (see below).has_moreboolean — whether more tombstones follow this page.next_cursorstring or null — send it ascursorfor the next page;nullwhen there is none. Opaque.
Each entry of data:
objectstring —sealed_record.idstring — the client's record id.kindstring —sessionorfavourites.schema_versioninteger — as the last accepted write sent it.revisioninteger — server-assigned; rises by 1 on every accepted write.created_atstring — when the record was created (ISO 8601 UTC).last_touched_atstring — set by the server on every accepted write. Sort by it, ties byid.deletedboolean — whether the record is a tombstone.deleted_atstring or null — when it was deleted.device_idstring — the device of the last accepted write.wrapped_dekobject or null — the data key that openspayload:v,aead,nonce,ct,epk.vis always the integer1.nullfor a tombstone.payloadstring or null — the sealed bytes, standard padded base64.nullfor a tombstone.payload_bytesinteger or null — the decoded payload size.nullfor a tombstone.
| Status | Code | When |
|---|---|---|
| 401 | AUTHENTICATION_REQUIRED | No access token, or one that is not valid. |
| 403 | SEALED_STORE_PERSONAL_SESSION_REQUIRED | The call used an API key or a service account. Only a person's own sign-in session reaches a sealed store. |
| 404 | SEALED_STORE_NOT_FOUND | No store with that name (details.store). |
| 422 | SEALED_KIND_INVALID | kind is not a kind this store holds (details.kind, details.allowed). |
| 422 | SEALED_CURSOR_INVALID | The cursor was not issued by this store. |
| 422 | VALIDATION_ERROR | limit is outside 1 to 500, or kind or cursor is too long. |
- Bash
- Python
- JavaScript
curl "https://api.aitronos.com/v1/sealed-stores/aitronos-browser/deleted?kind=session&limit=50" \
-H "Authorization: Bearer $ACCESS_TOKEN"Response:
{
"object": "list",
"data": [
{
"object": "sealed_record",
"id": "vSWmWbg9sDur336pnYgYzQ",
"kind": "session",
"schema_version": 1,
"revision": 3,
"created_at": "2026-10-10T08:41:17.204913Z",
"last_touched_at": "2026-10-10T09:30:05.551390Z",
"deleted": true,
"deleted_at": "2026-10-10T09:30:05.551390Z",
"device_id": "1f783def-2aa1-4b44-9c73-3c6b9102c06b",
"wrapped_dek": null,
"payload": null,
"payload_bytes": null
},
{
"object": "sealed_record",
"id": "z4rSQRGzUlRnQMJmA0W1Uw",
"kind": "session",
"schema_version": 1,
"revision": 2,
"created_at": "2026-10-06T14:22:31.845570Z",
"last_touched_at": "2026-10-09T21:14:50.093318Z",
"deleted": true,
"deleted_at": "2026-10-09T21:14:50.093318Z",
"device_id": "1f783def-2aa1-4b44-9c73-3c6b9102c06b",
"wrapped_dek": null,
"payload": null,
"payload_bytes": null
}
],
"has_more": false,
"next_cursor": null
}