Skip to content
Try Kitsu Free

Data Models ​

Every entity returned by the Kitsu API (or the Gazu Python client) is a dictionary. This page lists all available fields for each model. Every dict includes id (string), created_at, and updated_at (ISO 8601 timestamps).

Project ​

Project ​

FieldTypeDefault
namestring
codestring
descriptionstring
file_treedict
datadict
has_avatarboolfalse
fpsstring"25"
ratiostring"16:9"
resolutionstring"1920x1080"
production_typestring ("short", "featurefilm", "tvshow")"short"
production_stylestring ("2d", "3d", "2d3d", "ar", "vfx", "stop-motion", "motion-design", "archviz", "commercial", "catalog", "nft", "video-game", "immersive")"2d3d"
start_datestring (date)
end_datestring (date)
man_daysint
nb_episodesint0
episode_spanint0
max_retakesint0
is_clients_isolatedboolfalse
is_client_stats_visiblebooltrue
is_client_task_list_visiblebooltrue
is_client_task_panel_visiblebooltrue
is_preview_download_allowedboolfalse
is_set_preview_automatedboolfalse
homepagestring"assets"
is_publish_default_for_artistsboolfalse
is_bot_collaboration_enabledboolfalse
is_single_preview_per_revisionboolfalse
revision_paddingint0
hd_bitrate_compressionint28
ld_bitrate_compressionint6
project_status_idstring (UUID)
project_status_namestring
default_preview_background_file_idstring (UUID)
teamlist of person IDs
asset_typeslist of entity type IDs
task_statuseslist of task status IDs
task_typeslist of task type IDs

revision_padding is a display-only setting: the API always stores and returns the bare revision integer. It is the minimum number of digits a client should use when showing a revision (0 = no padding, 3 turns revision 7 into v007).

team stays a plain list of person IDs. The member dicts returned by GET /data/projects/<project_id>/team additionally carry a project_role key: the role explicitly set for this production, or None when the person's global role applies. See the per-project roles section.

hd_bitrate_compression and ld_bitrate_compression are the bitrates, in Mbit/s, of the high and low definition movies encoded for the project's previews. A task type linked to the project can override each of them: the project lists expose the links as task_type_links, a dict keyed by task type id with priority, hd_bitrate_compression, ld_bitrate_compression and is_client_visible. A null bitrate inherits the project value. A bitrate cannot exceed the instance high definition bitrate (28 Mbit/s by default), and a low definition bitrate cannot exceed the high definition one it goes with, inherited when unset; the API refuses such writes.

is_client_stats_visible, is_client_task_list_visible and is_client_task_panel_visible choose what the clients of the production see in Kitsu: the statistics pages, the asset, shot and edit lists and pages, and the task panel. They default to true (null is treated as true) and are read and written through GET and PUT /data/projects/<project_id>. When is_client_stats_visible is false, GET /data/projects/<project_id>/episodes/stats answers 403 to a client of the production.

is_client_visible on a task type link says whether clients see that task type. It defaults to true (null is treated as true, i.e. visible to clients) and is set with POST /data/projects/<project_id>/settings/task-types (manager only; omitted means unchanged). Project templates copy the three project settings and the per task type is_client_visible of their task type links.

The project lists also expose task_statuses_link, a dict keyed by task status id with priority, roles_for_board and is_client_allowed. A non-null is_client_allowed overrides, for this production, the is_client_allowed of the task status: whether a client can set that status when commenting, including guests of a shared playlist. Null follows the task status value. It is set with PUT /data/projects/<project_id>/settings/task-status/<task_status_id> and the body {"is_client_allowed": true | false | null} (manager only; null goes back to the task status value). Project templates copy it with their task status links.

ProjectStatus ​

FieldTypeDefault
namestring
colorstring (hex)

ProjectTemplate ​

A reusable snapshot of a project's configuration. Templates have no production data — no team, no dates, no tasks, no entities. See the Project Templates guide for end-to-end usage.

