Skip to content

Core Entities

This page describes the main entities in Shuffll and how they relate to each other. Understanding this model will help you navigate the API correctly — knowing which ID to use where, and how resources are scoped.


Entity overview

1 or more

has embedded

has embedded

contains

contains

contains

blueprint for

Organization

Workspace

Branding
(embedded)

Template

Asset

Project

1 or more

has embedded

has embedded

contains

contains

contains

blueprint for

Organization

Workspace

Branding
(embedded)

Template

Asset

Project


Organization

An Organization is the top-level container in Shuffll. It groups one or more workspaces under a single account and holds a shared branding configuration.

  • Retrieve your organizations and their workspace IDs with GET /auth/organization/list.
  • You need an organizationId to manage workspaces and their branding.

Workspace

A Workspace is the primary working environment. All content — projects, templates, and assets — lives inside a workspace, not directly on the organization. Each workspace also carries its own branding, which takes precedence over the organization's branding when videos are generated.

  • List all accessible workspaces via GET /auth/organization/{organizationId}/workspace/list; organization detail embeds only the first page.
  • Use GET /auth/organization/{organizationId}/workspace/{workspaceId}/projects/list to list a workspace's projects.
  • Read workspace branding from its detail endpoint. Update via PUT /auth/branding/entity with workspace: { id } in the body.

Template

A Template is a reusable video blueprint. It defines the scene structure, visual design, typography, media source pipeline, and default AI settings. Templates are workspace-scoped.

When you create a project from a template, the template configures the project's structure at creation time. It is not stored as a persistent link on the project afterward — the template is consumed once and the project stands on its own.

  • Browse templates with GET /auth/templates or GET /auth/organization/{organizationId}/workspace/{workspaceId}/templates.
  • Inspect a template's scene structure with GET /auth/templates/{templateId} before using it.

Asset

An Asset is a media file uploaded to a workspace — image, video, audio, or PDF. Assets are workspace-scoped and can be referenced directly in project creation requests using a resolved public media URL.

  • Upload assets with POST /auth/organization/{organizationId}/workspace/{workspaceId}/assets.
  • Asset uploadPath may be relative; resolve it against the content CDN before passing it as a media URL.

Project

A Project is a single video production. It is created inside a workspace, goes through an AI generation phase, automatic enhancement (post-production), and finally export. A project is the central unit of work in the Shuffll API.

  • Create a project with POST /auth/project/create.
  • Track status with GET /auth/project/{projectId}/create/status.
  • See Workflow Overview for the full lifecycle.

Branding

Branding is not a standalone entity — it is an embedded configuration inside both Organization and Workspace. It stores logo URLs, colour palette, company metadata, pronunciations, and the about text used in AI script generation.

Workspace branding takes precedence over organization branding when videos are generated. Manage branding with GET / PUT /auth/branding/entity.


Inside a Project

A project is composed of several parts that together define the complete video production:

Project

Creative
(AI-generated script
and storyline)

Scenes

Per-scene content
(dynamic values, videos,
subtitles, static text)

AI Voice settings
(provider, voice ID,
tone instructions)

AI Avatar settings
(avatar ID)

Font settings

Branding snapshot
(applied at generation time)

Status
STRUCTURE → GENERATING_IMAGES → DONE

Export jobs
(render results + output URLs)

API config
(webhook URL, additionalParams)

Project

Creative
(AI-generated script
and storyline)

Scenes

Per-scene content
(dynamic values, videos,
subtitles, static text)

AI Voice settings
(provider, voice ID,
tone instructions)

AI Avatar settings
(avatar ID)

Font settings

Branding snapshot
(applied at generation time)

Status
STRUCTURE → GENERATING_IMAGES → DONE

Export jobs
(render results + output URLs)

API config
(webhook URL, additionalParams)

ComponentDescription
CreativeThe AI-generated script and narrative structure — the content backbone of the video
ScenesOrdered list of scenes. Each scene has its own dynamic content, media, subtitle settings, and optional static text
AI Voice settingsWhich AI voice to use, the provider (OpenAI or ElevenLabs), and any tone/style instructions
AI Avatar settingsWhich AI avatar presenter to use, if any
Font settingsTypography applied across all scenes
Branding snapshotA copy of the workspace branding captured at creation time
StatusThe current stage: STRUCTURE → GENERATING_IMAGES → DONE (then enhancement begins)
Export jobsThe list of export runs and their output URLs (uploadPath MP4, dashPath DASH manifest)
API configThe webhook URL and any additionalParams to echo back in the webhook payload

Inside a Template

A template defines the blueprint used to initialise a project's structure. Its settings are applied (and in some cases overridable) at project creation time:

Template

Scene blueprints
(structure and scene types)

Design reference
(visual style, colours,
animations)

Flexibility
rigid / minor / flexible

Font settings
+ toUseTemplateFont flag

Video source pipeline
(fallback order for scene media)

Image source pipeline
(fallback order for scene images)

Default voice settings

AI description
(system prompt injected
into script generation)

Template

Scene blueprints
(structure and scene types)

Design reference
(visual style, colours,
animations)

Flexibility
rigid / minor / flexible

Font settings
+ toUseTemplateFont flag

Video source pipeline
(fallback order for scene media)

Image source pipeline
(fallback order for scene images)

Default voice settings

AI description
(system prompt injected
into script generation)

ComponentDescriptionOverridable at creation
Scene blueprintsDefines the number, type, and order of scenesPartially — flexibilityOverride controls how strictly they are followed
Design referencePoints to the visual design that drives colours, animations, and layoutNo
FlexibilityDefault AI adherence level for this templateYes — customTemplate.flexibilityOverride
Font settingsTypography for all scenesYes — customTemplate.fontsSettings or toUseTemplateFont
Video source pipelineDefault fallback order for scene video mediaYes — customTemplate.videoSourcesByOrder
Image source pipelineDefault fallback order for scene image slotsYes — customTemplate.imageSourcesByOrder
Default voice settingsVoice used if none is specified in the project requestYes — aiVoiceSettings at the project level
AI descriptionSystem prompt injected into script generationYes — customTemplate.description or toUseTemplateDescription

See Using Templates for a full guide on all overridable options.