Kitsu API
0.20.40

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.40

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.40 of this API documentation. Last update on Apr 29, 2025.

This API is provided under license AGPL 3.0.







Log user out by revoking his auth tokens.

GET /auth/logout

Once logged out, current user cannot access the API anymore.

Responses

  • Logout successful

  • Access token not found

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
































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













































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
































Responses

  • All task types related to given asset

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




















































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




Retrieve all shared assets used in project.

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

Responses

  • All shared assets used in project

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













































Create an asset instance on given scene.

POST /data/scenes/{scene_id}/asset-instances

Path parameters

Responses

  • Asset instances created on given scene

POST /data/scenes/{scene_id}/asset-instances
curl \
 --request POST 'http://api.example.com/data/scenes/{scene_id}/asset-instances' \
 --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"




















Responses

  • All attachment files related to given task

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

































Retrieve all entries for given model.

GET /data/projects

Filters can be specified in the query string.

Responses

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








Update a model with data given in the request body.

PUT /data/projects/{instance_id}

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

Responses

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




























Create a model with data given in the request body.

POST /data/entity-types

JSON format is expected. The model performs the validation automatically when instantiated.

Responses

POST /data/entity-types
curl \
 --request POST 'http://api.example.com/data/entity-types' \
 --header "Authorization: $API_KEY"








Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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












































































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




















Update a model with data given in the request body.

PUT /data/organisations/{instance_id}

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

Responses

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








































Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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












































































Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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












































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








Retrieve all entries for given model.

GET /data/day-offs/

Filters can be specified in the query string.

Responses

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












Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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
















Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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




































Retrieve all entries for given model.

GET /data/playlists/

Filters can be specified in the query string.

Responses

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








































































































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




















































































































































Retrieve all entries for given model.

GET /data/preview-background-files

Filters can be specified in the query string.

Responses

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




Responses

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
































































Create a model with data given in the request body.

POST /data/plugins

JSON format is expected. The model performs the validation automatically when instantiated.

Responses

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









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




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

Responses

  • All task types related to given edit

GET /data/edits/{edit_id}/task-types
curl \
 --request GET 'http://api.example.com/data/edits/{edit_id}/task-types' \
 --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"

Export as csv.

GET /export/csv/tasks.csv

Responses

GET /export/csv/tasks.csv
curl \
 --request GET 'http://api.example.com/export/csv/tasks.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"
















Responses

  • All types of output generated for given entity

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




















Download a working file.

GET /data/working-files/{working_file_id}/file

Responses

  • Working file downloaded

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

Store a working file.

POST /data/working-files/{working_file_id}/file

Path parameters

Responses

  • Working file stored

POST /data/working-files/{working_file_id}/file
curl \
 --request POST 'http://api.example.com/data/working-files/{working_file_id}/file' \
 --header "Authorization: $API_KEY"

















Responses

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












Responses

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
















Responses

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

Responses

POST /import/shotgun/notes
curl \
 --request POST 'http://api.example.com/import/shotgun/notes' \
 --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 remove instance.

POST /import/shotgun/remove/step

Responses

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
































Import project casting links via a .csv file.

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

Path parameters

Responses

  • The lists of imported casting links.

  • The .csv file is not properly formatted.

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





























































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


































Get day off object for given person and date.

GET /data/persons/{person_id}/day-offs/{date}

Responses

  • Day off object for given person and date

  • Wrong date format

GET /data/persons/{person_id}/day-offs/{date}
curl \
 --request GET 'http://api.example.com/data/persons/{person_id}/day-offs/{date}' \
 --header "Authorization: $API_KEY"








































Responses

  • Table giving time spent by user and by day for given year and month

GET /data/persons/time-spents/day-table/{year}/{month}
curl \
 --request GET 'http://api.example.com/data/persons/time-spents/day-table/{year}/{month}' \
 --header "Authorization: $API_KEY"




Return all day off recorded for given week and person.

GET /data/persons/{person_id}/day-offs/week/{year}/{week}

Responses

  • All day off recorded for given week and person

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








Responses

  • All day off recorded for given person.

GET /data/persons/{person_id}/day-offs
curl \
 --request GET 'http://api.example.com/data/persons/{person_id}/day-offs' \
 --header "Authorization: $API_KEY"








Remove a user from given department.

DELETE /actions/persons/{person_id}/departments/{department_id}

Responses

  • User removed from given department

DELETE /actions/persons/{person_id}/departments/{department_id}
curl \
 --request DELETE 'http://api.example.com/actions/persons/{person_id}/departments/{department_id}' \
 --header "Authorization: $API_KEY"





























































Main resource to add a preview.

POST /pictures/preview-files/{instance_id}

It stores the preview file and generates three picture files matching preview when it's possible: a square thumbnail, a rectangle thumbnail and a midsize file.

Path parameters

Responses

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












Download a thumbnail.

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

Responses

  • Thumbnail downloaded

  • Instance not allowed

  • Picture file not found

GET /pictures/thumbnails/preview-files/{instance_id}.png
curl \
 --request GET 'http://api.example.com/pictures/thumbnails/preview-files/{instance_id}.png' \
 --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 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"





































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
























Remove a task status from a production.

DELETE /data/projects/{project_id}/settings/task-status/{task_status_id}

Responses

DELETE /data/projects/{project_id}/settings/task-status/{task_status_id}
curl \
 --request DELETE 'http://api.example.com/data/projects/{project_id}/settings/task-status/{task_status_id}' \
 --header "Authorization: $API_KEY"








Remove a status automation from a production.

DELETE /data/projects/{project_id}/settings/status-automations/{status_automation_id}

Responses

DELETE /data/projects/{project_id}/settings/status-automations/{status_automation_id}
curl \
 --request DELETE 'http://api.example.com/data/projects/{project_id}/settings/status-automations/{status_automation_id}' \
 --header "Authorization: $API_KEY"












Get all metadata descriptors

GET /data/projects/{project_id}/metadata-descriptors

It serves to describe extra fields listed in the data attribute of entities.

Responses

  • All metadata descriptors

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




Get a metadata descriptor.

GET /data/projects/{project_id}/metadata-descriptors/{descriptor_id}

Descriptors serve to describe extra fields listed in the data attribute of entities.

Responses

  • Metadata descriptor

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








Retrieve milestones for given production

GET /data/projects/{project_id}/milestones

Responses

  • All milestones of given production

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





























































Responses

  • List of entities that contain the query

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

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




































Retrieve data versions of given shot.

GET /data/shots/{shot_id}/versions

Responses

  • Data versions of given shot

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