FieldTypeDefault
namestring (unique)
descriptionstring
fpsstring"25"
ratiostring"16:9"
resolutionstring"1920x1080"
production_typestring ("short", "featurefilm", "tvshow")"short"
production_stylestring (same choices as Project)"2d3d"
max_retakesint0
is_clients_isolatedboolfalse
is_client_stats_visiblebooltrue
is_client_task_list_visiblebooltrue
is_client_task_panel_visiblebooltrue
is_preview_download_allowedboolfalse
is_set_preview_automatedboolfalse
is_publish_default_for_artistsboolfalse
is_single_preview_per_revisionboolfalse
revision_paddingint0
homepagestring"assets"
hd_bitrate_compressionint28
ld_bitrate_compressionint6
file_treedict
datadict
metadata_descriptorslist of dicts (see below)[]
task_typeslist of task type IDs
task_statuseslist of task status IDs
asset_typeslist of entity type IDs
status_automationslist of status automation IDs

The template's task type links also carry priority, the bitrates and is_client_visible (default true), copied to and from projects.

Each entry in metadata_descriptors has the shape:

FieldTypeNotes
namestringHuman-readable label
field_namestringSlugified key used in the entity data dict
entity_typestring ("Asset", "Shot", "Edit", "Task", ...)
task_type_idstring (UUID) or NoneOnly set for "Task" descriptors: the task type the column is scoped to
data_typestring ("string", "number", "list", "taglist", "boolean", "checklist", "date", "url", "textarea", "person")
choiceslist of stringsEmpty for free-form types
for_clientboolWhether the field is exposed to clients
departmentslist of department IDs
positionintOptional ordering hint

When the template is applied to a project, each descriptor in this snapshot is materialized into a regular MetadataDescriptor row on that project.

Entity ​

Entity ​

Entities represent assets, shots, sequences, episodes, scenes, concepts and concept folders. The entity_type_id determines which kind of entity it is.

FieldTypeDefault
namestring
codestring
descriptionstring
canceledboolfalse
nb_framesint
nb_entities_outint0
is_casting_standbyboolfalse
is_sharedboolfalse
statusstring ("standby", "running", "complete", "canceled")"running"
project_idstring (UUID)
entity_type_idstring (UUID)
parent_idstring (UUID)
source_idstring (UUID)
preview_file_idstring (UUID)
datadict
ready_forstring (UUID, task type)
created_bystring (UUID, person)
entities_outlist of entity IDs

parent_id names the container of the entity: the sequence of a shot, the episode of a sequence, the concept folder of a concept. It is empty for a concept that sits at the root of its project.

ConceptFolder ​

Concept folders sort the concepts of a project. They are entities too: a folder carries a name and a project_id, and a concept names its folder through its parent_id. Folders hold concepts only, on a single level, and never show up among the assets or the concepts of the project.

Everyone who can see the concepts of a project can list its folders. Creating, renaming, deleting a folder and moving concepts are reserved to the managers and the supervisors of the project. Deleting a folder keeps its concepts: they go back to the root of the project.

python
import gazu

project = gazu.project.get_project_by_name("My Production")

folder = gazu.concept.new_concept_folder(project, "Characters")
folders = gazu.concept.all_concept_folders_for_project(project)

# Publish a concept straight into the folder
concept = gazu.concept.new_concept(project, "Hero", concept_folder=folder)

# Move existing concepts to the folder, then back to the root
concepts = gazu.concept.all_concepts_for_project(project)
gazu.concept.move_concepts(project, concepts, folder)
gazu.concept.move_concepts(project, concepts)

folder["name"] = "Creatures"
gazu.concept.update_concept_folder(folder)
gazu.concept.remove_concept_folder(folder)
bash
# List the concept folders of a project
curl -H "Authorization: Bearer $TOKEN" \
  "$KITSU_URL/api/data/projects/$PROJECT_ID/concept-folders"

# Create a concept folder
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Characters"}' \
  "$KITSU_URL/api/data/projects/$PROJECT_ID/concept-folders"

# Move concepts to a folder (omit concept_folder_id to move them to the root)
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"concept_ids": ["'$CONCEPT_ID'"], "concept_folder_id": "'$FOLDER_ID'"}' \
  "$KITSU_URL/api/actions/projects/$PROJECT_ID/move-concepts"

# Rename, then delete a concept folder
curl -X PUT -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Creatures"}' \
  "$KITSU_URL/api/data/concept-folders/$FOLDER_ID"
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
  "$KITSU_URL/api/data/concept-folders/$FOLDER_ID"

