All Documentation

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:

TypeWhat it isBelongs to
LineA generated or uploaded voice line with its textA project and character (required)
SFXA sound effect with an optional description and tagsOptionally a project
3D ModelA 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)
ImageA 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 3 under 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.

GET/api/v1/content?contentType=&projectId=&characterId=lines:read | sfx:read | models:read | music:read
GET/api/v1/content/{'{id}'}read (by item type)
POST/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.

POST/api/v1/content/{'{id}'}/versionswrite (by item type)

multipart/form-data: audio plus optional text/source/duration. The new version becomes active.

PATCH/api/v1/content/{'{id}'}write (by item type)
FieldTypeDescription
activeVersion*integerVersion number to make active
DELETE/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}'
  1. 1Generation endpoints can save directly: POST /api/v1/tts with save.name stores the result as a line (needs lines:write); POST /api/v1/sfx/generate with save stores an SFX.
  2. 2To re-take a line or effect, generate with save.contentId (MCP saveContentId) 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.
  3. 3MCP tools list_content, get_content, set_active_content_version, and delete_content expose the same operations to AI agents.
  4. 43D models are created by POST /api/v1/models/generate and get new versions from POST /api/v1/content/{id}/refine — both asynchronous jobs, see 3D Models.