Kitsu API
0.20.48

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.48

The Kitsu API allows to store and manage the data of your animation/VFX production. Through it you can link all the tools of your pipeline and make sure they are all synchronized.

An easy to use Python client to access this API is available: Python Kitsu Client documentation

Authentication

Before you can use any of the endpoints outline below, you will have to get a JWT token to authorize your requests.

You will find the information to retrieve it in the Zou documentation.

OpenAPI definition

This is version 0.20.48 of this API documentation. Last update on May 27, 2025.

This API is provided under license AGPL 3.0.



















Allow the user to change his password.

POST /auth/change-password

Prior to modifying the password, it requires to give the current password (to make sure the user changing the password is not someone who stealed the session). The new password requires a confirmation to ensure that the user didn't make a mistake by typing his new password.

Responses

  • Password changed

  • Invalid password or inactive user

POST /auth/change-password
curl \
 --request POST 'http://api.example.com/auth/change-password' \
 --header "Authorization: $API_KEY"
















































Responses

  • FIDO device pre-registered.

  • Invalid password Wrong or expired token Inactive user

PUT /auth/fido
curl \
 --request PUT 'http://api.example.com/auth/fido' \
 --header "Authorization: $API_KEY"
















































Responses

  • All tasks related to given asset

GET /data/assets/{asset_id}/tasks
curl \
 --request GET 'http://api.example.com/data/assets/{asset_id}/tasks' \
 --header "Authorization: $API_KEY"




































































Retrieve all shared assets used in project episode.

GET /data/projects/{project_id}/episodes/{episode_id}/assets/shared-used

Responses

  • All shared assets used in project episode

GET /data/projects/{project_id}/episodes/{episode_id}/assets/shared-used
curl \
 --request GET 'http://api.example.com/data/projects/{project_id}/episodes/{episode_id}/assets/shared-used' \
 --header "Authorization: $API_KEY"


































































Reply to given comment.

POST /data/tasks/{task_id}/comments/{comment_id}/reply

Add comment to its replies list.

Path parameters

Responses

  • Reply to given comment

POST /data/tasks/{task_id}/comments/{comment_id}/reply
curl \
 --request POST 'http://api.example.com/data/tasks/{task_id}/comments/{comment_id}/reply' \
 --header "Authorization: $API_KEY"





















































Update a model with data given in the request body.

PUT /data/persons/{instance_id}

JSON format is expected. Model performs the validation automatically when fields are modified.

Responses

PUT /data/persons/{instance_id}
curl \
 --request PUT 'http://api.example.com/data/persons/{instance_id}' \
 --header "Authorization: $API_KEY"
































































































Retrieve all entries for given model.

GET /data/task-status

Filters can be specified in the query string.

Responses

GET /data/task-status
curl \
 --request GET 'http://api.example.com/data/task-status' \
 --header "Authorization: $API_KEY"




















GET /data/tasks/{instance_id}
curl \
 --request GET 'http://api.example.com/data/tasks/{instance_id}' \
 --header "Authorization: $API_KEY"




























































































Responses

GET /data/output-files/{instance_id}
curl \
 --request GET 'http://api.example.com/data/output-files/{instance_id}' \
 --header "Authorization: $API_KEY"
















































Retrieve all entries for given model.

GET /data/working-files

Filters can be specified in the query string.

Responses

GET /data/working-files
curl \
 --request GET 'http://api.example.com/data/working-files' \
 --header "Authorization: $API_KEY"




































































Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

DELETE /data/time-spents/{instance_id}
curl \
 --request DELETE 'http://api.example.com/data/time-spents/{instance_id}' \
 --header "Authorization: $API_KEY"




















































































GET /data/playlists/{instance_id}
curl \
 --request GET 'http://api.example.com/data/playlists/{instance_id}' \
 --header "Authorization: $API_KEY"
























Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

DELETE /data/events/{instance_id}
curl \
 --request DELETE 'http://api.example.com/data/events/{instance_id}' \
 --header "Authorization: $API_KEY"




















Retrieve all entries for given model.

GET /data/search-filters/

Filters can be specified in the query string.

Responses

GET /data/search-filters/
curl \
 --request GET 'http://api.example.com/data/search-filters/' \
 --header "Authorization: $API_KEY"




































Retrieve all entries for given model.

GET /data/schedule-items/

Filters can be specified in the query string.

Responses

GET /data/schedule-items/
curl \
 --request GET 'http://api.example.com/data/schedule-items/' \
 --header "Authorization: $API_KEY"












































































Retrieve all entries for given model.

GET /data/subscriptions/

Filters can be specified in the query string.

Responses

GET /data/subscriptions/
curl \
 --request GET 'http://api.example.com/data/subscriptions/' \
 --header "Authorization: $API_KEY"




































































