Kitsu API
0.20.65

Base URL
http://api.example.com

Welcome to the Kitsu API specification

Version: 0.20.65

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

This API is provided under license AGPL 3.0.















Allow a user to register himself to the service.

POST /auth/register

Responses

  • 201

    Registration successful

  • 400

    Invalid password or email

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




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

PUT /auth/reset-password

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

Responses

  • 200

    Password reset

  • 400

    Invalid password Wrong or expired token Inactive user

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
































Resource to allow a user to disable OTP by email.

DELETE /auth/email-otp

Responses

  • 200

    OTP by email disabled.

  • 400

    Invalid password. Wrong or expired token. Inactive user. Wrong 2FA.

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





















































































Retrieve all scene asset instances linked to given asset.

GET /data/assets/{asset_id}/scene-asset-instances

Path parameters

  • asset_id Required

Responses

  • 200

    All scene asset instances linked to given asset

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





































































































Add an asset instance to given shot.

POST /data/shots/{shot_id}/asset-instances

Path parameters

  • shot_id Required

Responses

  • 201

    Asset instance added to given shot

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













Delete attachment linked to a comment matching given ID.

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

Path parameters

  • task_id Required
  • comment_id Required
  • attachment_id Required

Responses

  • 204

    Empty response

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"








Add given files to the comment entry as attachments.

POST /actions/tasks/{task_id}/comments/{comment_id}/add-attachment

Path parameters

  • task_id Required
  • comment_id Required

Responses

  • 201

    Given files added to the comment entry as attachments

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

Return all attachment files related to given project.

GET /data/projects/{project_id}/attachment-files

Path parameters

  • project_id Required

Responses

  • 200

    All attachment files related to given project

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

  • 200

    Model created

  • 400

    Error

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

  • 200

    Model created

  • 400

    Error

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








Delete a model corresponding at given ID and return it as a JSON object.

DELETE /data/task-types/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 204

    Model deleted

  • 400

    Statement or integrity error

  • 404

    Instance non-existant

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




























































Retrieve a model corresponding at given ID and return it as a JSON object.

GET /data/organisations/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 200

    Model as a JSON object

  • 400

    Statement error

  • 404

    Value error

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
































Create a model with data given in the request body.

POST /data/softwares

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

Responses

  • 200

    Model created

  • 400

    Error

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

Path parameters

  • instance_id Required

Responses

  • 200

    Model updated

  • 400

    Error

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




















Delete a model corresponding at given ID and return it as a JSON object.

DELETE /data/output-types/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 204

    Model deleted

  • 400

    Statement or integrity error

  • 404

    Instance non-existant

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

  • 200

    All entries for given model

  • 400

    Format error

  • 403

    Permission denied

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
















































































Retrieve a model corresponding at given ID and return it as a JSON object.

GET /data/day-offs/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 200

    Model as a JSON object

  • 400

    Statement error

  • 404

    Value error

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

  • 200

    Model created

  • 400

    Error

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
























Update a model with data given in the request body.

PUT /data/status-automations/{instance_id}

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

Path parameters

  • instance_id Required

Responses

  • 200

    Model updated

  • 400

    Error

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




















































Update a model with data given in the request body.

PUT /data/events/{instance_id}

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

Path parameters

  • instance_id Required

Responses

  • 200

    Model updated

  • 400

    Error

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




































Update a model with data given in the request body.

PUT /data/search-filters/{instance_id}

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

Path parameters

  • instance_id Required

Responses

  • 200

    Model updated

  • 400

    Error

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




































Update a model with data given in the request body.

PUT /data/schedule-items/{instance_id}

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

Path parameters

  • instance_id Required

Responses

  • 200

    Model updated

  • 400

    Error

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




























































Delete a model corresponding at given ID and return it as a JSON object.

DELETE /data/metadata-descriptors/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 204

    Model deleted

  • 400

    Statement or integrity error

  • 404

    Instance non-existant

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




















Retrieve all entries for given model.

GET /data/entity-links/

Filters can be specified in the query string.

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
































Delete a model corresponding at given ID and return it as a JSON object.

DELETE /data/chats/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 204

    Model deleted

  • 400

    Statement or integrity error

  • 404

    Instance non-existant

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

  • 200

    Model created

  • 400

    Error

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




Update a model with data given in the request body.

PUT /data/studios/{instance_id}

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

Path parameters

  • instance_id Required

Responses

  • 200

    Model updated

  • 400

    Error

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
























Retrieve a model corresponding at given ID and return it as a JSON object.

GET /data/plugins/{instance_id}

Path parameters

  • instance_id Required

Responses

  • 200

    Model as a JSON object

  • 400

    Statement error

  • 404

    Value error

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





























































































































































































Generate a working file path from file tree template.

POST /data/tasks/{task_id}/working-file-path

Generate file path based on several parameters: task, software, mode, revision and separator. Revision can be computed automatically as next revision if not given.

Path parameters

  • task_id Required

Responses

  • 200

    Working file path generated

  • 400

    Malformed file tree

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




































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

GET /data/entities/{entity_id}/output-files/last-revisions

Path parameters

  • entity_id Required

Responses

  • 200

    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"

































































Import shotgun resource.

POST /import/shotgun/scenes

Responses

  • 200

    Resource imported

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




























Serialize shotgun error resource.

POST /import/shotgun/errors

Responses

  • 200

    Resource serialized

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

Import shotgun resource.

POST /import/shotgun/projectconnections

Responses

  • 200

    Resource imported

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























































































































































































































































Add a user to given department.

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

Path parameters

  • person_id Required

Responses

  • 201

    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"














































































































Download a thumbnail.

GET /movies/tiles/preview-files/{instance_id}.png

Path parameters

  • instance_id Required

Responses

  • 200

    Thumbnail downloaded

  • 403

    Instance not allowed

  • 404

    Picture file not found

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
























































Download a preview background file.

GET /pictures/preview-background-files/{instance_id}.{extension}

Path parameters

  • instance_id Required
  • extension Required

Responses

  • 200

    Preview background file downloaded

  • 404

    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"