Kitsu API
0.20.52

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.52

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

This API is provided under license AGPL 3.0.































Tokens are considered as outdated every two weeks.

GET /auth/refresh-token

This route allows to make their lifetime long before they get outdated.

Responses

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




















































Responses

  • Redirect to the SAML IDP.

  • Wrong parameter.

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

























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








Responses

  • All task types of tasks 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"




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
























Create new asset with given parameters.

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"
















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


















































































Delete attachment linked to a comment matching given ID.

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

Responses

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

Delete given comment reply.

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

Responses

  • Given comment reply deleted

DELETE /data/tasks/{task_id}/comments/{comment_id}/reply/{reply_id}
curl \
 --request DELETE 'http://api.example.com/data/tasks/{task_id}/comments/{comment_id}/reply/{reply_id}' \
 --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/entities

Filters can be specified in the query string.

Responses

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












Retrieve all entries for given model.

GET /data/task-types

Filters can be specified in the query string.

Responses

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

Create a model with data given in the request body.

POST /data/task-types

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

Responses

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




























































































































































Update a model with data given in the request body.

PUT /data/output-types/{instance_id}

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

Responses

PUT /data/output-types/{instance_id}
curl \
 --request PUT 'http://api.example.com/data/output-types/{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/attachment-files

Filters can be specified in the query string.

Responses

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




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








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




































































































































































































































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
















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








































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
































Create a model with data given in the request body.

POST /data/chat-messages/

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

Responses

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




















































Create a model with data given in the request body.

POST /data/salary-scales

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

Responses

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





































Retrieve all edit entries.

GET /data/edits/all

Filters can be specified in the query string.

Responses

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













































Responses

  • All news linked to given entity

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

Responses

  • All preview files linked to given entity

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























































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








Responses

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

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












Get last revisions of output files for given instance grouped by output type and file name.

GET /data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-files/last-revisions

Responses

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

GET /data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-files/last-revisions
curl \
 --request GET 'http://api.example.com/data/asset-instances/{asset_instance_id}/entities/{temporal_entity_id}/output-files/last-revisions' \
 --header "Authorization: $API_KEY"
































Get all output files for given entity and given output type.

GET /data/entities/{entity_id}/output-types/{output_type_id}/output-files

Responses

  • All output files for given entity and given output type

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
































































































Delete error.

DELETE /import/shotgun/errors/{error_id}

Responses

  • Error deleted

  • Error non-existant or Statement error

DELETE /import/shotgun/errors/{error_id}
curl \
 --request DELETE 'http://api.example.com/import/shotgun/errors/{error_id}' \
 --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"




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
















Create a thumbnail for given object instance.

POST /pictures/thumbnails/organisations/{instance_id}.png

Path parameters

Responses

  • Thumbnail created

  • Cannot found related object.

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
































Download the thumbnail linked to given object instance.

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

Responses

  • Thumbnail downloaded

  • Access not allowed

  • Object instance not found

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





































































































































Retrieve asset types schedule items for given task type

GET /data/projects/{project_id}/schedule-items/{task_type_id}/asset-types

Responses

  • All asset types schedule items for given task type

GET /data/projects/{project_id}/schedule-items/{task_type_id}/asset-types
curl \
 --request GET 'http://api.example.com/data/projects/{project_id}/schedule-items/{task_type_id}/asset-types' \
 --header "Authorization: $API_KEY"




























Delete a budget for given production

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

Responses

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












Delete a budget entry for given production and budget.

DELETE /data/projects/{project_id}/budgets/{budget_id}/entries/{entry_id}

Responses

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














































Retrieve all previews related to a given shot.

GET /data/shots/{shot_id}/preview-files

It sends them as a dict. Keys are related task type ids and values are arrays of preview for this task type.

Responses

  • All previews related to given episode

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




























































Retrieve all sequence entries for a given episode.

GET /data/episodes/{episode_id}/sequences

Filters can be specified in the query string.

Responses

  • All sequence entries for given episode

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













































































































































































































































Create a new task for given edit and task type.

POST /actions/projects/{project_id}/task-types/{task_type_id}/edits/create-tasks

Path parameters

Responses

  • New task for given edit and task type created

POST /actions/projects/{project_id}/task-types/{task_type_id}/edits/create-tasks
curl \
 --request POST 'http://api.example.com/actions/projects/{project_id}/task-types/{task_type_id}/edits/create-tasks' \
 --header "Authorization: $API_KEY"




















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
































Return assets of which type is given asset type and are listed in given

GET /data/user/projects/{project_id}/asset-types/{asset_type_id}/assets

project if user has access to this project.

Responses

  • Assets of which type is given asset type and are listed in given project

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

Responses

  • Sequences related to given project

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




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








Return tasks requiring feedback for current user departments.

GET /data/user/tasks-to-check


If the user is not a supervisor, it returns an empty list.

Responses

  • Tasks requiring feedback in current user departments.

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

Responses

  • Finished tasks currently assigned to current user

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




















































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









































































Delete chat message.

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

Path parameters

Responses

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