Update a model with data given in the request body.

PUT /data/chat-messages/{instance_id}

JSON format is expected. Model performs the validation automatically when fields are modified.

Responses

PUT /data/chat-messages/{instance_id}
curl \
 --request PUT 'http://api.example.com/data/chat-messages/{instance_id}' \
 --header "Authorization: $API_KEY"




























































Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

DELETE /data/salary-scales/{instance_id}
curl \
 --request DELETE 'http://api.example.com/data/salary-scales/{instance_id}' \
 --header "Authorization: $API_KEY"

























Retrieve all edit entries.

GET /data/edits/all

Filters can be specified in the query string.

Responses

GET /data/edits/all
curl \
 --request GET 'http://api.example.com/data/edits/all' \
 --header "Authorization: $API_KEY"




































Responses

  • All edits related to given project

GET /data/projects/{project_id}/edits
curl \
 --request GET 'http://api.example.com/data/projects/{project_id}/edits' \
 --header "Authorization: $API_KEY"

Create an edit for given project.

POST /data/projects/{project_id}/edits

Path parameters

Responses

  • Edit created for given project

POST /data/projects/{project_id}/edits
curl \
 --request POST 'http://api.example.com/data/projects/{project_id}/edits' \
 --header "Authorization: $API_KEY"





Responses

  • All preview files linked to given entity

GET /data/entities/{entity_id}/preview-files
curl \
 --request GET 'http://api.example.com/data/entities/{entity_id}/preview-files' \
 --header "Authorization: $API_KEY"






































Export as csv.

GET /export/csv/projects.csv

Responses

GET /export/csv/projects.csv
curl \
 --request GET 'http://api.example.com/export/csv/projects.csv' \
 --header "Authorization: $API_KEY"





















































Generate an output file path from file tree template

POST /data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-file-path

Generate file path based on several parameters: asset instance, output type, task type, revision, mode, name and separator. Revision can be computed automatically as next revision in case no revision is given in parameter.

Path parameters

Responses

  • Output file path generated

  • Malformed file tree

POST /data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-file-path
curl \
 --request POST 'http://api.example.com/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-file-path' \
 --header "Authorization: $API_KEY"
























GET /data/entities/{entity_id}/output-files
curl \
 --request GET 'http://api.example.com/data/entities/{entity_id}/output-files' \
 --header "Authorization: $API_KEY"




























Update working file modification date with current date.

PUT /actions/working-files/{working_file_id}/modified

Responses

  • Working file modification date updated

PUT /actions/working-files/{working_file_id}/modified
curl \
 --request PUT 'http://api.example.com/actions/working-files/{working_file_id}/modified' \
 --header "Authorization: $API_KEY"

























































































Import remove instance.

POST /import/shotgun/remove/asset

Responses

POST /import/shotgun/remove/asset
curl \
 --request POST 'http://api.example.com/import/shotgun/remove/asset' \
 --header "Authorization: $API_KEY"
































Import project shots via a .csv file.

POST /import/csv/projects/{project_id}/shots

Path parameters

Responses

  • The lists of imported assets.

  • The .csv file is not properly formatted.

POST /import/csv/projects/{project_id}/shots
curl \
 --request POST 'http://api.example.com/import/csv/projects/{project_id}/shots' \
 --header "Authorization: $API_KEY"



































































































































Get ended shots used for quota calculation of this week.

GET /data/persons/{person_id}/quota-shots/week/{year}/{week}

Responses

  • Ended shots used for quota calculation of this week

  • Wrong date format

GET /data/persons/{person_id}/quota-shots/week/{year}/{week}
curl \
 --request GET 'http://api.example.com/data/persons/{person_id}/quota-shots/week/{year}/{week}' \
 --header "Authorization: $API_KEY"





















































































Remove given build job related to given playlist.

DELETE /data/playlists/{playlist_id}/jobs/{build_job_id}

Responses

  • Given build job removed

DELETE /data/playlists/{playlist_id}/jobs/{build_job_id}
curl \
 --request DELETE 'http://api.example.com/data/playlists/{playlist_id}/jobs/{build_job_id}' \
 --header "Authorization: $API_KEY"




Build given playlist as mp4 movie.

GET /data/playlists/{playlist_id}/build/mp4

Responses

  • Given playlist built as mp4 movie

GET /data/playlists/{playlist_id}/build/mp4
curl \
 --request GET 'http://api.example.com/data/playlists/{playlist_id}/build/mp4' \
 --header "Authorization: $API_KEY"

























































Download a thumbnail.

GET /pictures/previews/preview-files/{instance_id}.png

Responses

  • Thumbnail downloaded

  • Instance not allowed

  • Picture file not found

GET /pictures/previews/preview-files/{instance_id}.png
curl \
 --request GET 'http://api.example.com/pictures/previews/preview-files/{instance_id}.png' \
 --header "Authorization: $API_KEY"












