Verse API, SDK and MCP3D on your site in one line.
Upload a 3D file, get a link, and embed it on any page with one tag. A REST API, typed SDKs, React and Vue components, webhooks and tools for Framer, Webflow and Figma.
<script src="https://verse.ctruh.com/embed.js" data-scene="YOUR_SCENE_ID"></script>Live demo
This is the real viewer, not a video.
Drag to look around. The tag you copy on the right is the one running here, in your browser, with nothing to install.
<script src="https://verse.ctruh.com/embed.js" async></script>
<verse-viewer src="YOUR_SCENE_ID" autoplay-tour></verse-viewer>npm install @ctruhtech/verse-react
import { VerseViewer } from "@ctruhtech/verse-react";
export default function Product() {
return <VerseViewer host="https://verse.ctruh.com" src="YOUR_SCENE_ID" autoplayTour />;
}npm install @ctruhtech/verse-vue
<script setup>
import { VerseViewer } from "@ctruhtech/verse-vue";
</script>
<template>
<VerseViewer host="https://verse.ctruh.com" src="YOUR_SCENE_ID" autoplay-tour />
</template>npm install @ctruhtech/verse-sdk
import { readFile } from "node:fs/promises";
import { VerseClient } from "@ctruhtech/verse-sdk";
const verse = new VerseClient({
baseUrl: "https://verse.ctruh.com",
token: process.env.VERSE_TOKEN,
});
const done = await verse.publish(await readFile("chair.glb"), { name: "chair" });
console.log(verse.shareLink(done));
console.log(verse.embedCode(done).element);# 1. upload (the response is {"job": "..."})
curl -X POST https://verse.ctruh.com/v1/ingest \
-H "Authorization: Bearer $VERSE_TOKEN" \
-H "Content-Type: model/gltf-binary" \
-H "X-Verse-Name: chair" \
--data-binary @chair.glb
# 2. poll until "status": "done", then use the scene id
curl https://verse.ctruh.com/v1/ingest/JOB_IDReplace YOUR_SCENE_ID with the id of any scene you upload. Keep your token on the server.
Three steps
From file to embedded in minutes.
Get a key
Sign in to Studio and create an API token. It owns your scenes and sets your upload limits. Open Studio
Upload a model
POST a GLB, or hand us a public URL. We prepare it and return a scene id when it is ready. API quickstart
Embed it
Put the tag on your page, or use the React and Vue components. Try it in the playground
Packages
Typed, small and dependency-free.
Each package ships ESM and CommonJS builds with types, and works in server-rendered frameworks.
@ctruhtech/verse-sdk
REST client for Node and browsers: upload, wait, publish, private links, embed code.
npm install @ctruhtech/verse-sdk@ctruhtech/verse-viewer
The <verse-viewer> web component. Poster-first, lazy, safe to import on a server.
npm install @ctruhtech/verse-viewer@ctruhtech/verse-react
A <VerseViewer> component with typed props and events. Works in Next.js and Remix.
npm install @ctruhtech/verse-react@ctruhtech/verse-vue
A <VerseViewer> component and plugin for Vue 3 and Nuxt.
npm install @ctruhtech/verse-vueFor designers
No code needed.
Drop a Verse scene into the tools you already design and publish in.
Framer
A code component with controls for the scene, autoplay tour, background and poster.
Webflow
Paste one embed into a custom code block, or use the Designer Extension.
Figma
Insert a live-preview frame from a Verse link, then open the scene in one click.
Pricing
API calls come with every plan.
5,000 API calls a month, free
Every call made with an API key or token counts. Starter, Pro and Scale include more each month; your usage shows on your billing page, and near the limit every response carries a Verse-Upgrade header.
$0.20 per 10,000 calls above a paid plan
Pay as you go is coming soon. Until then, reaching the allowance answers HTTP 402 with an upgrade link, and nothing extra is charged.
See all pricing →Keep going
Everything else you need.
Webhooks
Get a signed call when a scene is ready or fails, so you never have to poll.
Webhooks guide →API reference
Every route, every error, every limit, with a Postman collection to try it.
Open the reference →AI agents (MCP)
Let Claude, ChatGPT or Cursor turn a 3D file into a Verse link. An MCP server and a share kit for AI 3D generators. Early access: the hosted endpoint is at /mcp.
MCP guide →Examples
Next.js, Vite, Vue, plain HTML, a Shopify product page, a Node script and a webhook receiver.
See the examples →