Session endpoints, health checks, and the local interactive API reference.
The SDKs handle session creation, streaming, interruption, and cleanup. For direct HTTP use, open the running service’s interactive API reference.
Endpoint
Use
POST /v1/sessions
Create a session with portrait or Cloud avatar_id, optional background, and quality
GET /v1/sessions/{id}
Read session state
POST /v1/sessions/{id}/viewer
Get a viewer descriptor
POST /v1/sessions/{id}/file
Play an audio file
POST /v1/sessions/{id}/interrupt
Stop current speech
DELETE /v1/sessions/{id}
Close a session
GET /healthz, GET /readyz, GET /metrics
Check health, readiness, and metrics
Create a local session:
curl -X POST http://localhost:7860/v1/sessions \ -F portrait=@portrait.jpg \ -F quality=low
Audio streaming uses WS /v1/sessions/{id}/audio; browser playback uses WebRTC or WS /v1/sessions/{id}/playback. Use an SDK unless you need to implement the wire protocol.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenSpline","colors":{"primary":"#4F7D36","light":"#6B9B4C","dark":"#A7D47D"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"openspline","hasAudioNarration":false,"actualSubdomain":"openspline","customDomains":["docs.openspline.dev"],"gitSource":{"type":"github","owner":"openspline","repo":"openspline","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":"","_id":"6ad884e0337aba952245b9c9"},"chroma":{"latestBuiltDeploymentHistoryId":"6ad884fd337aba952245bad6","collectionId":"821d8249-da3b-4527-9017-30ae4911378c","liveDeploymentHistoryId":"6ad884fd337aba952245bad6","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ad887ce538186b3cb633fe5","clientVersion":"0.0.3908","searchFilterCounts":[{"language":"default","tag":"Connect your agent","count":7},{"language":"default","tag":"Start here","count":4},{"language":"default","tag":"Build an avatar","count":4},{"language":"default","tag":"Reference","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","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":"editor-private-page-search","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":"teamspace","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":"editor-nav-generations","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":"vite-origin","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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"reference/http-api","slug":"/reference/http-api","pageMetadata":{"title":"Service HTTP API","description":"Session endpoints, health checks, and the local interactive API reference.","href":"/reference/http-api"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Session endpoints, health checks, and the local interactive API reference.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The SDKs handle session creation, streaming, interruption, and cleanup. For direct HTTP use, open the running service’s `,_jsx(_components.a,{href:`http://localhost:7860/docs`,children:`interactive API reference`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Endpoint`}),_jsx(_components.th,{children:`Use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/sessions`})}),_jsxs(_components.td,{children:[`Create a session with `,_jsx(_components.code,{children:`portrait`}),` or Cloud `,_jsx(_components.code,{children:`avatar_id`}),`, optional `,_jsx(_components.code,{children:`background`}),`, and `,_jsx(_components.code,{children:`quality`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /v1/sessions/{id}`})}),_jsx(_components.td,{children:`Read session state`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/sessions/{id}/viewer`})}),_jsx(_components.td,{children:`Get a viewer descriptor`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/sessions/{id}/file`})}),_jsx(_components.td,{children:`Play an audio file`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /v1/sessions/{id}/interrupt`})}),_jsx(_components.td,{children:`Stop current speech`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DELETE /v1/sessions/{id}`})}),_jsx(_components.td,{children:`Close a session`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`GET /healthz`}),`, `,_jsx(_components.code,{children:`GET /readyz`}),`, `,_jsx(_components.code,{children:`GET /metrics`})]}),_jsx(_components.td,{children:`Check health, readiness, and metrics`})]})]})]}),`\n`,_jsx(_components.p,{children:`Create a local session:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http://localhost:7860/v1/sessions`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -F`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` portrait=@portrait.jpg`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -F`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` quality=low`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Audio streaming uses `,_jsx(_components.code,{children:`WS /v1/sessions/{id}/audio`}),`; browser playback uses WebRTC or `,_jsx(_components.code,{children:`WS /v1/sessions/{id}/playback`}),`. Use an SDK unless you need to implement the wire protocol.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Service HTTP API","description":"Session endpoints, health checks, and the local interactive API reference.","href":"/reference/http-api"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"openspline","siteName":"OpenSpline","title":"Service HTTP API - OpenSpline","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T09:25:15.224Z","originalFileLocation":"reference/http-api.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=\"Session endpoints, health checks, and the local interactive API reference.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenSpline\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/openspline/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/openspline/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/openspline/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/openspline/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Service HTTP API - OpenSpline\">\u003cmeta data-mint-head property=\"og:description\" content=\"Session endpoints, health checks, and the local interactive API reference.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenSpline\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.openspline.dev/reference/http-api\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Service HTTP API - OpenSpline\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Session endpoints, health checks, and the local interactive API reference.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/openspline/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenSpline\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4F7D36\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.openspline.dev/reference/http-api\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/reference/http-api.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.openspline.dev/#organization\",\"name\":\"OpenSpline\",\"url\":\"https://docs.openspline.dev\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.openspline.dev#website\",\"name\":\"OpenSpline\",\"url\":\"https://docs.openspline.dev\",\"publisher\":{\"@id\":\"https://docs.openspline.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.openspline.dev/reference/http-api#webpage\",\"url\":\"https://docs.openspline.dev/reference/http-api\",\"name\":\"Service HTTP API\",\"description\":\"Session endpoints, health checks, and the local interactive API reference.\",\"dateModified\":\"2026-10-21T09:25:15.224Z\",\"isPartOf\":{\"@id\":\"https://docs.openspline.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.openspline.dev/reference/http-api#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.openspline.dev/reference/http-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Reference\",\"item\":\"https://docs.openspline.dev/reference/configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Service HTTP API\",\"item\":\"https://docs.openspline.dev/reference/http-api\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.openspline.dev/reference/http-api#article\",\"headline\":\"Service HTTP API\",\"name\":\"Service HTTP API\",\"description\":\"Session endpoints, health checks, and the local interactive API reference.\",\"url\":\"https://docs.openspline.dev/reference/http-api\",\"mainEntityOfPage\":{\"@id\":\"https://docs.openspline.dev/reference/http-api#webpage\"},\"dateModified\":\"2026-10-21T09:25:15.224Z\",\"publisher\":{\"@id\":\"https://docs.openspline.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.openspline.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenSpline\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenSpline","nav":{"global":null,"groups":[{"group":"Start here","pages":[{"title":"Start with OpenSpline","href":"/index"},{"title":"Create and embed in Cloud","href":"/get-started/cloud-dashboard"},{"title":"Stream audio on Cloud","href":"/get-started/cloud-api"},{"title":"Run on your GPU","href":"/get-started/self-host"}]},{"group":"Build an avatar","pages":[{"title":"Python SDK","href":"/sdk/python"},{"title":"Node SDK","href":"/sdk/node"},{"title":"Show the avatar","href":"/guides/frontend"},{"title":"Photo and video backgrounds","href":"/guides/backgrounds"}]},{"group":"Connect your agent","pages":[{"title":"Choose a connector","href":"/connectors/overview"},{"title":"OpenAI Realtime","href":"/connectors/openai-realtime"},{"title":"OpenAI Agents","href":"/connectors/openai-agents"},{"title":"LiveKit Agents","href":"/connectors/livekit"},{"title":"Gemini Live","href":"/connectors/gemini"},{"title":"ElevenLabs Agents","href":"/connectors/elevenlabs"},{"title":"Other integrations","href":"/connectors/other"}]},{"group":"Reference","pages":[{"title":"Configuration","href":"/reference/configuration"},{"title":"GPU workers","description":"Configure concurrent local avatar sessions and network access.","href":"/reference/gpu-workers"},{"title":"Service HTTP API","href":"/reference/http-api"},{"title":"Develop and validate","description":"Run OpenSpline from source and check SDK changes.","href":"/reference/development"}]}]},"title":"Service HTTP API - OpenSpline","buildId":"dpl_CUnGQP1HgFUzoxatVC37y4zP83Vx","deploymentId":"dpl_CUnGQP1HgFUzoxatVC37y4zP83Vx","dynamics":[],"chunks":[]}