{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Edpire","colors":{"primary":"#d23b2b","light":"#e8705f","dark":"#b32e20"},"logo":{"light":"https://mintcdn.com/edpire/9_FvQPbS2GqAu0YW/logo/light.svg?fit=max\u0026auto=format\u0026n=9_FvQPbS2GqAu0YW\u0026q=85\u0026s=faadb5eddb49ec206f337777e395011b","dark":"https://mintcdn.com/edpire/9_FvQPbS2GqAu0YW/logo/dark.svg?fit=max\u0026auto=format\u0026n=9_FvQPbS2GqAu0YW\u0026q=85\u0026s=f1b6218694a95c3399ff188a657d509c"},"favicon":"https://mintcdn.com/edpire/9_FvQPbS2GqAu0YW/favicon.svg?fit=max\u0026auto=format\u0026n=9_FvQPbS2GqAu0YW\u0026q=85\u0026s=5b9aa982d8487fe0d200b01cb095312b","api":{"openapi":"openapi.yaml"},"navbar":{"links":[{"href":"https://edpire.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get API Key","href":"https://edpire.com/org/integrations"}},"footer":{"socials":{"website":"https://edpire.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"edpire","hasAudioNarration":false,"actualSubdomain":"edpire","customDomains":["docs.edpire.com"],"gitSource":{"type":"github","owner":"youssefalmia","repo":"edpire-web","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea417908bdaa6bc8ffb971","collectionId":"62aaeb32-7255-4fa7-aea0-9a8707c21ed9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea417908bdaa6bc8ffb971"},"entitlements":{},"buildId":"6aee476e57fcb2132bceb7b8","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":26},{"language":"default","tag":"Documentation","count":15},{"language":"default","tag":"For Platforms \u0026 Developers","count":12},{"language":"default","tag":"Assessments","count":9},{"language":"default","tag":"SDK","count":7},{"language":"default","tag":"SDK Reference","count":7},{"language":"default","tag":"Trust \u0026 Terms","count":5},{"language":"default","tag":"For Technical \u0026 Procurement Review","count":5},{"language":"default","tag":"Folders","count":4},{"language":"default","tag":"Submissions","count":4}]},"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":"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":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/submissions/autosave-submission","slug":"/api-reference/submissions/autosave-submission","pageMetadata":{"title":"Autosave Answers","openapi":"POST /submissions/{id}/save","description":"Persists the learner's current answers as drafts without grading or\nsubmitting. Only valid for submissions that are `in_progress`.\n\nUse this endpoint on a timed interval from your player to implement\ncrash recovery or resumable sessions, depending on the assessment's\n`autosave_mode`:\n\n- **`crash_recovery`** — save every 30–60 s; discard drafts on explicit\n submit. Lets learners recover from closed tabs.\n- **`resumable`** — save on every answer change; let the learner log out\n and return later to pick up exactly where they left off.\n- **`off`** — do not call this endpoint; answers are only recorded at\n final submit.\n\nExisting draft rows for the same `(submission_id, question_id)` are\nreplaced atomically. A row's draft flag is cleared when the submission\nis graded.\n","href":"/api-reference/submissions/autosave-submission"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Persists the learner’s current answers as drafts without grading or\\nsubmitting. Only valid for submissions that are \", _jsx(_components.code, {\n children: \"in_progress\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Use this endpoint on a timed interval from your player to implement\\ncrash recovery or resumable sessions, depending on the assessment’s\\n\", _jsx(_components.code, {\n children: \"autosave_mode\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"crash_recovery\"\n })\n }), \" — save every 30–60 s; discard drafts on explicit\\nsubmit. Lets learners recover from closed tabs.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"resumable\"\n })\n }), \" — save on every answer change; let the learner log out\\nand return later to pick up exactly where they left off.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"off\"\n })\n }), \" — do not call this endpoint; answers are only recorded at\\nfinal submit.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Existing draft rows for the same \", _jsx(_components.code, {\n children: \"(submission_id, question_id)\"\n }), \" are\\nreplaced atomically. A row’s draft flag is cleared when the submission\\nis graded.\"]\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":"Autosave Answers","openapi":"POST /submissions/{id}/save","description":"Persists the learner's current answers as drafts without grading or\nsubmitting. Only valid for submissions that are `in_progress`.\n\nUse this endpoint on a timed interval from your player to implement\ncrash recovery or resumable sessions, depending on the assessment's\n`autosave_mode`:\n\n- **`crash_recovery`** — save every 30–60 s; discard drafts on explicit\n submit. Lets learners recover from closed tabs.\n- **`resumable`** — save on every answer change; let the learner log out\n and return later to pick up exactly where they left off.\n- **`off`** — do not call this endpoint; answers are only recorded at\n final submit.\n\nExisting draft rows for the same `(submission_id, question_id)` are\nreplaced atomically. A row's draft flag is cleared when the submission\nis graded.\n","href":"/api-reference/submissions/autosave-submission"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"autosaveSubmission","summary":"Autosave in-progress answers","description":"Persists the learner's current answers as drafts without grading or\nsubmitting. Only valid for submissions that are `in_progress`.\n\nUse this endpoint on a timed interval from your player to implement\ncrash recovery or resumable sessions, depending on the assessment's\n`autosave_mode`:\n\n- **`crash_recovery`** — save every 30–60 s; discard drafts on explicit\n submit. Lets learners recover from closed tabs.\n- **`resumable`** — save on every answer change; let the learner log out\n and return later to pick up exactly where they left off.\n- **`off`** — do not call this endpoint; answers are only recorded at\n final submit.\n\nExisting draft rows for the same `(submission_id, question_id)` are\nreplaced atomically. A row's draft flag is cleared when the submission\nis graded.\n","tags":["Submissions"],"security":["364bfe8f-9823-4e4a-853d-356bd7301953"],"parameters":["29cdb81d-7b42-40ba-8cda-aeb09cc5dec5"],"requestBody":"f46adf9d-633d-444c-8b65-b50f935332ca","responses":{"200":"9e917049-d9a3-48a8-b8f7-476005d21203","400":"ad371a19-c7f2-42f2-ad9e-9632ace21741","404":"058f6dd2-c9bd-40de-b06d-e476f5db6251"},"method":"post","type":"path","servers":["8de91162-f0c4-4097-84a2-a279f892f89d"],"path":"/submissions/{id}/save","baseUrlOptions":["https://edpire.com/api/v1"],"title":"Autosave in-progress answers","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"29cdb81d-7b42-40ba-8cda-aeb09cc5dec5":{"name":"id","in":"path","required":true,"description":"Submission ID (must be in_progress)","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Submission ID (must be in_progress)","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["answers"],"properties":{"answers":{"type":"object","required":["exerciseAnswers"],"properties":{"exerciseAnswers":{"type":"array","items":{"type":"object","required":["exerciseId","questionAnswers"],"properties":{"exerciseId":{"type":"string","isRequired":true,"uniqueKey":"answers.exerciseAnswers.items.[INDEX].exerciseId","typeLabel":"string"},"questionAnswers":{"type":"array","items":{"type":"object","required":["questionId","answers"],"properties":{"questionId":{"type":"string","isRequired":true,"uniqueKey":"answers.exerciseAnswers.items.[INDEX].questionAnswers.items.[INDEX].questionId","typeLabel":"string"},"answers":{"type":"array","items":{"type":"object","additionalProperties":true,"uniqueKey":"answers.exerciseAnswers.items.[INDEX].questionAnswers.items.[INDEX].answers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"answers.exerciseAnswers.items.[INDEX].questionAnswers.items.[INDEX].answers","typeLabel":"object[]"}},"uniqueKey":"answers.exerciseAnswers.items.[INDEX].questionAnswers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"answers.exerciseAnswers.items.[INDEX].questionAnswers","typeLabel":"object[]"}},"uniqueKey":"answers.exerciseAnswers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"answers.exerciseAnswers","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"answers","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"answers":{"exerciseAnswers":[{"exerciseId":"\u003cstring>","questionAnswers":[{"questionId":"\u003cstring>","answers":[{}]}]}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9e917049-d9a3-48a8-b8f7-476005d21203":{"description":"Answers saved","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ok":{"type":"boolean","uniqueKey":"data.ok","typeLabel":"boolean"},"saved_at":{"type":"string","format":"date-time","uniqueKey":"data.saved_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data","typeLabel":"object"},"error":{"oneOf":[{"type":"null","uniqueKey":"error.oneOf.0","typeLabel":"null"},{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"error.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"error.oneOf.1","typeLabel":"object"}],"uniqueKey":"error","typeLabel":"null | object"},"meta":{"oneOf":[{"type":"null","uniqueKey":"meta.oneOf.0","typeLabel":"null"},{"type":"object","uniqueKey":"meta.oneOf.1","typeLabel":"object"}],"uniqueKey":"meta","typeLabel":"null | object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"ok":true,"saved_at":"2023-11-07T05:31:56Z"},"error":{"message":"\u003cstring>"},"meta":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"ad371a19-c7f2-42f2-ad9e-9632ace21741":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null","uniqueKey":"data","typeLabel":"null"},"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"null","uniqueKey":"meta","typeLabel":"null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"message":"\u003cstring>"},"meta":null}}},"exampleType":"generated"}},"exampleType":"generated"},"058f6dd2-c9bd-40de-b06d-e476f5db6251":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null","uniqueKey":"data","typeLabel":"null"},"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"null","uniqueKey":"meta","typeLabel":"null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"message":"\u003cstring>"},"meta":null}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"364bfe8f-9823-4e4a-853d-356bd7301953":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API key starting with `edp_live_`. Pass via `Authorization: Bearer edp_live_xxx`.\n\nScopes: `read:assessments`, `write:assessments`, `read:results`, `write:submissions`.\n","scopes":["write:submissions"],"schemeName":"BearerAuth"}}},"servers":{"8de91162-f0c4-4097-84a2-a279f892f89d":{"url":"https://edpire.com/api/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key starting with `edp_live_`. Pass via `Authorization: Bearer edp_live_xxx`.\n\nScopes: `read:assessments`, `write:assessments`, `read:results`, `write:submissions`.\n","scopes":["write:submissions"],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key starting with `edp_live_`. Pass via `Authorization: Bearer edp_live_xxx`.\n\nScopes: `read:assessments`, `write:assessments`, `read:results`, `write:submissions`.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"edpire","siteName":"Edpire","title":"Autosave Answers - Edpire","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-18T08:39:07.502Z","originalFileLocation":"api-reference/submissions/autosave-submission.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=\"Persists the learner\u0026#x27;s current answers as drafts without grading or submitting. Only valid for submissions that are in_progress. Use this endpoint on a timed interval from your player to implement crash recovery or resumable sessions, depending on the assessment\u0026#x27;s autosave_mode: - crash_recovery — save every 30–60 s; discard drafts on explicit submit. Lets learners recover from closed tabs. - resumable — save on every answer change; let the learner log out and return later to pick up exactly where they left off. - off — do not call this endpoint; answers are only recorded at final submit. Existing draft rows for the same (submission_id, question_id) are replaced atomically. A row\u0026#x27;s draft flag is cleared when the submission is graded.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Edpire\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_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/edpire/3DlmGdo6raU2pO8A/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Autosave Answers - Edpire\">\u003cmeta data-mint-head property=\"og:description\" content=\"Persists the learner\u0026#x27;s current answers as drafts without grading or submitting. Only valid for submissions that are in_progress. Use this endpoint on a timed interval from your player to implement crash recovery or resumable sessions, depending on the assessment\u0026#x27;s autosave_mode: - crash_recovery — save every 30–60 s; discard drafts on explicit submit. Lets learners recover from closed tabs. - resumable — save on every answer change; let the learner log out and return later to pick up exactly where they left off. - off — do not call this endpoint; answers are only recorded at final submit. Existing draft rows for the same (submission_id, question_id) are replaced atomically. A row\u0026#x27;s draft flag is cleared when the submission is graded.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Edpire\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.edpire.com/api-reference/submissions/autosave-submission\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://edpire.mintlify.site/_mintlify/api/og/v2?division=Submissions\u0026amp;title=Autosave+Answers\u0026amp;description=Persists+the+learner%27s+current+answers+as+drafts+without+grading+or%0Asubmitting.+Only+valid+for+submissions+that+are+%60in_progress%60.%0A%0AUse+this+endpoint+on+a+timed\u0026amp;theme=7430934b26553f6c5158b5ef\u0026amp;signature=b39d5159f0d3194664f7480101cfe8289cb6093290101ece0a3bc668c0438b97\">\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=\"Autosave Answers - Edpire\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Persists the learner\u0026#x27;s current answers as drafts without grading or submitting. Only valid for submissions that are in_progress. Use this endpoint on a timed interval from your player to implement crash recovery or resumable sessions, depending on the assessment\u0026#x27;s autosave_mode: - crash_recovery — save every 30–60 s; discard drafts on explicit submit. Lets learners recover from closed tabs. - resumable — save on every answer change; let the learner log out and return later to pick up exactly where they left off. - off — do not call this endpoint; answers are only recorded at final submit. Existing draft rows for the same (submission_id, question_id) are replaced atomically. A row\u0026#x27;s draft flag is cleared when the submission is graded.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://edpire.mintlify.site/_mintlify/api/og/v2?division=Submissions\u0026amp;title=Autosave+Answers\u0026amp;description=Persists+the+learner%27s+current+answers+as+drafts+without+grading+or%0Asubmitting.+Only+valid+for+submissions+that+are+%60in_progress%60.%0A%0AUse+this+endpoint+on+a+timed\u0026amp;theme=7430934b26553f6c5158b5ef\u0026amp;signature=b39d5159f0d3194664f7480101cfe8289cb6093290101ece0a3bc668c0438b97\">\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/edpire/3DlmGdo6raU2pO8A/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Edpire\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#d23b2b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.edpire.com/api-reference/submissions/autosave-submission\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/submissions/autosave-submission.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.edpire.com/#organization\",\"name\":\"Edpire\",\"url\":\"https://docs.edpire.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/edpire/9_FvQPbS2GqAu0YW/logo/light.svg?fit=max\u0026auto=format\u0026n=9_FvQPbS2GqAu0YW\u0026q=85\u0026s=faadb5eddb49ec206f337777e395011b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.edpire.com#website\",\"name\":\"Edpire\",\"url\":\"https://docs.edpire.com\",\"publisher\":{\"@id\":\"https://docs.edpire.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission#webpage\",\"url\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission\",\"name\":\"Autosave Answers\",\"description\":\"Persists the learner's current answers as drafts without grading or submitting. Only valid for submissions that are in_progress. Use this endpoint on a timed interval from your player to implement crash recovery or resumable sessions, depending on the assessment's autosave_mode: - crash_recovery — save every 30–60 s; discard drafts on explicit submit. Lets learners recover from closed tabs. - resumable — save on every answer change; let the learner log out and return later to pick up exactly where they left off. - off — do not call this endpoint; answers are only recorded at final submit. Existing draft rows for the same (submission_id, question_id) are replaced atomically. A row's draft flag is cleared when the submission is graded.\",\"dateModified\":\"2026-05-18T08:39:07.502Z\",\"isPartOf\":{\"@id\":\"https://docs.edpire.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Submissions\",\"item\":\"https://docs.edpire.com/api-reference/submissions/get-submission\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Autosave Answers\",\"item\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission#apireference\",\"headline\":\"Autosave Answers\",\"name\":\"Autosave Answers\",\"description\":\"Persists the learner's current answers as drafts without grading or submitting. Only valid for submissions that are in_progress. Use this endpoint on a timed interval from your player to implement crash recovery or resumable sessions, depending on the assessment's autosave_mode: - crash_recovery — save every 30–60 s; discard drafts on explicit submit. Lets learners recover from closed tabs. - resumable — save on every answer change; let the learner log out and return later to pick up exactly where they left off. - off — do not call this endpoint; answers are only recorded at final submit. Existing draft rows for the same (submission_id, question_id) are replaced atomically. A row's draft flag is cleared when the submission is graded.\",\"url\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission\",\"mainEntityOfPage\":{\"@id\":\"https://docs.edpire.com/api-reference/submissions/autosave-submission#webpage\"},\"dateModified\":\"2026-05-18T08:39:07.502Z\",\"publisher\":{\"@id\":\"https://docs.edpire.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.edpire.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Edpire\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Edpire","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/introduction"}]},{"anchor":"SDK","icon":"cube","pages":[{"title":"SDK","href":"/developer/sdk/overview"}]},{"anchor":"API Reference","icon":"rectangle-terminal","groups":[{"group":"Assessments","pages":[{"title":"List Assessments","openapi":"GET /assessments","href":"/api-reference/assessments/list-assessments"},{"title":"Get Assessment","openapi":"GET /assessments/{id}","href":"/api-reference/assessments/get-assessment"},{"title":"Create Assessment","openapi":"POST /assessments","href":"/api-reference/assessments/create-assessment"},{"title":"Update Assessment","openapi":"PATCH /assessments/{id}","href":"/api-reference/assessments/update-assessment"},{"title":"Publish Assessment","openapi":"POST /assessments/{id}/publish","href":"/api-reference/assessments/publish-assessment"},{"title":"Check Question","openapi":"POST /assessments/{id}/check","href":"/api-reference/assessments/check-question"},{"title":"Submit Assessment (Headless)","openapi":"POST /assessments/{id}/submit","href":"/api-reference/assessments/submit-assessment"},{"title":"Get Assessment Results","openapi":"GET /assessments/{id}/results","href":"/api-reference/assessments/get-results"},{"title":"Get Assessment Analytics","openapi":"GET /assessments/{id}/analytics","href":"/api-reference/assessments/get-analytics"}]},{"group":"Submissions","pages":[{"title":"Get Submission","openapi":"GET /submissions/{id}","href":"/api-reference/submissions/get-submission"},{"title":"Review Submission","openapi":"GET /submissions/{id}/review","description":"Everything needed to show a learner one of their past attempts exactly as\nthey saw it on submitting: the assessment content, their answers, and the\nmarking, with the expected answer on anything missed and the teacher's\ncomments on open responses.\n\nPass the response to the SDK's `EdpireAssessment.review()` unchanged. It\nrenders the paper read-only.\n\nCall it from your server, after checking the attempt belongs to the\nsigned-in learner, and relay the result to the browser. Also pass\n`learner_ref`: a submission belonging to anyone else then returns 404,\nso a bug in your own ownership check cannot show one learner another's\npaper.\n\nAnswer keys are never included. The reveal fields (`display_answer`,\n`detail.correctChoiceIds`, `detail.correctPairings`) are the same ones\nthe submit response returned at the end of the attempt.\n\nThe paper is drawn from the assessment's current published content.\nAnswers and marks are keyed by question and node, so they survive a\nrepublish.\n","href":"/api-reference/submissions/get-submission-review"},{"title":"Autosave Answers","openapi":"POST /submissions/{id}/save","href":"/api-reference/submissions/autosave-submission"},{"title":"Record Event","openapi":"POST /submissions/{id}/events","description":"Records a structured interaction event for an in-progress submission.\nUse this to stream telemetry from your player to Edpire for analytics\nand proctoring.\n\n**`answer_change`** — fires each time a learner modifies their answer\nfor a question. Requires `question_id`. Atomically increments the\n`change_count` counter on the answer row so you can see how many times\na learner revised each answer.\n\n**`node_view`** — learner viewed a specific interactive node within a\nquestion. Pass `node_id` to identify it.\n\n**`paused` / `resumed`** — learner paused or resumed the session (e.g.\nnavigated away and returned).\n\n**`navigated`** — learner moved between questions or sections. Use the\n`payload` field to record `{ from: questionId, to: questionId }`.\n\n**`flagged`** — learner flagged a question for review.\n","href":"/api-reference/submissions/record-event"}]},{"group":"Learners","pages":[{"title":"Get Learner Results","openapi":"GET /learners/{id}/results","href":"/api-reference/learners/get-learner-results"}]},{"group":"Folders","pages":[{"title":"List Folders","openapi":"GET /folders","href":"/api-reference/folders/list-folders"},{"title":"Create Folder","openapi":"POST /folders","href":"/api-reference/folders/create-folder"},{"title":"Get Folder","openapi":"GET /folders/{id}","href":"/api-reference/folders/get-folder"},{"title":"Get Folder Tree","openapi":"GET /folders/{id}/tree","href":"/api-reference/folders/get-folder-tree"}]},{"group":"Webhooks","pages":[{"title":"Register Webhook","openapi":"POST /webhooks","href":"/api-reference/webhooks/register-webhook"},{"title":"List Webhooks","openapi":"GET /webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Delete Webhook","openapi":"DELETE /webhooks/{id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"List Webhook Deliveries","openapi":"GET /webhooks/deliveries","href":"/api-reference/webhooks/list-deliveries"}]},{"group":"Embed","pages":[{"title":"Mint Embed Token","openapi":"POST /embed/token","href":"/api-reference/embed/mint-token"},{"title":"Get Assessment (Embed)","openapi":"GET /embed/assessments","href":"/api-reference/embed/get-assessment"},{"title":"Submit Assessment (Embed)","openapi":"POST /embed/submit","href":"/api-reference/embed/submit-assessment"}]},{"group":"Authoring","pages":[{"title":"Create Author Link","openapi":"POST /author-links","href":"/api-reference/authoring/create-author-link"}]}]},{"anchor":"Trust \u0026 Terms","icon":"shield-check","pages":[{"title":"Trust \u0026 Terms","href":"/enterprise/sla"}]},{"anchor":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Autosave Answers - Edpire","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}