Saved Content
Your library of models, pictures, lines, sound effects and music — searchable, versioned, with an active version per item
Overview
Saved Content is the organization's asset library. It holds three kinds of items:
| Type | What it is | Belongs to |
|---|---|---|
| Line | A generated or uploaded voice line with its text | A project and character (required) |
| SFX | A sound effect with an optional description and tags | Optionally a project |
| 3D Model | A generated, rigged, textured model — FBX, GLB, textures, the .blend and build script, plus metadata (see 3D Models) | Optionally a project and a character (the ship a pilot flies, the mech a character wears) |
| Image | A Canvas picture — menu backdrop, HUD element, icon, key art — as PNG or JPEG, with alpha after a cutout (see Canvas) | Optionally a project and a character |
Content arrives from four places: Save Line on the TTS form or Live Endpoint preview, Save SFX on the Audio Effects page, direct Upload from the dashboard, and Generate 3D model (a background job that saves its result when it finishes).
Versioning and the Active Version
Every item keeps a version history. When saving, you choose Save as New (a fresh item at version 1) or Update Existing (a new version appended to an item you pick). Each version is a complete snapshot: audio, text, source, and duration.
One version is the active version — the one that plays, downloads, and appears everywhere by default. The rule:
Latest is active unless you change it
Saving a new version makes it the active one. On the item's detail page you can pin any older version as active; it stays active until you change it or save another version.
Working with versions
- •The dashboard list shows
v2 of 3under items with more than one version. - •The detail page lists every version with per-version listen and download, plus Set Active on inactive versions.
- •Versions cannot be deleted individually; deleting the item removes all versions and their audio.
Finding and Managing Content
- •Text search covers name, line text / SFX description, tags, project name, and character name.
- •Type tabs (All / Lines / SFX / Models) and project/character filters narrow the list; columns sort. Running model jobs show above the list.
- •Each audio row plays (the active version), downloads with the real file extension, and deletes; model rows show the thumbnail, open the 3D viewer, and download the GLB.
- •A model's versions come from generate and refine jobs rather than uploads; the detail page has a Refine box that appends the next version.
- •Uploads accept WAV, MP3, OGG, FLAC, M4A, AAC, and WMA up to 50MB.
API Access
Content is scoped by type: lines need lines:read / lines:write, sound effects need sfx:read / sfx:write, music needs music:read / music:write, 3D models need models:read / models:write, pictures need canvas:read / canvas:write. A key with only one of them sees only that type — even in unfiltered list calls.
/api/v1/content?contentType=&projectId=&characterId=lines:read | sfx:read | models:read | music:read/api/v1/content/{'{id}'}read (by item type)/api/v1/contentwrite (by contentType)multipart/form-data: audio, name, contentType (line | sfx), projectId?, characterId?, textToScreen?, tags?, source?, durationMs?. Lines require project, character, and text.
/api/v1/content/{'{id}'}/versionswrite (by item type)multipart/form-data: audio plus optional text/source/duration. The new version becomes active.
/api/v1/content/{'{id}'}write (by item type)| Field | Type | Description |
|---|---|---|
activeVersion* | integer | Version number to make active |
/api/v1/content/{'{id}'}write (by item type)Upload a new version of an existing line and pin an older one back:
# Add a version (becomes active)
curl -s https://<host>/api/v1/content/<id>/versions \
-H "Authorization: Bearer $API_KEY" \
-F "audio=@retake.mp3" \
-F "textToScreen=Welcome back, adventurer!"
# Changed your mind - make version 2 active again
curl -s -X PATCH https://<host>/api/v1/content/<id> \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"activeVersion": 2}'- 1Generation endpoints can save directly:
POST /api/v1/ttswithsave.namestores the result as a line (needslines:write);POST /api/v1/sfx/generatewithsavestores an SFX. - 2To re-take a line or effect, generate with
save.contentId(MCPsaveContentId) instead of a name: the result becomes the item's next active version, so it keeps its id and history rather than leaving a duplicate beside the one it replaces. - 3MCP tools
list_content,get_content,set_active_content_version, anddelete_contentexpose the same operations to AI agents. - 43D models are created by
POST /api/v1/models/generateand get new versions fromPOST /api/v1/content/{id}/refine— both asynchronous jobs, see 3D Models.