Kitsu API
0.20.65
http://api.example.com
Welcome to the Kitsu API specification
Version: 0.20.65
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.
This is version 0.20.65
of this API documentation. Last update on Aug 4, 2025.
This API is provided under license AGPL 3.0.
Authentication
Log in user by creating and registering auth tokens.
Login is based on email and password. If no user match given email and a destkop ID, it looks in matching the desktop ID with the one stored in database. It is useful for clients that run on desktop tools and that don't know user email.
curl \
--request POST 'http://api.example.com/auth/login' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/auth/authenticated' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/auth/register' \
--header "Authorization: $API_KEY"
Allow the user to change his 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.
curl \
--request POST 'http://api.example.com/auth/change-password' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/auth/reset-password' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/auth/reset-password' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/auth/refresh-token' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/auth/totp' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/auth/totp' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/auth/email-otp' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/auth/email-otp' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/auth/email-otp' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/auth/email-otp' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/auth/recovery-codes' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/auth/fido' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/auth/fido' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/auth/fido' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/auth/fido' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/auth/saml/sso' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/asset-types' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/asset-types/{asset_type_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/all' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/assets/{asset_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/assets' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/tasks' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/task-types' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/cast-in' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/casting' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/assets/{asset_id}/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/shot-asset-instances' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/scene-asset-instances' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/assets/{asset_id}/asset-asset-instances' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/asset-types/{asset_type_id}/assets' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/projects/{project_id}/asset-types/{asset_type_id}/assets/new' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/asset-types' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/shots/{shot_id}/asset-types' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/actions/assets/share' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/actions/projects/{project_id}/assets/share' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/assets/shared-used' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/entities/{entity_id}/casting' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/projects/{project_id}/entities/{entity_id}/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/asset-types/{asset_type_id}/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/episodes/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/sequences/{sequence_id}/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/episodes/{episode_id}/sequences/all/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/sequences/all/casting' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/entity-links' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/projects/{project_id}/entity-links/{entity_link_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/scenes/{scene_id}/asset-instances' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/scenes/{scene_id}/asset-instances' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/scenes/{scene_id}/camera-instances' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/shots/{shot_id}/asset-instances' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/shots/{shot_id}/asset-instances/{asset_instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/tasks/{task_id}/comments/{comment_id}/ack' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/tasks/{task_id}/comments/{comment_id}/reply' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/tasks/{task_id}/comments/{comment_id}/attachments/{attachment_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/tasks/{task_id}/comments/{comment_id}/reply/{reply_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/attachment-files/{attachment_file_id}/file/{file_name}' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/actions/tasks/{task_id}/comments/{comment_id}/add-attachment' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects/{project_id}/attachment-files' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/actions/tasks/{task_id}/comment' \
--header "Authorization: $API_KEY"
Create several comments at once.
Each comment requires a text, a task id, a task_status and a person as arguments. This way, comments keep history of status changes. When the comment is created, it updates the task status with given task status.
curl \
--request POST 'http://api.example.com/actions/projects/{project_id}/tasks/comment-many' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/actions/tasks/{task_id}/batch-comment' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/persons/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/projects' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/projects' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/projects/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/project-status' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/project-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/project-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/entity-types' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/entity-types' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/entity-types/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/entity-types/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/entities' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/entities' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/entities/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/entities/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/task-types' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/task-types' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/task-types/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/task-types/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/task-status' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/task-status' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/task-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/task-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/task-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/tasks/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/tasks/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/departments' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/departments/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/departments/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/departments/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/organisations' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/organisations' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/organisations/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/file-status/' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/file-status/' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/file-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/file-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/file-status/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/softwares' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/softwares/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/softwares/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/softwares/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/hardware-items' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/hardware-items' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/hardware-items/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/hardware-items/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/hardware-items/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/output-files' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/output-files' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/output-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/output-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/output-types' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/output-types' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/output-types/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/output-types/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/preview-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/preview-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/working-files' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/working-files' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/working-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/working-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/attachment-files' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/attachment-files' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/attachment-files/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/comments' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/comments' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/comments/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/comments/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/time-spents/' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/time-spents/' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/time-spents/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/time-spents/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/day-offs/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/day-offs/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request DELETE 'http://api.example.com/data/day-offs/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/custom-actions/' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/custom-actions/' \
--header "Authorization: $API_KEY"
curl \
--request PUT 'http://api.example.com/data/custom-actions/{instance_id}' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/status-automations/' \
--header "Authorization: $API_KEY"
curl \
--request POST 'http://api.example.com/data/status-automations/' \
--header "Authorization: $API_KEY"
curl \
--request GET 'http://api.example.com/data/status-automations/{instance_id}' \
--header "Authorization: $API_KEY"