EntityType ​

Used for asset types (Character, Prop, Environment, etc.) and built-in types (Shot, Sequence, Episode, Scene, Edit, Concept, ConceptFolder).

FieldTypeDefault
namestring
short_namestring
descriptionstring
archivedboolfalse
task_typeslist of task type IDs

Represents relationships between entities (e.g. casting: which assets appear in which shots).

FieldTypeDefault
entity_in_idstring (UUID)
entity_out_idstring (UUID)
datadict
nb_occurencesint1
labelstring""

Casting an asset in a shot also casts it in the parent episode. The episode link created that way carries data: {"auto": true} and is removed again once the asset is cast in none of the episode's shots. A link set from the episode side (no auto flag) is a decision of its own and only goes away when removed from the episode. See the Casting guide.

AssetInstance ​

A specific instance of an asset placed in a shot or scene.

FieldTypeDefault
asset_idstring (UUID)
namestring
numberint
descriptionstring
activebooltrue
datadict
scene_idstring (UUID)
target_asset_idstring (UUID)

Task ​

Task ​

FieldTypeDefault
namestring
descriptionstring
priorityint0
difficultyint3
durationfloat0
estimationfloat0
completion_rateint0
retake_countint0
sort_orderint0
start_datestring (datetime)
due_datestring (datetime)
real_start_datestring (datetime)
end_datestring (datetime)
done_datestring (datetime)
last_comment_datestring (datetime)
nb_assets_readyint0
datadict
nb_drawingsint0
last_preview_file_idstring (UUID)
project_idstring (UUID)
task_type_idstring (UUID)
task_status_idstring (UUID)
entity_idstring (UUID)
assigner_idstring (UUID)
assigneeslist of person IDs

TaskType ​

FieldTypeDefault
namestring
short_namestring
descriptionstring
colorstring (hex)"#FFFFFF"
priorityint1
for_entitystring"Asset"
allow_timelogbooltrue
archivedboolfalse
department_idstring (UUID)

TaskStatus ​

FieldTypeDefault
namestring
short_namestring
descriptionstring
colorstring (hex)
priorityint1
is_doneboolfalse
is_artist_allowedbooltrue
is_client_allowedbooltrue
is_retakeboolfalse
is_feedback_requestboolfalse
is_defaultboolfalse
is_wipboolfalse
for_conceptboolfalse
archivedboolfalse

StatusAutomation ​

FieldTypeDefault
entity_typestring"asset"
in_task_type_idstring (UUID)
in_task_status_idstring (UUID)
out_field_typestring ("status", "ready_for")"status"
out_task_type_idstring (UUID)
out_task_status_idstring (UUID)
import_last_revisionboolfalse
archivedboolfalse

TimeSpent ​

FieldTypeDefault
durationfloat
datestring (date)
task_idstring (UUID)
person_idstring (UUID)

Comment ​

Comment ​

FieldTypeDefault
object_idstring (UUID)
object_typestring
textstring
datadict
replieslist of dicts[]
checklistlist of dicts
pinnedbool
linkslist of strings
task_status_idstring (UUID)
person_idstring (UUID)
editor_idstring (UUID)
preview_file_idstring (UUID)
previewslist of preview file dicts
mentionslist of person IDs
department_mentionslist of department IDs
acknowledgementslist of person IDs
attachment_fileslist of attachment file dicts

AttachmentFile ​

FieldTypeDefault
namestring
sizeint1
extensionstring
mimetypestring
comment_idstring (UUID)
reply_idstring (UUID)
chat_message_idstring (UUID)

PreviewFile ​

FieldTypeDefault
namestring
original_namestring
revisionint1
positionint1
extensionstring
descriptionstring
pathstring
sourcestring
file_sizeint0
statusstring ("processing", "ready", "broken")"processing"
validation_statusstring ("validated", "rejected", "neutral")"neutral"
annotationsdict
widthint0
heightint0
durationfloat0
datadict
task_idstring (UUID)
person_idstring (UUID)
source_file_idstring (UUID)

PreviewBackgroundFile ​

FieldTypeDefault
namestring
archivedboolfalse
is_defaultboolfalse
original_namestring
extensionstring
file_sizeint0

