{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/api-reference/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["api-container","api-content","endpoint","api-examples","code-group","tabs","tab"]},"redocly_category":"API Reference","searchWeight":120,"type":"markdown"},"seo":{"title":"List sealed store changes","description":"Complete API reference and documentation for Freddy AI-powered backend system by Aitronos","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"list-sealed-store-changes","__idx":0},"children":["List sealed store changes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sync read, as a delta feed."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Full read."]}," Without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]},", the feed returns every record in the store, live and tombstoned, in change order."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Delta read."]}," With ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]},", it returns every record created, updated, deleted or undeleted after that cursor. Each record appears once, in its current state; a deleted record arrives as its envelope-only tombstone."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Follow ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["next_cursor"]}," while ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_more"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", then keep the last ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["next_cursor"]}," for the next sync. Cursors are opaque."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["410 SEALED_CURSOR_EXPIRED"]}," means \"do a full read and reconcile\"."]}," A cursor issued more than 30 days ago is refused, and so is one from before a tombstone that has since been removed (after its 30 days, or early because the store keeps only its newest 500): the delta could no longer tell the device about that delete. Read the store again without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]}," and reconcile the device's records against the full read. A synced record the device holds that the full read does not return is no longer in the store."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A page stops early once it carries 8 MiB of decoded payload, never below one record, so ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_more"]}," can be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," with fewer than ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}," records."]},{"$$mdtype":"Tag","name":"ApiContainer","attributes":{},"children":[{"$$mdtype":"Tag","name":"ApiContent","attributes":{},"children":[{"$$mdtype":"Tag","name":"Endpoint","attributes":{"method":"GET","path":"https://api.aitronos.com/v1/sealed-stores/{store}/changes"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"path-parameters","__idx":1},"children":["Path Parameters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["store"]}]}," string ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#ef4444 !important","fontWeight":"600 !important","fontStyle":"normal !important"}},"children":["required"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The store: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aitronos-browser"]},". Up to 64 characters; an unknown store is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404 SEALED_STORE_NOT_FOUND"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"query-parameters","__idx":2},"children":["Query Parameters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]}]}," string ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#9ca3af !important","fontWeight":"500 !important","fontStyle":"normal !important"}},"children":["optional"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["next_cursor"]}," of an earlier page, up to 512 characters. Leave it out for a full read."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}]}," integer ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#9ca3af !important","fontWeight":"500 !important","fontStyle":"normal !important"}},"children":["optional"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The most records in this page, 1 to 500. Defaults to 100."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"headers","__idx":3},"children":["Headers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization"]}]}," string ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#ef4444 !important","fontWeight":"600 !important","fontStyle":"normal !important"}},"children":["required"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Bearer <access token>"]}," from the person's own sign-in. API keys and service accounts are refused with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403 SEALED_STORE_PERSONAL_SESSION_REQUIRED"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"returns","__idx":4},"children":["Returns"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["object"]}]}," string — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sealed_change_page"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["full_read"]}]}," boolean — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," when the request carried no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["changes"]}]}," array — the changed records in change order, each in its current state (see below). A deleted record is its tombstone."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["next_cursor"]}]}," string — always present. Opaque: store it and send it back, never parse it. Send it as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]}," for the next page while ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_more"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", and keep the last one for the next sync."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_more"]}]}," boolean — whether more changes follow this page."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each entry of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["changes"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["object"]}]}," string — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sealed_record"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]}," string — the client's record id."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kind"]}]}," string — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["favourites"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["schema_version"]}]}," integer — as the last accepted write sent it."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["revision"]}]}," integer — server-assigned; rises by 1 on every accepted write."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["created_at"]}]}," string — when the record was created (ISO 8601 UTC)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["last_touched_at"]}]}," string — set by the server on every accepted write. Sort by it, ties by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deleted"]}]}," boolean — whether the record is a tombstone."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deleted_at"]}]}," string or null — when it was deleted."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["device_id"]}]}," string — the device of the last accepted write."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wrapped_dek"]}]}," object or null — the data key that opens ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aead"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nonce"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ct"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["epk"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v"]}," is always the integer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," for a tombstone."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}]}," string or null — the sealed bytes, standard padded base64. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," for a tombstone."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload_bytes"]}]}," integer or null — the decoded payload size. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," for a tombstone."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"errors","__idx":5},"children":["Errors"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Code"},"children":["Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When"},"children":["When"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["401"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUTHENTICATION_REQUIRED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No access token, or one that is not valid."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SEALED_STORE_PERSONAL_SESSION_REQUIRED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The call used an API key or a service account. Only a person's own sign-in session reaches a sealed store."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["404"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SEALED_STORE_NOT_FOUND"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No store with that name (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.store"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["410"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SEALED_CURSOR_EXPIRED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The cursor was issued more than 30 days ago, or a tombstone after it has since been removed (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.retention_days"]},"). Do a full read and reconcile."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SEALED_CURSOR_INVALID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The cursor was not issued by this store. Do a full read."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VALIDATION_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}," is outside 1 to 500, or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["since"]}," is longer than 512 characters."]}]}]}]}]}]},{"$$mdtype":"Tag","name":"ApiExamples","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeGroup","attributes":{"mode":"dropdown"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"cURL","header":{"title":"cURL","controls":{"copy":{}}},"source":"# Full read: no cursor.\ncurl \"https://api.aitronos.com/v1/sealed-stores/aitronos-browser/changes?limit=100\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n\n# Next sync: everything after the cursor kept from the last one.\ncurl \"https://api.aitronos.com/v1/sealed-stores/aitronos-browser/changes?since=ZjE6NTc6MTc5MTYyNDAwMA&limit=100\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","data-title":"Python","header":{"title":"Python","controls":{"copy":{}}},"source":"import os\n\nimport requests\n\nURL = \"https://api.aitronos.com/v1/sealed-stores/aitronos-browser/changes\"\nheaders = {\"Authorization\": f\"Bearer {os.environ['AITRONOS_TOKEN']}\"}\nlocal = {}     # record id -> record, as this device holds them\ncursor = None   # the next_cursor kept from the last sync; None means a full read\nfull_read, seen = cursor is None, set()\n\nwhile True:\n    params = {\"limit\": 100} if cursor is None else {\"limit\": 100, \"since\": cursor}\n    response = requests.get(URL, headers=headers, params=params, timeout=30)\n    body = response.json()\n    if response.status_code in (410, 422) and cursor is not None:\n        # SEALED_CURSOR_EXPIRED or SEALED_CURSOR_INVALID: start again with a full read.\n        cursor, full_read, seen = None, True, set()\n        continue\n    response.raise_for_status()\n    for record in body[\"changes\"]:\n        local[record[\"id\"]] = record  # a tombstone has deleted == True and no payload\n        seen.add(record[\"id\"])\n    cursor = body[\"next_cursor\"]\n    if not body[\"has_more\"]:\n        break\n\nif full_read:\n    for record_id in set(local) - seen:\n        del local[record_id]  # no longer in the store at all\nprint(len(local), \"records; keep\", cursor, \"for the next sync\")\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","data-title":"JavaScript","header":{"title":"JavaScript","controls":{"copy":{}}},"source":"const URL = \"https://api.aitronos.com/v1/sealed-stores/aitronos-browser/changes\";\nconst headers = { Authorization: `Bearer ${process.env.AITRONOS_TOKEN}` };\nconst local = new Map(); // record id -> record, as this device holds them\nlet cursor = null; // the next_cursor kept from the last sync; null means a full read\nlet fullRead = cursor === null;\nlet seen = new Set();\n\nwhile (true) {\n  const params = new URLSearchParams({ limit: \"100\" });\n  if (cursor) params.set(\"since\", cursor);\n  const response = await fetch(`${URL}?${params}`, { headers });\n  const body = await response.json();\n  if ((response.status === 410 || response.status === 422) && cursor) {\n    // SEALED_CURSOR_EXPIRED or SEALED_CURSOR_INVALID: start again with a full read.\n    cursor = null;\n    fullRead = true;\n    seen = new Set();\n    continue;\n  }\n  if (!response.ok) throw new Error(body.error.code);\n  for (const record of body.changes) {\n    local.set(record.id, record); // a tombstone has deleted === true and no payload\n    seen.add(record.id);\n  }\n  cursor = body.next_cursor;\n  if (!body.has_more) break;\n}\n\nif (fullRead) {\n  for (const id of local.keys()) if (!seen.has(id)) local.delete(id); // gone from the store\n}\nconsole.log(local.size, \"records; keep\", cursor, \"for the next sync\");\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"200 Full read","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"object\": \"sealed_change_page\",\n  \"full_read\": true,\n  \"changes\": [\n    {\n      \"object\": \"sealed_record\",\n      \"id\": \"z4rSQRGzUlRnQMJmA0W1Uw\",\n      \"kind\": \"session\",\n      \"schema_version\": 1,\n      \"revision\": 2,\n      \"created_at\": \"2026-10-06T14:22:31.845570Z\",\n      \"last_touched_at\": \"2026-10-09T21:14:50.093318Z\",\n      \"deleted\": true,\n      \"deleted_at\": \"2026-10-09T21:14:50.093318Z\",\n      \"device_id\": \"1f783def-2aa1-4b44-9c73-3c6b9102c06b\",\n      \"wrapped_dek\": null,\n      \"payload\": null,\n      \"payload_bytes\": null\n    },\n    {\n      \"object\": \"sealed_record\",\n      \"id\": \"F1PMCmFG6rsW4-HU4afL_g\",\n      \"kind\": \"favourites\",\n      \"schema_version\": 1,\n      \"revision\": 7,\n      \"created_at\": \"2026-10-08T17:20:09.381146Z\",\n      \"last_touched_at\": \"2026-10-10T08:55:12.774031Z\",\n      \"deleted\": false,\n      \"deleted_at\": null,\n      \"device_id\": \"1aee2c02-ccac-4ede-b017-1334be895e2e\",\n      \"wrapped_dek\": {\n        \"v\": 1,\n        \"aead\": \"aes-256-gcm\",\n        \"nonce\": \"K4oMLrGJ4dOy3SSa\",\n        \"ct\": \"KF2aNtgNDsrl44sR1t60za/U14/38uhVtZR5x1IwVuE1ZA9O40F7m+B3Z5c4F5ff\",\n        \"epk\": \"YTA186lzj639ytab4sP9at47MIW6rLw1mPH+rLf5zYk=\"\n      },\n      \"payload\": \"KwbjgOqLohvGjo8CWi61+eqKsSS+Hr8joqdGVDKWywAlQ10opPF9w3HUCpIUC+fHif6s4NscN7iuK7ewtpt27Hams2lMd2TDStW8nnG53gk=\",\n      \"payload_bytes\": 80\n    },\n    {\n      \"object\": \"sealed_record\",\n      \"id\": \"vSWmWbg9sDur336pnYgYzQ\",\n      \"kind\": \"session\",\n      \"schema_version\": 1,\n      \"revision\": 2,\n      \"created_at\": \"2026-10-10T08:41:17.204913Z\",\n      \"last_touched_at\": \"2026-10-10T09:02:44.918207Z\",\n      \"deleted\": false,\n      \"deleted_at\": null,\n      \"device_id\": \"1aee2c02-ccac-4ede-b017-1334be895e2e\",\n      \"wrapped_dek\": {\n        \"v\": 1,\n        \"aead\": \"aes-256-gcm\",\n        \"nonce\": \"oxwDDz+SyxUEkitE\",\n        \"ct\": \"UvORUdzuxuE3FMncUQgc4qOEz2QT8a5LarNYrATM0A4Zi1J0aJj9Yu+5ySIKPQHY\",\n        \"epk\": \"fRXpvCBVDmU9kJ+PSkoqi7NU2Po3FQMK9SbJiz1gOGs=\"\n      },\n      \"payload\": \"hWbThAu7J8u8jIcvARYROTja+vbbV4hlntXsIctvvcVdqWGMyTjVt2LgISSfrFORn+gjkJcDsT9l8dsHXoFFCaDLzP06FHLuixGaBMY3WOfWFex4l7SU0G5IKY7DABr74o0l20asWcd9gADrlQl4Zg==\",\n      \"payload_bytes\": 112\n    }\n  ],\n  \"next_cursor\": \"ZjE6NTc6MTc5MTYyNDAwMA\",\n  \"has_more\": false\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"200 Since a cursor","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"object\": \"sealed_change_page\",\n  \"full_read\": false,\n  \"changes\": [\n    {\n      \"object\": \"sealed_record\",\n      \"id\": \"vSWmWbg9sDur336pnYgYzQ\",\n      \"kind\": \"session\",\n      \"schema_version\": 1,\n      \"revision\": 3,\n      \"created_at\": \"2026-10-10T08:41:17.204913Z\",\n      \"last_touched_at\": \"2026-10-10T09:30:05.551390Z\",\n      \"deleted\": true,\n      \"deleted_at\": \"2026-10-10T09:30:05.551390Z\",\n      \"device_id\": \"1f783def-2aa1-4b44-9c73-3c6b9102c06b\",\n      \"wrapped_dek\": null,\n      \"payload\": null,\n      \"payload_bytes\": null\n    },\n    {\n      \"object\": \"sealed_record\",\n      \"id\": \"kzhPW9s59kDjN4KgsqDo8g\",\n      \"kind\": \"session\",\n      \"schema_version\": 1,\n      \"revision\": 1,\n      \"created_at\": \"2026-10-10T09:58:40.207733Z\",\n      \"last_touched_at\": \"2026-10-10T09:58:40.207733Z\",\n      \"deleted\": false,\n      \"deleted_at\": null,\n      \"device_id\": \"1aee2c02-ccac-4ede-b017-1334be895e2e\",\n      \"wrapped_dek\": {\n        \"v\": 1,\n        \"aead\": \"aes-256-gcm\",\n        \"nonce\": \"CbsPu3yjtX0WfjiR\",\n        \"ct\": \"OstmROyv3oyMewk3pmThll7VuC/LMwdptAkkpaaDq0yLCK9YetMUPud+vBPfdIbR\",\n        \"epk\": \"+5hqSqzsvkTA3oKtoXE9Q8a5QQ3vTgv3VfDaB1rI7YY=\"\n      },\n      \"payload\": \"WwJa6HYrSprDW7CSy0gXmpZ/Rnrlr+/JedudlqwoITqebUB01KbKYCN4xXL4nT+BHZIYWC+4vRxVOKH23RB9votU7iS+cX6E\",\n      \"payload_bytes\": 72\n    }\n  ],\n  \"next_cursor\": \"ZjE6NTk6MTc5MTYyNjcxMg\",\n  \"has_more\": false\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"410 Cursor expired","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SEALED_CURSOR_EXPIRED\",\n    \"message\": \"This device was away too long to catch up. Syncing everything.\",\n    \"system_message\": \"the cursor is older than the 30-day tombstone retention; do a full read (no cursor) and reconcile\",\n    \"type\": \"client_error\",\n    \"status\": 410,\n    \"details\": {\n      \"retention_days\": 30\n    },\n    \"trace_id\": \"343c080a-8696-4a8c-a26d-8bd7cdc63a17\",\n    \"timestamp\": \"2026-10-10T10:05:30.882104Z\"\n  }\n}\n","lang":"json"},"children":[]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-resources","__idx":6},"children":["Related Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/sealed-stores/introduction"},"children":["Sealed stores"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/sealed-stores/get-record"},"children":["Get a sealed record"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/sealed-stores/list-deleted"},"children":["List deleted sealed records"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/sealed-stores/create-record"},"children":["Create a sealed record"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/sealed-stores/get-store"},"children":["Get a sealed store's limits"]}]}]}]},"headings":[{"value":"List sealed store changes","id":"list-sealed-store-changes","depth":1},{"value":"Path Parameters","id":"path-parameters","depth":4},{"value":"Query Parameters","id":"query-parameters","depth":4},{"value":"Headers","id":"headers","depth":4},{"value":"Returns","id":"returns","depth":2},{"value":"Errors","id":"errors","depth":2},{"value":"Related Resources","id":"related-resources","depth":2}],"frontmatter":{"title":"List sealed store changes","keywords":["sealed store","delta feed","sync","cursor","full read","reconcile"],"seo":{"title":"List sealed store changes"}},"lastModified":"2026-10-26T18:32:31.651Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/api-reference/sealed-stores/list-changes","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}