Download the thumbnail linked to given object instance.

GET /pictures/thumbnails/organisations/{instance_id}.png

Responses

  • Thumbnail downloaded

  • Access not allowed

  • Object instance not found

GET /pictures/thumbnails/organisations/{instance_id}.png
curl \
 --request GET 'http://api.example.com/pictures/thumbnails/organisations/{instance_id}.png' \
 --header "Authorization: $API_KEY"

Create a thumbnail for given object instance.

POST /pictures/thumbnails/organisations/{instance_id}.png

Path parameters

Responses

  • Thumbnail created

  • Cannot found related object.

POST /pictures/thumbnails/organisations/{instance_id}.png
curl \
 --request POST 'http://api.example.com/pictures/thumbnails/organisations/{instance_id}.png' \
 --header "Authorization: $API_KEY"








































Download a preview background file.

GET /pictures/preview-background-files/{instance_id}.{extension}

Responses

  • Preview background file downloaded

  • Preview background file not found

GET /pictures/preview-background-files/{instance_id}.{extension}
curl \
 --request GET 'http://api.example.com/pictures/preview-background-files/{instance_id}.{extension}' \
 --header "Authorization: $API_KEY"

















Return the list of projects currently running.

GET /data/projects/open

Most of the time, past projects are not needed.

Responses

  • All running projects

GET /data/projects/open
curl \
 --request GET 'http://api.example.com/data/projects/open' \
 --header "Authorization: $API_KEY"




























































Remove a preview background file from a production.

DELETE /data/projects/{project_id}/settings/preview-background-files/{preview_background_file_id}

Responses

DELETE /data/projects/{project_id}/settings/preview-background-files/{preview_background_file_id}
curl \
 --request DELETE 'http://api.example.com/data/projects/{project_id}/settings/preview-background-files/{preview_background_file_id}' \
 --header "Authorization: $API_KEY"






































































































GET /data/shots
curl \
 --request GET 'http://api.example.com/data/shots' \
 --header "Authorization: $API_KEY"




































































































Responses

  • All tasks related to given episode

GET /data/episodes/{episode_id}/tasks
curl \
 --request GET 'http://api.example.com/data/episodes/{episode_id}/tasks' \
 --header "Authorization: $API_KEY"












































Responses

  • All task types related to given sequence

GET /data/sequences/{sequence_id}/shot-tasks
curl \
 --request GET 'http://api.example.com/data/sequences/{sequence_id}/shot-tasks' \
 --header "Authorization: $API_KEY"

































































































Retrieve all comments to tasks related to given project.

GET /data/projects/{project_id}/comments

It's mainly used for synchronisation purpose.

Responses

  • All comments to tasks related to given project

GET /data/projects/{project_id}/comments
curl \
 --request GET 'http://api.example.com/data/projects/{project_id}/comments' \
 --header "Authorization: $API_KEY"









































































































Responses

  • Tasks related to given asset for current user

GET /data/user/assets/{asset_id}/tasks
curl \
 --request GET 'http://api.example.com/data/user/assets/{asset_id}/tasks' \
 --header "Authorization: $API_KEY"




GET /data/user/scenes/{scene_id}/tasks
curl \
 --request GET 'http://api.example.com/data/user/scenes/{scene_id}/tasks' \
 --header "Authorization: $API_KEY"
















































































































GET /data/user/notifications
curl \
 --request GET 'http://api.example.com/data/user/notifications' \
 --header "Authorization: $API_KEY"




























Remove the subscription entry matching given task and current user.

DELETE /actions/user/tasks/{task_id}/unsubscribe

The user will no longer receive notifications for this task.

Responses

  • Subscription entry removed

DELETE /actions/user/tasks/{task_id}/unsubscribe
curl \
 --request DELETE 'http://api.example.com/actions/user/tasks/{task_id}/unsubscribe' \
 --header "Authorization: $API_KEY"














































Resource to retrieve the entities linked on a given entity.

GET /data/entities/{entity_id}/entities-linked/with-tasks

Responses

  • Entities linked on given entity

GET /data/entities/{entity_id}/entities-linked/with-tasks
curl \
 --request GET 'http://api.example.com/data/entities/{entity_id}/entities-linked/with-tasks' \
 --header "Authorization: $API_KEY"



































Retrieve all previews related to a given concept.

GET /data/concepts/{concept_id}/preview-files

It sends them as a dict. Keys are related task type ids and values are arrays of preview for this task type.

Responses

  • All previews related to given episode

GET /data/concepts/{concept_id}/preview-files
curl \
 --request GET 'http://api.example.com/data/concepts/{concept_id}/preview-files' \
 --header "Authorization: $API_KEY"