File ​

WorkingFile ​

FieldTypeDefault
namestring
descriptionstring
commentstring
revisionint
sizeint
checksumint
pathstring
datadict
validation_statusstring: neutral, validated, rejectedneutral
task_idstring (UUID)
entity_idstring (UUID)
person_idstring (UUID)
software_idstring (UUID)

OutputFile ​

FieldTypeDefault
namestring
canceledboolfalse
sizeint
checksumstring
descriptionstring
commentstring
extensionstring
revisionint
representationstring
nb_elementsint1
sourcestring
pathstring
datadict
qualitystring: low, mid, highnull
file_status_idstring (UUID)
entity_idstring (UUID)
asset_instance_idstring (UUID)
output_type_idstring (UUID)
task_type_idstring (UUID)
person_idstring (UUID)
source_file_idstring (UUID)
temporal_entity_idstring (UUID)

OutputType ​

FieldTypeDefault
namestring
short_namestring

FileStatus ​

FieldTypeDefault
namestring
colorstring (hex)

Person and organisation ​

Person ​

FieldTypeDefault
first_namestring
last_namestring
full_namestring
emailstring
phonestring
contract_typestring ("open-ended", "fixed-term", "short-term", "freelance", "apprentice", "internship")"open-ended"
activebooltrue
archivedboolfalse
last_presencestring (date)
desktop_loginstring
totp_enabledboolfalse
email_otp_enabledboolfalse
fido_enabledboolfalse
preferred_two_factor_authenticationstring ("totp", "email_otp", "fido")
timezonestring
localestring
use_12_hour_clockboolfalse
display_date_formatstring ("YYYY-MM-DD", "DD/MM/YYYY", "MM/DD/YYYY")"YYYY-MM-DD"
datadict
rolestring ("user", "admin", "supervisor", "manager", "client", "vendor")"user"
project_rolestring or None, only in team listingsNone
positionstring ("supervisor", "lead", "artist")"artist"
senioritystring ("senior", "mid", "junior")"mid"
daily_salaryint0
has_avatarboolfalse
notifications_enabledboolfalse
notifications_slack_enabledboolfalse
notifications_slack_useridstring""
notifications_mattermost_enabledboolfalse
notifications_mattermost_useridstring""
notifications_discord_enabledboolfalse
notifications_discord_useridstring""
is_botboolfalse
expiration_datestring (date)
studio_idstring (UUID)
departmentslist of department IDs
preview_project_idstring (UUID), set only on a production preview account
preview_opened_atstring (datetime)
preview_open_untilstring (datetime), end of the access window

Department ​

FieldTypeDefault
namestring
colorstring (hex)
archivedboolfalse

Studio ​

FieldTypeDefault
namestring
colorstring (hex)
archivedboolfalse

Organisation ​

FieldTypeDefault
namestring
hours_by_dayfloat8
has_avatarboolfalse
use_original_file_nameboolfalse
timesheets_lockedboolfalse
format_duration_in_hoursboolfalse
hd_by_defaultboolfalse
chat_token_slackstring""
chat_webhook_mattermoststring""
chat_token_discordstring""
dark_theme_by_defaultboolfalse

Playlist ​

Playlist ​

FieldTypeDefault
namestring
shotslist of dicts
project_idstring (UUID)
episode_idstring (UUID)
task_type_idstring (UUID)
for_clientboolfalse
for_entitystring ("shot", "asset", "sequence", "edit", "episode")"shot"
is_for_allboolfalse
created_bystring (UUID)

BuildJob ​

FieldTypeDefault
statusstring ("running", "failed", "succeeded")"running"
job_typestring ("archive", "movie")"movie"
ended_atstring (datetime)
playlist_idstring (UUID)

Notification ​

Notification ​

FieldTypeDefault
readboolfalse
changeboolfalse
typestring ("comment", "mention", "assignation", "reply", "reply-mention", "playlist-ready")
person_idstring (UUID)
author_idstring (UUID)
comment_idstring (UUID)
task_idstring (UUID)
playlist_idstring (UUID)
reply_idstring (UUID)

News ​

FieldTypeDefault
changeboolfalse
author_idstring (UUID)
comment_idstring (UUID)
task_idstring (UUID)
preview_file_idstring (UUID)

