Kitsu API
0.20.42

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.42

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.42 of this API documentation. Last update on May 16, 2025.

This API is provided under license AGPL 3.0.
































































































































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"




























































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"


















































































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"








































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/departments/{instance_id}

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

Responses

PUT /data/departments/{instance_id}
curl \
 --request PUT '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"








































































































































































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"




























































































































































































































































































































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"





















































































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





































































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 shotgun resource.

POST /import/shotgun/projectconnections

Responses

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








































Import remove instance.

POST /import/shotgun/remove/status

Responses

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
































Import the estimations of task-types for given project.

POST /import/csv/projects/{project_id}/task-types/{task_type_id}/estimations

Path parameters

Responses

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



































































































Get aggregated time spents for given person and year.

GET /data/persons/{person_id}/time-spents/year/{year}

Responses

  • Aggregated time spents for given person and year

  • Wrong date format

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
















































Return all day off recorded for given month and person.

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

Responses

  • All day off recorded for given month and person

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








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








Allow admin to change password for given user.

POST /actions/persons/{person_id}/change-password

Prior to modifying the password, it requires to be admin. An admin can't change other admins password. The new password requires a confirmation to ensure that the admin didn't make a mistake by typing the new password.

Path parameters

Responses

  • Password changed

  • Invalid password or inactive user

POST /actions/persons/{person_id}/change-password
curl \
 --request POST 'http://api.example.com/actions/persons/{person_id}/change-password' \
 --header "Authorization: $API_KEY"






















































Responses

  • All preview files from open productions with states equals to processing or broken

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




















Download the thumbnail representing given attachment file.

GET /pictures/thumbnails/attachment-files/{attachment_file_id}.png

Responses

  • Thumbnail downloaded

  • Instance not allowed

  • Picture file not found

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
























































Responses

  • Thumbnail downloaded

  • Access not allowed

  • Object instance not found

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





















































Add a person to a production team.

POST /data/projects/{project_id}/team

Path parameters

Responses

  • Person added to the production team

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




















































































































Retrieve a budget for given production

GET /data/projects/{project_id}/budgets/{budget_id}

Responses

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

Update a budget name for given production

PUT /data/projects/{project_id}/budgets/{budget_id}

Responses

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


























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
















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








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
























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









































































































































































Return a task with many information.

GET /data/tasks/{task_id}/full

Full details for assignees, full details for task type, full details for task status, etc.

Responses

  • Task with many information

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




















































































Add a preview to given comment.

POST /actions/tasks/{task_id}/comments/{comment_id}/preview-files/{preview_file_id}

Path parameters

Responses

  • Preview added to given comment

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

















































































































Responses

  • Filter for current user and only for open projects created

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





















































































































Get chat message.

GET /data/entities/{entity_id}/chat/messages/{chat_message_id}

Path parameters

Responses

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