Every scene gets two output formats: SOG (compressed, web-optimized) and PLY (raw Gaussian Splat data). Most can also be downloaded as SPZ, for native viewers. The output.formats parameter is accepted but has no effect: nothing reads it (_upload_to_r2 in pipeline/storage/upload.py).
SOG is a compressed format designed specifically for fast web delivery. It uses quantization and efficient packing to reduce file sizes by 3-5x compared to raw PLY while maintaining visual quality.Characteristics:
Typically 5-15 MB for a full scene
Loads in 1-3 seconds on a typical connection
Renders with the PlayCanvas gsplat viewer
Lossy compression — fine details may be slightly reduced
When to use: For anything that loads in a browser. Web apps, embeds, shareable links, mobile viewers. A download sends it when you don’t name a format and the scene has no SPZ.
PLY is the standard interchange format for Gaussian Splats. It stores the full, uncompressed Gaussian parameters (position, covariance, color, opacity, spherical harmonics).Characteristics:
Typically 30-80 MB depending on the number of Gaussians
Contains all Gaussian parameters at full precision
Compatible with all major Gaussian Splat viewers and editors
Lossless — exact training output
When to use: When you need to post-process, edit, or analyze the Gaussian Splat data. Research, offline rendering, format conversion, or feeding into other tools.
When downloading without format, the scene’s SPZ is served, otherwise its SOG, then its PLY; the X-Splat-Format header names the file sent. The scene’s format field names the file expected, but the header decides: a scene whose SPZ is missing from storage reports spz and sends SOG. Add ?format=sog or ?format=ply to the download URL for that file. The endpoint answers 200 with the file itself (downloadScene in api/src/lib/scenes.ts); pass -o <filename> to write it to a known path:
SPZ is Niantic’s compressed format for Gaussian Splats: smaller than PLY, larger than SOG. Use it with viewers that load .spz files directly, such as native renderers. On iOS, SplatKit renders SPZ natively (iOS 17, A14 or M1 chip or newer).SPZ is the default download. After training, every scene is converted to SPZ on a best-effort basis, so some older scenes, and scenes whose conversion failed, have none. For those, a download without format sends SOG, while ?format=spz returns 404 not_found; it never sends another format instead.
Custom pipelines — PLY is a standard format readable by most 3D libraries
For web delivery, always use SOG. Download PLY only when you need the raw data for offline processing or compatibility with third-party tools.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Splat3D API","description":"Turn photos and videos into interactive 3D scenes.","colors":{"primary":"#0064B8","light":"#7AC8F5","dark":"#0064B8"},"logo":{"light":"https://mintcdn.com/splat-3d/wnqi9kNMr7-1xjih/logo/light.svg?fit=max\u0026auto=format\u0026n=wnqi9kNMr7-1xjih\u0026q=85\u0026s=bc15fe1f4fcdf463e06636d6f2a83002","dark":"https://mintcdn.com/splat-3d/wnqi9kNMr7-1xjih/logo/dark.svg?fit=max\u0026auto=format\u0026n=wnqi9kNMr7-1xjih\u0026q=85\u0026s=d04469df5cbe0521aa4e6e3f4767bd88","href":"https://splat-3d.com"},"favicon":"https://mintcdn.com/splat-3d/wnqi9kNMr7-1xjih/favicon.svg?fit=max\u0026auto=format\u0026n=wnqi9kNMr7-1xjih\u0026q=85\u0026s=1caec7ca6867048ce5c4e34fe3d04e30","api":{"playground":{"display":"interactive"},"examples":{"languages":["bash","python","javascript"]}},"appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://github.com/zzulanas","type":"github"}],"primary":{"type":"button","label":"Dashboard","href":"https://splat-3d.com/dashboard"}},"footer":{"socials":{"github":"https://github.com/zzulanas"},"links":[{"header":"Get in touch","items":[{"label":"Custom workloads","href":"mailto:[email protected]"},{"label":"Dashboard","href":"https://splat-3d.com/dashboard"}]}]},"fonts":{"family":"Hanken Grotesk"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"splat-3d","hasAudioNarration":false,"actualSubdomain":"splat-3d","customDomains":["docs.splat-3d.com"],"gitSource":{"type":"github","owner":"zzulanas","repo":"gaussian-splatting","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ada2d1a0febba82de30e32b","collectionId":"6860f72c-8013-4fa9-8179-22eb387e32d4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ada2d1a0febba82de30e32b"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ada2d1a0febba82de30e32b","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":15},{"language":"default","tag":"Documentation","count":12},{"language":"default","tag":"Scenes","count":10},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Overview","count":4},{"language":"default","tag":"Getting Started","count":4},{"language":"default","tag":"SDKs","count":2},{"language":"default","tag":"Webhooks","count":2},{"language":"default","tag":"Usage","count":1}]},"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":"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":"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":"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":"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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"guides/output-formats","slug":"/guides/output-formats","pageMetadata":{"title":"Output Formats","description":"Understand the SOG, PLY and SPZ formats and when to use each.","href":"/guides/output-formats"},"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: \"Understand the SOG, PLY and SPZ formats and when to use each.\"\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`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`output-formats`,children:`Output Formats`}),`\n`,_jsxs(_components.p,{children:[`Every scene gets two output formats: `,_jsx(_components.strong,{children:`SOG`}),` (compressed, web-optimized) and `,_jsx(_components.strong,{children:`PLY`}),` (raw Gaussian Splat data). Most can also be downloaded as `,_jsx(_components.a,{href:`#spz`,children:`SPZ`}),`, for native viewers. The `,_jsx(_components.code,{children:`output.formats`}),` parameter is accepted but has no effect: nothing reads it (`,_jsx(_components.code,{children:`_upload_to_r2`}),` in `,_jsx(_components.code,{children:`pipeline/storage/upload.py`}),`).`]}),`\n`,_jsx(Heading,{level:`2`,id:`format-comparison`,children:`Format comparison`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`SOG`}),_jsx(_components.th,{children:`PLY`}),_jsx(_components.th,{children:`SPZ`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`File size`})}),_jsx(_components.td,{children:`5-15 MB`}),_jsx(_components.td,{children:`30-80 MB`}),_jsx(_components.td,{children:`Between SOG and PLY`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Web loading`})}),_jsx(_components.td,{children:`Fast (optimized)`}),_jsx(_components.td,{children:`Slow (large)`}),_jsx(_components.td,{children:`Not used by the web viewer`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Browser support`})}),_jsx(_components.td,{children:`All modern browsers`}),_jsx(_components.td,{children:`All modern browsers`}),_jsx(_components.td,{children:`Native viewers`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Editable`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Use case`})}),_jsx(_components.td,{children:`Web delivery, embedding`}),_jsx(_components.td,{children:`Offline tools, editing, research`}),_jsx(_components.td,{children:`Native and mobile renderers`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`sog-super-optimized-gaussians`,children:`SOG (Super-Optimized Gaussians)`}),`\n`,_jsx(_components.p,{children:`SOG is a compressed format designed specifically for fast web delivery. It uses quantization and efficient packing to reduce file sizes by 3-5x compared to raw PLY while maintaining visual quality.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Characteristics:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Typically 5-15 MB for a full scene`}),`\n`,_jsx(_components.li,{children:`Loads in 1-3 seconds on a typical connection`}),`\n`,_jsx(_components.li,{children:`Renders with the PlayCanvas gsplat viewer`}),`\n`,_jsx(_components.li,{children:`Lossy compression — fine details may be slightly reduced`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use:`}),` For anything that loads in a browser. Web apps, embeds, shareable links, mobile viewers. A download sends it when you don’t name a format and the scene has no SPZ.`]}),`\n`,_jsx(Heading,{level:`2`,id:`ply-polygon-file-format`,children:`PLY (Polygon File Format)`}),`\n`,_jsx(_components.p,{children:`PLY is the standard interchange format for Gaussian Splats. It stores the full, uncompressed Gaussian parameters (position, covariance, color, opacity, spherical harmonics).`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Characteristics:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Typically 30-80 MB depending on the number of Gaussians`}),`\n`,_jsx(_components.li,{children:`Contains all Gaussian parameters at full precision`}),`\n`,_jsx(_components.li,{children:`Compatible with all major Gaussian Splat viewers and editors`}),`\n`,_jsx(_components.li,{children:`Lossless — exact training output`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use:`}),` When you need to post-process, edit, or analyze the Gaussian Splat data. Research, offline rendering, format conversion, or feeding into other tools.`]}),`\n`,_jsx(Heading,{level:`2`,id:`downloading`,children:`Downloading`}),`\n`,_jsxs(_components.p,{children:[`When downloading without `,_jsx(_components.code,{children:`format`}),`, the scene’s SPZ is served, otherwise its SOG, then its PLY; the `,_jsx(_components.code,{children:`X-Splat-Format`}),` header names the file sent. The scene’s `,_jsx(_components.code,{children:`format`}),` field names the file expected, but the header decides: a scene whose SPZ is missing from storage reports `,_jsx(_components.code,{children:`spz`}),` and sends SOG. Add `,_jsx(_components.code,{children:`?format=sog`}),` or `,_jsx(_components.code,{children:`?format=ply`}),` to the download URL for that file. The endpoint answers `,_jsx(_components.code,{children:`200`}),` with the file itself (`,_jsx(_components.code,{children:`downloadScene`}),` in `,_jsx(_components.code,{children:`api/src/lib/scenes.ts`}),`); pass `,_jsx(_components.code,{children:`-o \u003cfilename>`}),` to write it to a known path:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,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:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# SOG`})}),`\n`,_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:` -L`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` scene.sog`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.splat-3d.com/v1/scenes/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SCENE_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/download?format=sog\"`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SPLAT3D_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# PLY`})}),`\n`,_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:` -L`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` scene.ply`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.splat-3d.com/v1/scenes/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SCENE_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/download?format=ply\"`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SPLAT3D_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`spz`,children:`SPZ`}),`\n`,_jsxs(_components.p,{children:[`SPZ is `,_jsx(_components.a,{href:`https://github.com/nianticlabs/spz`,children:`Niantic’s compressed format`}),` for Gaussian Splats: smaller than PLY, larger than SOG. Use it with viewers that load `,_jsx(_components.code,{children:`.spz`}),` files directly, such as native renderers. On iOS, `,_jsx(_components.a,{href:`https://github.com/Xget7/splatkit-ios`,children:`SplatKit`}),` renders SPZ natively (iOS 17, A14 or M1 chip or newer).`]}),`\n`,_jsxs(_components.p,{children:[`SPZ is the default download. After training, every scene is converted to SPZ on a best-effort basis, so some older scenes, and scenes whose conversion failed, have none. For those, a download without `,_jsx(_components.code,{children:`format`}),` sends SOG, while `,_jsx(_components.code,{children:`?format=spz`}),` returns `,_jsx(_components.code,{children:`404 not_found`}),`; it never sends another format instead.`]}),`\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:` -L`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` scene.spz`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.splat-3d.com/v1/scenes/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SCENE_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/download?format=spz\"`}),_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:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SPLAT3D_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`viewing-sog-files`,children:`Viewing SOG files`}),`\n`,_jsxs(_components.p,{children:[`SOG files are rendered using the `,_jsx(_components.a,{href:`https://github.com/playcanvas/supersplat`,children:`PlayCanvas gsplat viewer`}),`. You can:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`View on Splat3D`}),` — every completed scene has a shareable link at `,_jsx(_components.code,{children:`https://splat-3d.com/tour/{sceneId}`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Embed in your app`}),` — use the PlayCanvas viewer library directly`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use SuperSplat`}),` — the open-source desktop viewer from PlayCanvas`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`working-with-ply-files`,children:`Working with PLY files`}),`\n`,_jsx(_components.p,{children:`PLY files are compatible with a wide ecosystem of tools:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.a,{href:`https://playcanvas.com/supersplat/editor`,children:`SuperSplat`})}),` — browser-based editor for Gaussian Splats`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.a,{href:`https://github.com/graphdeco-inria/gaussian-splatting`,children:`3D Gaussian Splatting Viewer`})}),` — the original INRIA viewer`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.a,{href:`https://docs.nerf.studio/`,children:`Nerfstudio`})}),` — for further training or analysis`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Custom pipelines`}),` — PLY is a standard format readable by most 3D libraries`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`For web delivery, always use SOG. Download PLY only when you need the raw data for offline processing or compatibility with third-party tools.`})})]})}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":"Output Formats","description":"Understand the SOG, PLY and SPZ formats and when to use each.","href":"/guides/output-formats"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Output Formats","slug":"output-formats","depth":1,"children":[]},{"title":"Format comparison","slug":"format-comparison","depth":2,"children":[]},{"title":"SOG (Super-Optimized Gaussians)","slug":"sog-super-optimized-gaussians","depth":2,"children":[]},{"title":"PLY (Polygon File Format)","slug":"ply-polygon-file-format","depth":2,"children":[]},{"title":"Downloading","slug":"downloading","depth":2,"children":[]},{"title":"SPZ","slug":"spz","depth":2,"children":[]},{"title":"Viewing SOG files","slug":"viewing-sog-files","depth":2,"children":[]},{"title":"Working with PLY files","slug":"working-with-ply-files","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"splat-3d","siteName":"Splat3D API","title":"Output Formats - Splat3D API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-13T03:27:29.544Z","originalFileLocation":"guides/output-formats.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=\"dark\"}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=\"Understand the SOG, PLY and SPZ formats and when to use each.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Splat3D API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_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/splat-3d/9btEMpqE3cqbnssy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Output Formats - Splat3D API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understand the SOG, PLY and SPZ formats and when to use each.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Splat3D API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.splat-3d.com/guides/output-formats\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://splat-3d.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Output+Formats\u0026amp;description=Understand+the+SOG%2C+PLY+and+SPZ+formats+and+when+to+use+each.\u0026amp;theme=8f31a3f74407b4c2b7cc64a6\u0026amp;signature=9b0c4c11eca37b227cde19abfde98e12f97c9a84366ef571f50620c8e6a80c88\">\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=\"Output Formats - Splat3D API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understand the SOG, PLY and SPZ formats and when to use each.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://splat-3d.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Output+Formats\u0026amp;description=Understand+the+SOG%2C+PLY+and+SPZ+formats+and+when+to+use+each.\u0026amp;theme=8f31a3f74407b4c2b7cc64a6\u0026amp;signature=9b0c4c11eca37b227cde19abfde98e12f97c9a84366ef571f50620c8e6a80c88\">\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/splat-3d/9btEMpqE3cqbnssy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Splat3D API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0064B8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.splat-3d.com/guides/output-formats\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/output-formats.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.splat-3d.com/#organization\",\"name\":\"Splat3D API\",\"url\":\"https://docs.splat-3d.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/splat-3d/wnqi9kNMr7-1xjih/logo/light.svg?fit=max\u0026auto=format\u0026n=wnqi9kNMr7-1xjih\u0026q=85\u0026s=bc15fe1f4fcdf463e06636d6f2a83002\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.splat-3d.com#website\",\"name\":\"Splat3D API\",\"url\":\"https://docs.splat-3d.com\",\"publisher\":{\"@id\":\"https://docs.splat-3d.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.splat-3d.com/guides/output-formats#webpage\",\"url\":\"https://docs.splat-3d.com/guides/output-formats\",\"name\":\"Output Formats\",\"description\":\"Understand the SOG, PLY and SPZ formats and when to use each.\",\"dateModified\":\"2026-10-13T03:27:29.544Z\",\"isPartOf\":{\"@id\":\"https://docs.splat-3d.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.splat-3d.com/guides/output-formats#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.splat-3d.com/guides/output-formats#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.splat-3d.com/guides/pricing\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Output Formats\",\"item\":\"https://docs.splat-3d.com/guides/output-formats\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.splat-3d.com/guides/output-formats#article\",\"headline\":\"Output Formats\",\"name\":\"Output Formats\",\"description\":\"Understand the SOG, PLY and SPZ formats and when to use each.\",\"url\":\"https://docs.splat-3d.com/guides/output-formats\",\"mainEntityOfPage\":{\"@id\":\"https://docs.splat-3d.com/guides/output-formats#webpage\"},\"dateModified\":\"2026-10-13T03:27:29.544Z\",\"publisher\":{\"@id\":\"https://docs.splat-3d.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.splat-3d.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Splat3D API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Splat3D API","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"},{"title":"Authentication","href":"/authentication"},{"title":"Build with AI agents","href":"/build-with-ai"}]},{"group":"Guides","pages":[{"title":"Pricing \u0026 Credits","href":"/guides/pricing"},{"title":"Upload Limits","href":"/guides/upload-limits"},{"title":"Supported Inputs","href":"/guides/supported-inputs"},{"title":"How the Splat3D pipeline works","href":"/guides/pipeline-architecture"},{"title":"Quality Presets","href":"/guides/presets"},{"title":"Training Parameters","href":"/guides/training-parameters"},{"title":"SfM Backends","description":"Choose the right structure-from-motion engine for your captures.","href":"/guides/sfm-backends"},{"title":"Output Formats","href":"/guides/output-formats"}]}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdks/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]}]},"title":"Output Formats - Splat3D API","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":[],"chunks":[]}