Subscription ​

FieldTypeDefault
person_idstring (UUID)
task_idstring (UUID)
entity_idstring (UUID)
task_type_idstring (UUID)

Chat ​

Chat ​

FieldTypeDefault
object_idstring (UUID)
object_typestring"entity"
last_messagestring (datetime)
participantslist of person IDs

ChatMessage ​

FieldTypeDefault
chat_idstring (UUID)
person_idstring (UUID)
textstring
attachment_fileslist of attachment file dicts

Metadata ​

MetadataDescriptor ​

FieldTypeDefault
project_idstring (UUID)
entity_typestring
task_type_idstring (UUID)None, set only when entity_type is "Task"
namestring
data_typestring ("string", "number", "list", "taglist", "boolean", "checklist", "date", "url", "textarea", "person")
field_namestring
choiceslist of strings
for_clientboolfalse
positionint
departmentslist of department IDs

Valid entity_type values are "Asset", "Shot", "Edit", "Episode", "Sequence", "Project" and "Task". A "Task" descriptor is scoped to one task type of the project through task_type_id (required at creation) and its values are stored in the data dict of the matching tasks.

Schedule and budget ​

ScheduleItem ​

FieldTypeDefault
start_datestring (date)
end_datestring (date)
man_daysint
project_idstring (UUID)
task_type_idstring (UUID)
object_idstring (UUID)

Milestone ​

FieldTypeDefault
datestring (date)
namestring
project_idstring (UUID)
task_type_idstring (UUID)
department_idstring (UUID)
colorstring (hex, #RRGGBB)
milestone_typestring (kickoff, review, approval, delivery, other)"other"

DayOff ​

FieldTypeDefault
datestring (date)
end_datestring (date)
descriptionstring
person_idstring (UUID)

Budget ​

FieldTypeDefault
project_idstring (UUID)
revisionint1
namestring
currencystring

BudgetEntry ​

FieldTypeDefault
budget_idstring (UUID)
department_idstring (UUID)
person_idstring (UUID)
start_datestring (date)
months_durationint
daily_salaryfloat
positionstring ("supervisor", "lead", "artist")"artist"
senioritystring ("senior", "mid", "junior")"mid"
exceptionsdict

SalaryScale ​

FieldTypeDefault
department_idstring (UUID)
positionstring ("supervisor", "lead", "artist")"artist"
senioritystring ("senior", "mid", "junior")"mid"
salaryint0

ProductionScheduleVersion ​

FieldTypeDefault
namestring
project_idstring (UUID)
production_schedule_fromstring (UUID)
lockedboolfalse
canceledboolfalse

Software ​

FieldTypeDefault
namestring
short_namestring
archivedboolfalse
versionstring
file_extensionstring
secondary_extensionslist of strings
monthly_costint0
inventory_amountint0

HardwareItem ​

FieldTypeDefault
namestring
short_namestring
archivedboolfalse
monthly_costint0
inventory_amountint0

Custom action ​

CustomAction ​

FieldTypeDefault
namestring
urlstring
entity_typestring"all"
is_ajaxboolfalse

SearchFilter ​

FieldTypeDefault
list_typestring
entity_typestring
namestring""
search_querystring""
is_sharedboolfalse
department_idstring (UUID)
search_filter_group_idstring (UUID)
person_idstring (UUID)
project_idstring (UUID)

SearchFilterGroup ​

FieldTypeDefault
list_typestring
entity_typestring
namestring""
colorstring""
is_sharedboolfalse
person_idstring (UUID)
project_idstring (UUID)
department_idstring (UUID)

System ​

ApiEvent ​

FieldTypeDefault
namestring
user_idstring (UUID)
project_idstring (UUID)
datadict

LoginLog ​

FieldTypeDefault
person_idstring (UUID)
ip_addressstring
originstring ("web", "script")

DesktopLoginLog ​

FieldTypeDefault
person_idstring (UUID)
datestring (datetime)

Plugin ​

FieldTypeDefault
plugin_idstring
namestring
descriptionstring
versionstring
maintainer_namestring
maintainer_emailstring
websitestring
licensestring
revisionstring
frontend_project_enabledboolfalse
frontend_studio_enabledboolfalse
iconstring