Kitsu API
0.20.39

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.39

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

This API is provided under license AGPL 3.0.



























Resource to allow a user to change his password when he forgets it.

POST /auth/reset-password

It uses a classic scheme: a token is sent by email to the user. Then he can change his password.

Responses

  • Reset token sent

  • Email not listed in database

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












































Responses

  • FIDO device registered.

  • Invalid password Wrong or expired token Inactive user

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





















































































Create new asset resource.

POST /data/projects/{project_id}/asset-types/{asset_type_id}/assets/new

Path parameters

Responses

  • New asset resource created

POST /data/projects/{project_id}/asset-types/{asset_type_id}/assets/new
curl \
 --request POST 'http://api.example.com/data/projects/{project_id}/asset-types/{asset_type_id}/assets/new' \
 --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"









































Retrieve all entries for given model.

GET /data/persons

Filters can be specified in the query string.

Responses

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








































































Create a model with data given in the request body.

POST /data/file-status/

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

Responses

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












































Update a model with data given in the request body.

PUT /data/output-files/{instance_id}

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

Responses

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








































Delete a preview file corresponding at given ID and retuns

DELETE /data/preview-files/{instance_id}

a 204 status code.

Responses

  • Model deleted

  • Statement or integrity error

  • Instance non-existant

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




















































































Update a model with data given in the request body.

PUT /data/day-offs/{instance_id}

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

Responses

PUT /data/day-offs/{instance_id}
curl \
 --request PUT '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/asset-instances/{instance_id}
curl \
 --request DELETE 'http://api.example.com/data/asset-instances/{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/news/

Filters can be specified in the query string.

Responses

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

Create a model with data given in the request body.

POST /data/news/

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

Responses

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




































Create a model with data given in the request body.

POST /data/metadata-descriptors/

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

Responses

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




Update a model with data given in the request body.

PUT /data/metadata-descriptors/{instance_id}

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

Responses

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












































































































Create a model with data given in the request body.

POST /data/studios

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

Responses

POST /data/studios
curl \
 --request POST 'http://api.example.com/data/studios' \
 --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"











































































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





























Responses

  • Last working files revision for each file name for given task

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

















































































































































































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"




























































































































































































































Download given playlist build as .mp4.

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

Responses

  • Given playlist build downloaded as .mp4

  • Build not finished, need to retry later

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

















































Download a generic file preview as attachment.

GET /pictures/originals/preview-files/{instance_id}/download

Responses

  • Generic file preview downloaded as attachment

  • Instance not allowed

  • Standard file not found

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




























































Allow to modify the annotations stored at the preview level.

PUT /actions/preview-files/{preview_file_id}/update-annotations

Modifications are applied via three fields:

  • annotations to give all the annotations that need to be added.

  • updates that list annotations that needs to be modified.

  • deletions to list the IDs of annotations that needs to be removed.

Responses

  • Orders of previews changed for a single revision

PUT /actions/preview-files/{preview_file_id}/update-annotations
curl \
 --request PUT 'http://api.example.com/actions/preview-files/{preview_file_id}/update-annotations' \
 --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"

Add an asset type linked to a production.

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

Path parameters

Responses

  • Asset type added to production

POST /data/projects/{project_id}/settings/asset-types
curl \
 --request POST 'http://api.example.com/data/projects/{project_id}/settings/asset-types' \
 --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"



























































































































































































































































Delete a comment corresponding at given ID.

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

Responses

  • Comment corresponding at given ID deleted

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












































For schedule usages, for each active person, it returns the first start

GET /data/persons/task-dates

date of all tasks of assigned to this person and the last end date.

Responses

  • For each person, the first start date of all tasks of assigned to this person and the last end date.

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