Each completed action paired with the screenshot taken after it, in
time order, with a signed frame_url that expires at expires_at
(Unix seconds, about five minutes). Frames still uploading are left
out until they are ready. Past the workspace’s history window this
returns 402 with reason: "history_window".
GET
/
v1
/
sessions
/
{id}
/
replay
Get the session's step-by-step replay
curl --request GET \ --url https://api.lusor.ai/v1/sessions/{id}/replay \ --header 'X-Api-Key: <api-key>'
Workspace the request is scoped to. Optional for API keys: a key is
bound to one workspace when it is created, and naming any other
workspace returns an opaque 404.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Lusor","description":"Run AI agents on real phones, or drive a phone directly, with the Lusor API.","colors":{"primary":"#111111","light":"#FAFAFA","dark":"#111111"},"logo":{"light":"https://mintcdn.com/lusor-ai/Ifu_dlUtLbDafp0r/images/lusor-logo-lightmode@2x.png?fit=max\u0026auto=format\u0026n=Ifu_dlUtLbDafp0r\u0026q=85\u0026s=977cb89acbdf111277711fe79f404fd5","dark":"https://mintcdn.com/lusor-ai/s7jsDGcgmdq30-2k/images/lusor-logo-darkmode@2x.png?fit=max\u0026auto=format\u0026n=s7jsDGcgmdq30-2k\u0026q=85\u0026s=1a44f07d6684fb79a9ae4d593a5b924d","href":"https://lusor.ai"},"favicon":"https://mintcdn.com/lusor-ai/Plbn5wBfbIBBjl9c/favicon.png?fit=max\u0026auto=format\u0026n=Plbn5wBfbIBBjl9c\u0026q=85\u0026s=48f99be162e5dd4fe61028a9631f55f0","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"navbar":{"links":[{"href":"https://lusor.ai/pricing","label":"Pricing"}],"primary":{"type":"button","label":"Open Lusor","href":"https://app.lusor.ai"}},"footer":{"socials":{"website":"https://lusor.ai"}},"icons":{"library":"fontawesome"},"contextual":{"options":["assistant","copy","view","download-spec","chatgpt","claude"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lusor-ai","hasAudioNarration":false,"actualSubdomain":"lusor-ai","customDomains":["docs.lusor.ai"],"gitSource":{"type":"github","owner":"lusor-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af3665a77bbd85befb3aca1","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"API reference","count":92},{"language":"default","tag":"Endpoints","count":91},{"language":"default","tag":"Developers","count":26},{"language":"default","tag":"Devices","count":22},{"language":"default","tag":"Sessions","count":17},{"language":"default","tag":"Phones","count":13},{"language":"default","tag":"DeviceVerbs","count":12},{"language":"default","tag":"Help Center","count":11},{"language":"default","tag":"Agents","count":11},{"language":"default","tag":"Agents \u0026 sessions","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/sessions/get-the-sessions-step-by-step-replay","slug":"/api-reference/sessions/get-the-sessions-step-by-step-replay","pageMetadata":{"title":"Get the session's step-by-step replay","description":"Each completed action paired with the screenshot taken after it, in\ntime order, with a signed `frame_url` that expires at `expires_at`\n(Unix seconds, about five minutes). Frames still uploading are left\nout until they are ready. Past the workspace's history window this\nreturns `402` with `reason: \"history_window\"`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/replay","href":"/api-reference/sessions/get-the-sessions-step-by-step-replay","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Each completed action paired with the screenshot taken after it, in\\ntime order, with a signed \", _jsx(_components.code, {\n children: \"frame_url\"\n }), \" that expires at \", _jsx(_components.code, {\n children: \"expires_at\"\n }), \"\\n(Unix seconds, about five minutes). Frames still uploading are left\\nout until they are ready. Past the workspace’s history window this\\nreturns \", _jsx(_components.code, {\n children: \"402\"\n }), \" with \", _jsx(_components.code, {\n children: \"reason: \\\"history_window\\\"\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get the session's step-by-step replay","description":"Each completed action paired with the screenshot taken after it, in\ntime order, with a signed `frame_url` that expires at `expires_at`\n(Unix seconds, about five minutes). Frames still uploading are left\nout until they are ready. Past the workspace's history window this\nreturns `402` with `reason: \"history_window\"`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/replay","href":"/api-reference/sessions/get-the-sessions-step-by-step-replay","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getSessionReplay","summary":"Get the session's step-by-step replay","description":"Each completed action paired with the screenshot taken after it, in\ntime order, with a signed `frame_url` that expires at `expires_at`\n(Unix seconds, about five minutes). Frames still uploading are left\nout until they are ready. Past the workspace's history window this\nreturns `402` with `reason: \"history_window\"`.\n","tags":["Sessions"],"parameters":["137921ff-cc3a-4528-8062-4ad0dd88775f","9906e30f-6595-4d02-8d6a-3f9d764a6c4e"],"responses":{"200":"ace09be9-dd39-40ea-aee9-9166ebb09d22","401":"5ab9d851-70a9-440e-bfaf-228b6542eefe","402":"79a20518-2258-4433-b216-5da42835e92c","404":"d7ebd04e-332b-44ae-acd5-2d4d21239292","502":"69f8b043-32b2-43b2-b4ce-c30968f2f483","503":"bd30edd0-5aa2-4935-af24-7933d13d49c2"},"method":"get","type":"path","servers":["67414a81-b86b-4d15-b96f-3a390c272e81"],"security":["e990c9c7-7adf-4c43-a478-c17a739371f3","a66fdb89-a491-49fa-b34f-5bf4ba59f929"],"path":"/v1/sessions/{id}/replay","baseUrlOptions":["https://api.lusor.ai"],"title":"Get the session's step-by-step replay","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"137921ff-cc3a-4528-8062-4ad0dd88775f":{"name":"id","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Session ID.","uniqueKey":"","typeLabel":"string"},"description":"Session ID."},"9906e30f-6595-4d02-8d6a-3f9d764a6c4e":{"name":"workspaceId","in":"query","required":false,"schema":{"type":"string","format":"uuid","isRequired":false,"description":"Workspace the request is scoped to. Optional for API keys: a key is\nbound to one workspace when it is created, and naming any other\nworkspace returns an opaque 404.\n","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"Workspace the request is scoped to. Optional for API keys: a key is\nbound to one workspace when it is created, and naming any other\nworkspace returns an opaque 404.\n"}},"responses":{"ace09be9-dd39-40ea-aee9-9166ebb09d22":{"description":"Replay frames","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","required":["event","timestamp","frame_url","expires_at"],"properties":{"event":{"type":"object","required":["id","type","data","screenshotId","stepIndex"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].event.id","typeLabel":"string"},"type":{"type":"string","enum":["action_completed"],"isRequired":true,"uniqueKey":"data.items.[INDEX].event.type","typeLabel":"enum\u003cstring>"},"data":{"oneOf":[{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"data.items.[INDEX].event.data.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"isRequired":true,"uniqueKey":"data.items.[INDEX].event.data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].event.data","typeLabel":"object | null"},"screenshotId":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].event.screenshotId","typeLabel":"string"},"stepIndex":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"data.items.[INDEX].event.stepIndex.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].event.stepIndex.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].event.stepIndex","typeLabel":"integer | null"}},"isRequired":true,"uniqueKey":"data.items.[INDEX].event","typeLabel":"object"},"timestamp":{"type":"string","format":"date-time","description":"When the action completed.","isRequired":true,"uniqueKey":"data.items.[INDEX].timestamp","typeLabel":"string\u003cdate-time>"},"frame_url":{"type":"string","format":"uri","description":"Signed URL of the PNG screenshot.","isRequired":true,"uniqueKey":"data.items.[INDEX].frame_url","typeLabel":"string\u003curi>"},"expires_at":{"type":"integer","description":"When `frame_url` stops working, in Unix seconds.","isRequired":true,"uniqueKey":"data.items.[INDEX].expires_at","typeLabel":"integer"}},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":[{"event":{"id":"\u003cstring>","type":"action_completed","data":{},"screenshotId":"\u003cstring>","stepIndex":123},"timestamp":"2023-11-07T05:31:56Z","frame_url":"\u003cstring>","expires_at":123}]}}},"exampleType":"generated"}},"exampleType":"generated"},"5ab9d851-70a9-440e-bfaf-228b6542eefe":{"description":"Authentication required or invalid credentials.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"79a20518-2258-4433-b216-5da42835e92c":{"description":"`upgrade_required`: the session is older than the workspace plan's\nhistory window. Nothing is returned. The body also carries\n`reason: \"history_window\"`.\n","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"d7ebd04e-332b-44ae-acd5-2d4d21239292":{"description":"Resource not found.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"69f8b043-32b2-43b2-b4ce-c30968f2f483":{"description":"The phone or a Lusor service could not be reached.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"bd30edd0-5aa2-4935-af24-7933d13d49c2":{"description":"`history_policy_unresolved`: the workspace's plan cannot be resolved right now; nothing is returned.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"e990c9c7-7adf-4c43-a478-c17a739371f3":{"ApiKey":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Workspace API key, created in the dashboard under Settings → API Keys.","scopes":[],"schemeName":"ApiKey"}},"a66fdb89-a491-49fa-b34f-5bf4ba59f929":{"BearerAuth":{"type":"http","scheme":"bearer","description":"The same workspace API key, sent as `Authorization: Bearer \u003cyour API key>`.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"67414a81-b86b-4d15-b96f-3a390c272e81":{"url":"https://api.lusor.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Workspace API key, created in the dashboard under Settings → API Keys.","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"X-Api-Key","type":"string","description":"Workspace API key, created in the dashboard under Settings → API Keys.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"X-Api-Key"}],"title":"ApiKey"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The same workspace API key, sent as `Authorization: Bearer \u003cyour API key>`.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The same workspace API key, sent as `Authorization: Bearer \u003cyour API key>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"lusor-ai","siteName":"Lusor","title":"Get the session's step-by-step replay - Lusor","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T18:45:52.363Z","originalFileLocation":"api-reference/sessions/get-the-sessions-step-by-step-replay.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Each completed action paired with the screenshot taken after it, in time order, with a signed frame_url that expires at expires_at (Unix seconds, about five minutes). Frames still uploading are left out until they are ready. Past the workspace\u0026#x27;s history window this returns 402 with reason: \u0026quot;history_window\u0026quot;.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Lusor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get the session\u0026#x27;s step-by-step replay - Lusor\">\u003cmeta data-mint-head property=\"og:description\" content=\"Each completed action paired with the screenshot taken after it, in time order, with a signed frame_url that expires at expires_at (Unix seconds, about five minutes). Frames still uploading are left out until they are ready. Past the workspace\u0026#x27;s history window this returns 402 with reason: \u0026quot;history_window\u0026quot;.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Lusor\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lusor-ai.mintlify.site/_mintlify/api/og/v2?division=Sessions\u0026amp;title=Get+the+session%27s+step-by-step+replay\u0026amp;description=Each+completed+action+paired+with+the+screenshot+taken+after+it%2C+in%0Atime+order%2C+with+a+signed+%60frame_url%60+that+expires+at+%60expires_at%60%0A%28Unix+seconds%2C+about+five\u0026amp;theme=11044ab09cca21353c9d0db7\u0026amp;signature=ed4f0a3119f2697155dcd1782bcf52dd98f2bd706ac0f96fad791824bff3323f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get the session\u0026#x27;s step-by-step replay - Lusor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Each completed action paired with the screenshot taken after it, in time order, with a signed frame_url that expires at expires_at (Unix seconds, about five minutes). Frames still uploading are left out until they are ready. Past the workspace\u0026#x27;s history window this returns 402 with reason: \u0026quot;history_window\u0026quot;.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lusor-ai.mintlify.site/_mintlify/api/og/v2?division=Sessions\u0026amp;title=Get+the+session%27s+step-by-step+replay\u0026amp;description=Each+completed+action+paired+with+the+screenshot+taken+after+it%2C+in%0Atime+order%2C+with+a+signed+%60frame_url%60+that+expires+at+%60expires_at%60%0A%28Unix+seconds%2C+about+five\u0026amp;theme=11044ab09cca21353c9d0db7\u0026amp;signature=ed4f0a3119f2697155dcd1782bcf52dd98f2bd706ac0f96fad791824bff3323f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Lusor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#111111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/sessions/get-the-sessions-step-by-step-replay.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.lusor.ai/#organization\",\"name\":\"Lusor\",\"url\":\"https://docs.lusor.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lusor-ai/Ifu_dlUtLbDafp0r/images/lusor-logo-lightmode@2x.png?fit=max\u0026auto=format\u0026n=Ifu_dlUtLbDafp0r\u0026q=85\u0026s=977cb89acbdf111277711fe79f404fd5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.lusor.ai#website\",\"name\":\"Lusor\",\"url\":\"https://docs.lusor.ai\",\"publisher\":{\"@id\":\"https://docs.lusor.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay#webpage\",\"url\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay\",\"name\":\"Get the session's step-by-step replay\",\"description\":\"Each completed action paired with the screenshot taken after it, in time order, with a signed frame_url that expires at expires_at (Unix seconds, about five minutes). Frames still uploading are left out until they are ready. Past the workspace's history window this returns 402 with reason: \\\"history_window\\\".\",\"dateModified\":\"2026-11-10T18:45:52.363Z\",\"isPartOf\":{\"@id\":\"https://docs.lusor.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.lusor.ai/api-reference/sessions/get-session-detail\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sessions\",\"item\":\"https://docs.lusor.ai/api-reference/sessions/get-session-detail\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get the session's step-by-step replay\",\"item\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay#apireference\",\"headline\":\"Get the session's step-by-step replay\",\"name\":\"Get the session's step-by-step replay\",\"description\":\"Each completed action paired with the screenshot taken after it, in time order, with a signed frame_url that expires at expires_at (Unix seconds, about five minutes). Frames still uploading are left out until they are ready. Past the workspace's history window this returns 402 with reason: \\\"history_window\\\".\",\"url\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay\",\"mainEntityOfPage\":{\"@id\":\"https://docs.lusor.ai/api-reference/sessions/get-the-sessions-step-by-step-replay#webpage\"},\"dateModified\":\"2026-11-10T18:45:52.363Z\",\"publisher\":{\"@id\":\"https://docs.lusor.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.lusor.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Lusor\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Lusor\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/sessions/get-the-sessions-step-by-step-replay.md","siteName":"Lusor","nav":{"global":null,"tabs":[{"tab":"Developers","pages":[{"title":"Developers","href":""}]},{"tab":"Help Center","pages":[{"title":"Help Center","href":"/help"}]},{"tab":"Build with AI","pages":[{"title":"Build with AI","href":"/connect"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"group":"Endpoints","pages":[{"group":"Sessions","pages":[{"title":"Get session detail","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}","href":"/api-reference/sessions/get-session-detail"},{"title":"Rename a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/sessions/{id}","href":"/api-reference/sessions/rename-a-session"},{"title":"Get session events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/events","href":"/api-reference/sessions/get-session-events"},{"title":"Get the detailed step breakdown (session JSON)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/breakdown","href":"/api-reference/sessions/get-the-detailed-step-breakdown-session-json"},{"title":"List sessions for device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/sessions","href":"/api-reference/sessions/list-sessions-for-device"},{"title":"Create a new session on this device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/sessions","href":"/api-reference/sessions/create-a-new-session-on-this-device"},{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions","href":"/api-reference/sessions/list-sessions"},{"title":"Get session status (lightweight)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/status","href":"/api-reference/sessions/get-session-status-lightweight"},{"title":"Get session artifacts (screenshots + ui-states + output)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/artifacts","href":"/api-reference/sessions/get-session-artifacts-screenshots-+-ui-states-+-output"},{"title":"Cancel a running session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stop","href":"/api-reference/sessions/cancel-a-running-session"},{"title":"Get one captured UI state of a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/ui-states/{file}","href":"/api-reference/sessions/get-one-captured-ui-state-of-a-session"},{"title":"Cancel a queued follow-up or queued agent turn","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/sessions/{id}/queue/{invocationId}","href":"/api-reference/sessions/cancel-a-queued-follow-up-or-queued-agent-turn"},{"title":"Send a follow-up message to a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/continue","href":"/api-reference/sessions/send-a-follow-up-message-to-a-session"},{"title":"Answer the agent's question (request_human)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/hitl","href":"/api-reference/sessions/answer-the-agents-question-request_human"},{"title":"Get the session's video recording","description":"Returns signed URLs for the recording's MP4 segments, in order.\nURLs expire at each segment's `expires_at` (Unix seconds); fetch\nthis endpoint again for fresh ones.\n\n`recording_status` is always present:\n\n- `absent`: the session has no recording.\n- `pending`: the recording is still being finalized. Poll again.\n- `complete`: finished. When `data` is present it is always\n `complete`.\n- `failed`: finalization failed; `recording_status_reason` says\n why.\n\n`data` is null until there is playable media. A recording follows\nthe workspace's history window: past it, `402` with\n`reason: \"history_window\"`, unless the plan includes video replay\nor the recording was made on a paid Lusor Phone plan.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/recording","href":"/api-reference/sessions/get-the-sessions-video-recording"},{"title":"Get the session's step-by-step replay","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/replay","href":"/api-reference/sessions/get-the-sessions-step-by-step-replay"},{"title":"Download one replay frame (PNG)","description":"The bytes of one replay screenshot, served by the API instead of a\nsigned URL. `index` selects into the list `GET\n/v1/sessions/{id}/replay` returns, counting from 0.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/replay/frame","href":"/api-reference/sessions/download-one-replay-frame-png"}]},{"group":"Skills","pages":[{"title":"List skills","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/skills","href":"/api-reference/skills/list-skills"},{"title":"Create a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/skills","href":"/api-reference/skills/create-a-skill"},{"title":"Get a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/skills/{id}","href":"/api-reference/skills/get-a-skill"},{"title":"Delete a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/skills/{id}","href":"/api-reference/skills/delete-a-skill"},{"title":"Update a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/skills/{id}","href":"/api-reference/skills/update-a-skill"}]},{"group":"Secrets","pages":[{"title":"List the secrets saved in a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/vault","href":"/api-reference/secrets/list-the-secrets-saved-in-a-workspace"}]},{"group":"PhoneNumbers","pages":[{"title":"List workspace phone numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/numbers","href":"/api-reference/phonenumbers/list-workspace-phone-numbers"},{"title":"Get one workspace phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/numbers/{phoneNumberId}","href":"/api-reference/phonenumbers/get-one-workspace-phone-number"},{"title":"Page stored SMS messages for a workspace number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages","href":"/api-reference/phonenumbers/page-stored-sms-messages-for-a-workspace-number"}]},{"group":"Emails","pages":[{"title":"List the workspace's Agent Mail addresses","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/emails/addresses","href":"/api-reference/emails/list-the-workspaces-agent-mail-addresses"},{"title":"Page stored inbound mail for a workspace address","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/emails/messages","href":"/api-reference/emails/page-stored-inbound-mail-for-a-workspace-address"}]},{"group":"Devices","pages":[{"title":"List devices in the key's workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/devices","href":"/api-reference/devices/list-devices-in-the-keys-workspace"},{"title":"List devices in a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices","href":"/api-reference/devices/list-devices-in-a-workspace"},{"title":"Preview deploying Lusor Phones","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/deploy/preview","href":"/api-reference/devices/preview-deploying-lusor-phones"},{"title":"Deploy the quoted Lusor Phones","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/deploy","href":"/api-reference/devices/deploy-the-quoted-lusor-phones"},{"title":"Preview removing a Lusor Phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/remove/preview","href":"/api-reference/devices/preview-removing-a-lusor-phone"},{"title":"Remove a Lusor Phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/remove","href":"/api-reference/devices/remove-a-lusor-phone"},{"title":"Get a Lusor Phone's location and timezone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/geo","href":"/api-reference/devices/get-a-lusor-phones-location-and-timezone"},{"title":"Set a Lusor Phone's location and timezone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{workspaceId}/devices/{deviceId}/geo","href":"/api-reference/devices/set-a-lusor-phones-location-and-timezone"},{"title":"Restore a Lusor Phone's automatic location","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/workspaces/{workspaceId}/devices/{deviceId}/geo","href":"/api-reference/devices/restore-a-lusor-phones-automatic-location"},{"title":"Get which agents are using, queued for, or attached to a phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/occupancy","href":"/api-reference/devices/get-which-agents-are-using-queued-for-or-attached-to-a-phone"},{"title":"List the countries a Lusor Phone's Internet can exit from","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/internet/locations","href":"/api-reference/devices/list-the-countries-a-lusor-phones-internet-can-exit-from"},{"title":"Get a Lusor Phone's Internet exit country and route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/internet-location","href":"/api-reference/devices/get-a-lusor-phones-internet-exit-country-and-route"},{"title":"Get a Lusor Phone's static IP status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/static-ip","href":"/api-reference/devices/get-a-lusor-phones-static-ip-status"},{"title":"Get a Lusor Phone's wipe-and-reset progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/reset","href":"/api-reference/devices/get-a-lusor-phones-wipe-and-reset-progress"},{"title":"Get device UI state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/state","href":"/api-reference/devices/get-device-ui-state"},{"title":"Get fresh device screenshot (binary PNG)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/screenshot","href":"/api-reference/devices/get-fresh-device-screenshot-binary-png"},{"title":"Get a Lusor Phone's language","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/language","href":"/api-reference/devices/get-a-lusor-phones-language"},{"title":"Set a Lusor Phone's language","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{workspaceId}/devices/{deviceId}/language","href":"/api-reference/devices/set-a-lusor-phones-language"},{"title":"Get a Lusor Phone's identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/identity","href":"/api-reference/devices/get-a-lusor-phones-identity"},{"title":"Set a Lusor Phone's identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{workspaceId}/devices/{deviceId}/identity","href":"/api-reference/devices/set-a-lusor-phones-identity"},{"title":"Get a Lusor Phone's last advertising-ID reset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/advertising-id","href":"/api-reference/devices/get-a-lusor-phones-last-advertising-id-reset"},{"title":"Reset a Lusor Phone's advertising ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/advertising-id/reset","href":"/api-reference/devices/reset-a-lusor-phones-advertising-id"}]},{"group":"DeviceVerbs","pages":[{"title":"Trigger screenshot (capture-aware verb)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/screenshot","href":"/api-reference/deviceverbs/trigger-screenshot-capture-aware-verb"},{"title":"Tap on device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/tap","href":"/api-reference/deviceverbs/tap-on-device"},{"title":"Swipe gesture on device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/swipe","href":"/api-reference/deviceverbs/swipe-gesture-on-device"},{"title":"Type text into focused field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/type","href":"/api-reference/deviceverbs/type-text-into-focused-field"},{"title":"Press a key on device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/key","href":"/api-reference/deviceverbs/press-a-key-on-device"},{"title":"Clear focused field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/clear","href":"/api-reference/deviceverbs/clear-focused-field"},{"title":"Press Back key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/back","href":"/api-reference/deviceverbs/press-back-key"},{"title":"Press Home key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/home","href":"/api-reference/deviceverbs/press-home-key"},{"title":"Press Recent Apps key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/recent","href":"/api-reference/deviceverbs/press-recent-apps-key"},{"title":"Launch an app","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/apps/start","href":"/api-reference/deviceverbs/launch-an-app"},{"title":"Force-stop an app","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/apps/stop","href":"/api-reference/deviceverbs/force-stop-an-app"},{"title":"Run a chain of actions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/chain","href":"/api-reference/deviceverbs/run-a-chain-of-actions"}]},{"group":"Shell","pages":[{"title":"Run a restricted shell command","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/shell","href":"/api-reference/shell/run-a-restricted-shell-command"}]},{"group":"LiveView","pages":[{"title":"Start a live view of the session's phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/start","href":"/api-reference/liveview/start-a-live-view-of-the-sessions-phone"},{"title":"Re-arm a live view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/connect","href":"/api-reference/liveview/re-arm-a-live-view"},{"title":"Extend a live view's liveness","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/keepalive","href":"/api-reference/liveview/extend-a-live-views-liveness"},{"title":"Ask the phone for a fresh keyframe","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/request_frame","href":"/api-reference/liveview/ask-the-phone-for-a-fresh-keyframe"},{"title":"Send a WebRTC answer or ICE candidate to the phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/signal","href":"/api-reference/liveview/send-a-webrtc-answer-or-ice-candidate-to-the-phone"},{"title":"Stop a live view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/stop","href":"/api-reference/liveview/stop-a-live-view"},{"title":"Get the ICE servers for a live view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/stream/ice-servers","href":"/api-reference/liveview/get-the-ice-servers-for-a-live-view"},{"title":"Receive the phone's WebRTC signaling (Server-Sent Events)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/stream/events","href":"/api-reference/liveview/receive-the-phones-webrtc-signaling-server-sent-events"}]},{"group":"Datasets","pages":[{"title":"Promote one session run's list to a Dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/datasets","href":"/api-reference/datasets/promote-one-session-runs-list-to-a-dataset"},{"title":"List Datasets visible to the caller","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets","href":"/api-reference/datasets/list-datasets-visible-to-the-caller"},{"title":"Get a Dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}","href":"/api-reference/datasets/get-a-dataset"},{"title":"Delete a Dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/datasets/{id}","href":"/api-reference/datasets/delete-a-dataset"},{"title":"Update a Dataset (rename and/or replace output)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/datasets/{id}","href":"/api-reference/datasets/update-a-dataset-rename-andor-replace-output"}]},{"group":"Agents","pages":[{"title":"List active agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents","href":"/api-reference/agents/list-active-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents","href":"/api-reference/agents/create-an-agent"},{"title":"Get or create the workspace's primary agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/primary","href":"/api-reference/agents/get-or-create-the-workspaces-primary-agent"},{"title":"List agents recoverable within the 30-day restore window","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/trash","href":"/api-reference/agents/list-agents-recoverable-within-the-30-day-restore-window"},{"title":"Get an agent, attachments, and the newest page of turns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/{id}","href":"/api-reference/agents/get-an-agent-attachments-and-the-newest-page-of-turns"},{"title":"Archive an agent for 30 days","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/agents/{id}","href":"/api-reference/agents/archive-an-agent-for-30-days"},{"title":"Update an agent and atomically replace its attachment set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/agents/{id}","href":"/api-reference/agents/update-an-agent-and-atomically-replace-its-attachment-set"},{"title":"Restore an archived agent within its 30-day window","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{id}/restore","href":"/api-reference/agents/restore-an-archived-agent-within-its-30-day-window"},{"title":"Read one older page of an agent's turn history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/{id}/turns","href":"/api-reference/agents/read-one-older-page-of-an-agents-turn-history"},{"title":"Submit a turn to an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{id}/turns","href":"/api-reference/agents/submit-a-turn-to-an-agent"},{"title":"Cancel a turn that is still waiting for its device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{id}/turns/{sessionId}/cancel","href":"/api-reference/agents/cancel-a-turn-that-is-still-waiting-for-its-device"}]},{"group":"Workspaces","pages":[{"title":"Get a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}","href":"/api-reference/workspaces/get-a-workspace"}]},{"group":"Catalog","pages":[{"title":"List installable catalog apps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/catalog/apps","href":"/api-reference/catalog/list-installable-catalog-apps"},{"title":"Get a catalog app's icon (binary image)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/catalog/apps/{package}/icon","href":"/api-reference/catalog/get-a-catalog-apps-icon-binary-image"}]},{"group":"Health","pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/health","href":"/api-reference/health/health-check"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Get the session's step-by-step replay - Lusor","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-D6S0Yh6q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}