Documentation Index
Fetch the complete documentation index at: https://mintlify.com/cgwire/zou/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Sequences and episodes organize your production hierarchy. This guide covers creating, retrieving, and managing these entities.
Episodes
Episodes are used for TV series and episodic content. They serve as the top-level container for sequences.
Creating an Episode
Create a new episode within a project:
POST /api/data/projects/{project_id}/episodes
Request Body:
{
"name": "EP01",
"description": "Pilot Episode",
"status": "running"
}
Parameters:
name (required): Episode identifier
description (required): Episode description
status (optional): One of running, complete, standby, canceled. Defaults to running
data (optional): Custom metadata as JSON object
Response:
{
"id": "episode-uuid",
"name": "EP01",
"description": "Pilot Episode",
"status": "running",
"project_id": "project-uuid",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
Getting Episodes
Retrieve all episodes for a project:
GET /api/data/projects/{project_id}/episodes
Response:
[
{
"id": "episode-uuid",
"name": "EP01",
"description": "Pilot Episode",
"status": "running",
"project_id": "project-uuid"
}
]
Getting a Single Episode
Retrieve detailed information for a specific episode:
GET /api/data/episodes/{episode_id}
Response:
{
"id": "episode-uuid",
"name": "EP01",
"description": "Pilot Episode",
"status": "running",
"project_id": "project-uuid",
"project_name": "My Series",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
Getting Episode Tasks
Retrieve all tasks associated with an episode:
GET /api/data/episodes/{episode_id}/tasks
This returns tasks directly assigned to the episode entity (not tasks on shots within the episode).
Getting Episode Sequences
Retrieve all sequences within an episode:
GET /api/data/episodes/{episode_id}/sequences
Response:
[
{
"id": "sequence-uuid",
"name": "SQ010",
"description": "Opening sequence",
"parent_id": "episode-uuid",
"project_id": "project-uuid"
}
]
Getting Episode Shots
Retrieve all shots across all sequences in an episode:
GET /api/data/episodes/{episode_id}/shots
This returns all shots from all sequences belonging to the episode.
Deleting an Episode
Delete an episode by ID:
DELETE /api/data/episodes/{episode_id}
Query Parameters:
force (optional): Set to true to force deletion including all related sequences and shots
Response: 204 No Content
Sequences
Sequences organize shots into logical groups within a project or episode.
Creating a Sequence
Create a new sequence within a project:
POST /api/data/projects/{project_id}/sequences
Request Body:
{
"name": "SQ010",
"episode_id": "episode-uuid",
"description": "Opening sequence"
}
Parameters:
name (required): Sequence identifier
episode_id (optional): Parent episode ID (for TV series)
description (optional): Sequence description
data (optional): Custom metadata as JSON object
Response:
{
"id": "sequence-uuid",
"name": "SQ010",
"description": "Opening sequence",
"episode_id": "episode-uuid",
"parent_id": "episode-uuid",
"project_id": "project-uuid",
"created_at": "2024-01-15T11:00:00Z",
"updated_at": "2024-01-15T11:00:00Z"
}
Note: For feature films, omit the episode_id to create a sequence directly under the project.
Getting Sequences
Retrieve all sequences for a project:
GET /api/data/projects/{project_id}/sequences
Response:
[
{
"id": "sequence-uuid",
"name": "SQ010",
"description": "Opening sequence",
"episode_id": "episode-uuid",
"project_id": "project-uuid"
}
]
Getting a Single Sequence
Retrieve detailed information for a specific sequence:
GET /api/data/sequences/{sequence_id}
Response:
{
"id": "sequence-uuid",
"name": "SQ010",
"description": "Opening sequence",
"parent_id": "episode-uuid",
"episode_id": "episode-uuid",
"episode_name": "EP01",
"project_id": "project-uuid",
"project_name": "My Series",
"created_at": "2024-01-15T11:00:00Z",
"updated_at": "2024-01-15T11:00:00Z"
}
Getting Sequence Shots
Retrieve all shots within a sequence:
GET /api/data/sequences/{sequence_id}/shots
Response:
[
{
"id": "shot-uuid",
"name": "SH010",
"description": "Character enters",
"nb_frames": 120,
"parent_id": "sequence-uuid",
"project_id": "project-uuid",
"sequence_name": "SQ010",
"project_name": "My Series"
}
]
Getting Sequence Tasks
Retrieve all tasks associated with a sequence:
GET /api/data/sequences/{sequence_id}/tasks
This returns tasks directly assigned to the sequence entity.
Getting Sequence Shot Tasks
Retrieve all tasks for all shots in a sequence:
GET /api/data/sequences/{sequence_id}/shot-tasks
This is useful for getting a complete task overview for a sequence.
Deleting a Sequence
Delete a sequence by ID:
DELETE /api/data/sequences/{sequence_id}
Query Parameters:
force (optional): Set to true to force deletion including all related shots
Response: 204 No Content
Filtering and Queries
Filter Sequences by Episode
Retrieve sequences filtered by episode:
GET /api/data/sequences?episode_id={episode_id}
Filter with Multiple Criteria
Many endpoints support query parameters for filtering:
GET /api/data/sequences?project_id={project_id}&episode_id={episode_id}
Sequences and Tasks
Get sequences with their associated tasks in one request:
GET /api/data/sequences/with-tasks?project_id={project_id}
Response:
[
{
"id": "sequence-uuid",
"name": "SQ010",
"project_id": "project-uuid",
"tasks": [
{
"id": "task-uuid",
"task_type_id": "tasktype-uuid",
"task_status_id": "status-uuid",
"assignees": ["person-uuid"]
}
]
}
]
Episodes and Tasks
Get episodes with their associated tasks:
GET /api/data/episodes/with-tasks?project_id={project_id}
Same structure as sequences with tasks.
Scenes
Scenes are optional entities for scene-based workflows.
Creating a Scene
Create a scene within a sequence:
POST /api/data/projects/{project_id}/scenes
Request Body:
{
"name": "SC001",
"sequence_id": "sequence-uuid"
}
Response:
{
"id": "scene-uuid",
"name": "SC001",
"parent_id": "sequence-uuid",
"project_id": "project-uuid"
}
Getting Scenes for a Sequence
Retrieve all scenes in a sequence:
GET /api/data/sequences/{sequence_id}/scenes
Linking Shots to Scenes
Link a shot to a scene:
POST /api/data/scenes/{scene_id}/shots
Request Body:
{
"shot_id": "shot-uuid"
}
Response:
{
"scene_id": "scene-uuid",
"shot_id": "shot-uuid"
}
Getting Shots from a Scene
Retrieve all shots linked to a scene:
GET /api/data/scenes/{scene_id}/shots
Unlinking a Shot from a Scene
Remove the link between a shot and a scene:
DELETE /api/data/scenes/{scene_id}/shots/{shot_id}
Production Statistics
Episode Statistics
Get task statistics by episode:
GET /api/data/projects/{project_id}/episodes/stats
Response:
{
"episode-uuid": {
"tasktype-uuid": {
"status-uuid": {
"count": 50,
"frames": 6000,
"drawings": 1500
}
}
},
"all": {
"all": {
"status-uuid": {
"count": 200,
"frames": 24000,
"drawings": 6000
}
}
}
}
Episode Retake Statistics
Get retake statistics by episode:
GET /api/data/projects/{project_id}/episodes/retake-stats
Response:
{
"episode-uuid": {
"max_retake_count": 4,
"done": {
"count": 197,
"frames": 16090,
"drawings": 16090
},
"retake": {
"count": 0,
"frames": 0,
"drawings": 0
},
"evolution": {
"1": {
"retake": {
"count": 80,
"frames": 7900,
"drawings": 8000
},
"done": {
"count": 117,
"frames": 3900,
"drawings": 8000
}
}
}
}
}
Best Practices
Naming Sequences
Use zero-padded numbering for proper sorting:
- Good:
SQ010, SQ020, SQ030
- Avoid:
SQ1, SQ2, SQ3
Episode Status Workflow
- Start episodes with
running status
- Use
standby for episodes on hold
- Mark episodes as
complete when delivered
- Use
canceled for episodes not proceeding
Organizing Production
For TV Series:
Project → Episodes → Sequences → Shots
For Feature Films:
Project → Sequences → Shots
For Scene-Based Workflow:
Project → Sequences → Scenes
↓
Shots (linked to scenes)
Next Steps