# List deleted sealed records

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](/docs/api-reference/sealed-stores/undelete-record) one by naming its `revision`. To see what a tombstone held before deciding, read it from its [revision history](/docs/api-reference/sealed-stores/list-revisions): while it is still kept, the newest revision listed there holds the content an undelete restores.

#### Path Parameters

**`store`** string required

The store: `aitronos-browser`. Up to 64 characters; an unknown store is `404 SEALED_STORE_NOT_FOUND`.

#### Query Parameters

**`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.

#### Headers

**`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`.

## Returns

`200 OK`:

- **`object`** string — `list`.
- **`data`** array — tombstones, newest delete first. Each is a `sealed_record` with `deleted: true` and no content (see below).
- **`has_more`** boolean — whether more tombstones follow this page.
- **`next_cursor`** string or null — send it as `cursor` for the next page; `null` when there is none. Opaque.


Each entry of `data`:

- **`object`** string — `sealed_record`.
- **`id`** string — the client's record id.
- **`kind`** string — `session` or `favourites`.
- **`schema_version`** integer — as the last accepted write sent it.
- **`revision`** integer — server-assigned; rises by 1 on every accepted write.
- **`created_at`** string — when the record was created (ISO 8601 UTC).
- **`last_touched_at`** string — set by the server on every accepted write. Sort by it, ties by `id`.
- **`deleted`** boolean — whether the record is a tombstone.
- **`deleted_at`** string or null — when it was deleted.
- **`device_id`** string — the device of the last accepted write.
- **`wrapped_dek`** object or null — the data key that opens `payload`: `v`, `aead`, `nonce`, `ct`, `epk`. `v` is always the integer `1`. `null` for a tombstone.
- **`payload`** string or null — the sealed bytes, standard padded base64. `null` for a tombstone.
- **`payload_bytes`** integer or null — the decoded payload size. `null` for a tombstone.


## Errors

| 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 cURL
curl "https://api.aitronos.com/v1/sealed-stores/aitronos-browser/deleted?kind=session&limit=50" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```


```python Python
import os

import requests

URL = "https://api.aitronos.com/v1/sealed-stores/aitronos-browser/deleted"
headers = {"Authorization": f"Bearer {os.environ['AITRONOS_TOKEN']}"}
params = {"kind": "session", "limit": 50}

while True:
    response = requests.get(URL, headers=headers, params=params, timeout=30)
    page = response.json()
    for tombstone in page["data"]:
        print(tombstone["id"], "deleted at", tombstone["deleted_at"], "revision", tombstone["revision"])
    if not page["has_more"]:
        break
    params["cursor"] = page["next_cursor"]
```


```javascript JavaScript
const URL = "https://api.aitronos.com/v1/sealed-stores/aitronos-browser/deleted";
const headers = { Authorization: `Bearer ${process.env.AITRONOS_TOKEN}` };
const params = new URLSearchParams({ kind: "session", limit: "50" });

while (true) {
  const response = await fetch(`${URL}?${params}`, { headers });
  const page = await response.json();
  for (const tombstone of page.data) {
    console.log(tombstone.id, "deleted at", tombstone.deleted_at, "revision", tombstone.revision);
  }
  if (!page.has_more) break;
  params.set("cursor", page.next_cursor);
}
```

**Response:**

200 OK

```json
{
  "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
}
```

422 Unknown kind

```json
{
  "success": false,
  "error": {
    "code": "SEALED_KIND_INVALID",
    "message": "That item type can't be synced here.",
    "system_message": "kind 'tabs' is not one of ['favourites', 'session']",
    "type": "validation_error",
    "status": 422,
    "details": {
      "kind": "tabs",
      "allowed": [
        "favourites",
        "session"
      ]
    },
    "trace_id": "4386b40d-cc70-459a-b085-fc8bb9f646d0",
    "timestamp": "2026-10-10T09:33:16.457203Z"
  }
}
```

## Related Resources

- [Sealed stores](/docs/api-reference/sealed-stores/introduction)
- [Undelete a sealed record](/docs/api-reference/sealed-stores/undelete-record)
- [Delete a sealed record](/docs/api-reference/sealed-stores/delete-record)
- [List a sealed record's revisions](/docs/api-reference/sealed-stores/list-revisions)
- [List sealed store changes](/docs/api-reference/sealed-stores/list-changes)