Authentication
Enable email OTP
Enable email OTP (One-Time Password) authentication. It requires verification code sent to email.
curl \
--request POST 'http://api.example.com/auth/email-otp' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"email_otp":"string"}'
{
"email_otp": "string"
}
Pre-register FIDO device
Prepare FIDO device for registration. It returns registration options for WebAuthn.
curl \
--request PUT 'http://api.example.com/auth/fido' \
--header "Authorization: $API_KEY"
Get shared assets used in project
Retrieve all shared assets that are used in a specific project.
curl \
--request GET 'http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/assets/shared-used' \
--header "Authorization: $API_KEY"
[
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "Character Name",
"project_id": "b35b7fb5-df86-5776-b181-68564193d36",
"entity_type_id": "c46c8gc6-eg97-6887-c292-79675204e47",
"is_shared": true
}
]
Get scene asset instances
Retrieve all asset instances that are linked to a specific scene.
curl \
--request GET 'http://api.example.com/data/scenes/i02i4mi2-km53-2443-i958-35231870k03/asset-instances' \
--header "Authorization: $API_KEY"
[
{
"id": "j13j5nj3-ln64-3554-j069-46342981l14",
"asset_id": "c46c8gc6-eg97-6887-c292-79675204e47",
"scene_id": "i02i4mi2-km53-2443-i958-35231870k03",
"number": "001",
"description": "Main character instance"
}
]
Create entity type
Create a new entity type with data provided in the request body. JSON format is expected. Entity type names must be unique.
curl \
--request POST 'http://api.example.com/data/entity-types' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"name":"Character","color":"#FF5733"}'
{
"name": "Character",
"color": "#FF5733"
}
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "Character",
"color": "#FF5733",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
Delete department
Delete a department by its ID. Returns empty response on success.
curl \
--request DELETE 'http://api.example.com/data/departments/a24a6ea4-ce75-4665-a070-57453082c25' \
--header "Authorization: $API_KEY"
Get playlists
Retrieve all playlists. Supports filtering via query parameters and pagination.
curl \
--request GET 'http://api.example.com/data/playlists/' \
--header "Authorization: $API_KEY"
[
{}
]
{
"data": [
{}
],
"total": 100,
"nb_pages": 2,
"limit": 50,
"offset": 0,
"page": 1
}
Get news
Retrieve all news entries. Supports filtering via query parameters and pagination.
curl \
--request GET 'http://api.example.com/data/news/' \
--header "Authorization: $API_KEY"
[
{}
]
{
"data": [
{}
],
"total": 100,
"nb_pages": 2,
"limit": 50,
"offset": 0,
"page": 1
}
Get entity link
Retrieve an entity link by its ID and return it as a JSON object. Supports including relations.
curl \
--request GET 'http://api.example.com/data/entity-links/a24a6ea4-ce75-4665-a070-57453082c25' \
--header "Authorization: $API_KEY"
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"entity_in_id": "b24a6ea4-ce75-4665-a070-57453082c25",
"entity_out_id": "c24a6ea4-ce75-4665-a070-57453082c25",
"nb_occurences": 1,
"label": "fixed",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
Create model
Create a new model instance with data provided in the request body. JSON format is expected. The model performs validation automatically when instantiated.
curl \
--request POST 'http://api.example.com/data/salary-scales' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"name":"Model Name"}'
{
"name": "Model Name"
}
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "Model Name",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
Get edit versions
Retrieve all data versions of a specific edit. This includes historical versions and metadata about changes over time.
curl \
--request GET 'http://api.example.com/data/edits/a24a6ea4-ce75-4665-a070-57453082c25/versions' \
--header "Authorization: $API_KEY"
[
{
"id": "b35b7fb5-df86-5776-b181-68564193d36",
"edit_id": "a24a6ea4-ce75-4665-a070-57453082c25",
"version_number": 1,
"data": {
"fps": 24,
"changes": "Added transitions",
"duration": 120
},
"created_at": "2023-01-01T12:00:00Z",
"created_by": "c46c8gc6-eg97-6887-c292-79675204e47"
}
]
Get next instance output file revision
Get the next revision number for an output file based on asset instance, output type, task type, and name. Used for automatic revision numbering.
curl \
--request POST 'http://api.example.com/data/asset-instances/a24a6ea4-ce75-4665-a070-57453082c25/entities/b35b7fb5-df86-5776-b181-68564193d36/output-files/next-revision' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"name":"main","output_type_id":"a24a6ea4-ce75-4665-a070-57453082c25","task_type_id":"b35b7fb5-df86-5776-b181-68564193d36"}'
{
"name": "main",
"output_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
"task_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
}
{
"next_revision": 2
}
Import shotgun assets
Import Shotgun assets. Send a list of Shotgun asset entries in the JSON body. Returns created or updated assets with parent-child relationships.
curl \
--request POST 'http://api.example.com/import/shotgun/assets' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '[{"id":12345,"code":"Asset01","parents":[{"id":22222}],"project":{"id":11111},"description":"Main character asset","sg_asset_type":"Character"}]'
[
{
"id": 12345,
"code": "Asset01",
"parents": [
{
"id": 22222
}
],
"project": {
"id": 11111
},
"description": "Main character asset",
"sg_asset_type": "Character"
}
]
[
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "Asset01",
"description": "Main character asset",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T11:00:00Z"
}
]
Import shotgun notes
Import Shotgun notes (comments) linked to tasks. Send a list of Shotgun note entries in the JSON body. Only notes linked to tasks are imported. Returns created or updated comments.
curl \
--request POST 'http://api.example.com/import/shotgun/notes' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '[{"id":12345,"user":{"id":11111},"tasks":[{"id":67890}],"content":"This is a comment","created_at":"2024-01-15T10:30:00Z"}]'
[
{
"id": 12345,
"user": {
"id": 11111
},
"tasks": [
{
"id": 67890
}
],
"content": "This is a comment",
"created_at": "2024-01-15T10:30:00Z"
}
]
[
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"text": "This is a comment",
"created_at": "2024-01-15T10:30:00Z"
}
]
Get the configuration of the Kitsu instance
The configuration includes self-hosted status, Crisp token, indexer configuration, SAML status, and dark theme status.
curl \
--request GET 'http://api.example.com/config' \
--header "Authorization: $API_KEY"
{
"is_self_hosted": true,
"crisp_token": "abc123def456",
"dark_theme_by_default": false,
"indexer_configured": true,
"saml_enabled": false,
"saml_idp_name": "My Company SSO",
"default_locale": "en_US",
"default_timezone": "UTC",
"sentry": {
"dsn": "https://example@sentry.io/123456",
"sampleRate": 0.1
}
}
Get presence logs
Return a CSV file containing the presence logs based on a daily basis for the given month.
curl \
--request GET 'http://api.example.com/data/persons/presence-logs/2022-07' \
--header "Authorization: $API_KEY"
Get time spents
Get all time spents for the given person. Optionally can accept date range parameters.
curl \
--request GET 'http://api.example.com/data/persons/a24a6ea4-ce75-4665-a070-57453082c25/time-spents' \
--header "Authorization: $API_KEY"
[
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"person_id": "b35b7fb5-df86-5776-b181-68564193d36",
"duration": 8.5,
"date": "2022-07-12"
}
]
Invite person
Sends an email to given person to invite him or her to connect to Kitsu.
curl \
--request GET 'http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/invite' \
--header "Authorization: $API_KEY"
{
"success": true,
"message": "Email sent"
}
Add person to department
Add a user to given department.
curl \
--request POST 'http://api.example.com/actions/persons/a24a6ea4-ce75-4665-a070-57453082c25/departments/add' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"department_id":"b35b7fb5-df86-5776-b181-68564193d36"}'
{
"department_id": "b35b7fb5-df86-5776-b181-68564193d36"
}
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"department_id": "b35b7fb5-df86-5776-b181-68564193d36"
}
Get playlist
Retrieve a specific playlist by ID with preview file revisions.
curl \
--request GET 'http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/playlists/b35b7fb5-df86-5776-b181-68564193d36' \
--header "Authorization: $API_KEY"
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "Review Playlist",
"project_id": "b35b7fb5-df86-5776-b181-68564193d36",
"shots": [
{
"id": "uuid",
"preview_file_id": "uuid"
}
]
}
Get entity previews
Retrieve all previews related to a given entity. It sends them as a dict. Keys are related task type ids and values are arrays of preview for this task type.
curl \
--request GET 'http://api.example.com/data/playlists/entities/a24a6ea4-ce75-4665-a070-57453082c25/preview-files' \
--header "Authorization: $API_KEY"
{
"additionalProperty1": [
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "preview_v001.png"
}
],
"additionalProperty2": [
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "preview_v001.png"
}
]
}
Remove person from production team
Remove people listed in a production team.
curl \
--request DELETE 'http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/team/b35b7fb5-df86-5776-b181-68564193d36' \
--header "Authorization: $API_KEY"
Add asset type to production
Add an asset type linked to a production.
curl \
--request POST 'http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/asset-types' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"asset_type_id":"b35b7fb5-df86-5776-b181-68564193d36"}'
{
"asset_type_id": "b35b7fb5-df86-5776-b181-68564193d36"
}
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "My Project"
}
Remove preview background file from production
Remove a preview background file from a production.
curl \
--request DELETE 'http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/settings/preview-background-files/b35b7fb5-df86-5776-b181-68564193d36' \
--header "Authorization: $API_KEY"
Get shot
Get a shot by id. Returns full shot data. Use this to fetch a single shot with all fields needed by the UI.
curl \
--request GET 'http://api.example.com/data/shots/a24a6ea4-ce75-4665-a070-57453082c25' \
--header "Authorization: $API_KEY"
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "SH010",
"project_id": "b24a6ea4-ce75-4665-a070-57453082c25",
"parent_id": "c24a6ea4-ce75-4665-a070-57453082c25",
"nb_frames": 120,
"data": {
"camera": "camA",
"cut_in": 1001
}
}
Get scene
Get a scene by id. Returns full scene data needed by clients.
curl \
--request GET 'http://api.example.com/data/scenes/a24a6ea4-ce75-4665-a070-57453082c25' \
--header "Authorization: $API_KEY"
{
"id": "a24a6ea4-ce75-4665-a070-57453082c25",
"name": "SC001",
"project_id": "b24a6ea4-ce75-4665-a070-57453082c25"
}