Kitsu API
0.20.55

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.55

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.55 of this API documentation. Last update on Jun 17, 2025.

This API is provided under license AGPL 3.0.








































































































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




































































Responses

  • All assets for given project

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





















































Delete given entity link.

DELETE /data/projects/{project_id}/entity-links/{entity_link_id}

It's mainly used for synchronisation purpose.

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

Responses

  • All asset instances linked to given scene

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


























































































































Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

DELETE /data/project-status/{instance_id}
curl \
 --request DELETE 'http://api.example.com/data/project-status/{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/attachment-files/{instance_id}
curl \
 --request DELETE 'http://api.example.com/data/attachment-files/{instance_id}' \
 --header "Authorization: $API_KEY"




















Create a model with data given in the request body.

POST /data/time-spents/

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

Responses

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




Update a model with data given in the request body.

PUT /data/time-spents/{instance_id}

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

Responses

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




























Create a model with data given in the request body.

POST /data/custom-actions/

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

Responses

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
































































Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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
















































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
































































































GET /data/metadata-descriptors/{instance_id}
curl \
 --request GET 'http://api.example.com/data/metadata-descriptors/{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"




































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




















Retrieve all entries for given model.

GET /data/plugins

Filters can be specified in the query string.

Responses

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









































Responses

  • All efits related to given episode

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





























































Path parameters

Responses

  • Next revision for given entity, output type, task type and name

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

Responses

  • Last revisions of output files for given entity grouped by output type and file name

GET /data/entities/{entity_id}/output-files/last-revisions
curl \
 --request GET 'http://api.example.com/data/entities/{entity_id}/output-files/last-revisions' \
 --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/shots
curl \
 --request POST 'http://api.example.com/import/shotgun/shots' \
 --header "Authorization: $API_KEY"








Responses

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

Responses

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




































Import project assets via a .csv file.

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

Path parameters

Responses

  • The lists of imported assets.

  • The .csv file is not properly formatted.

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

























































Responses

  • Status of database, key value, event stream, job queue and time

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
















Responses

  • Configuration object including self-hosted status, Crisp token, indexer configuration, SAML status, and dark theme status.

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









Responses

  • Single given news related to given project

GET /data/projects/{project_id}/news/{news_id}
curl \
 --request GET 'http://api.example.com/data/projects/{project_id}/news/{news_id}' \
 --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"




Add a user to given department.

POST /actions/persons/{person_id}/departments/add

Path parameters

Responses

  • User added to given department

POST /actions/persons/{person_id}/departments/add
curl \
 --request POST 'http://api.example.com/actions/persons/{person_id}/departments/add' \
 --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"

























































































































































Add a task type linked to a production.

POST /data/projects/{project_id}/settings/task-types

Path parameters

Responses

  • Asset type added to production

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

Remove a task type from a production.

DELETE /data/projects/{project_id}/settings/task-types/{task_type_id}

Responses

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
















Add a status automation linked to a production.

POST /data/projects/{project_id}/settings/status-automations

Path parameters

Responses

  • Status automation added to production

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
































Delete a metadata descriptor.

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

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

Responses

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


































































































































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




























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

















































































































Get comment corresponding at given ID.

GET /data/tasks/{task_id}/comments/{comment_id}

Responses

  • Comment corresponding at given ID

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





































































































































































Return tasks related to given sequence for current user.

GET /data/user/sequences/{sequence_id}/task-types

Responses

  • Tasks related to given sequence for current user

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