# Kitsu API — Complete Endpoint Catalog **493 endpoints** across 24 categories. Base URL: `https:///api` All endpoints require JWT authentication via `Authorization: Bearer ` header, except `/auth/login` and `/auth/register`. ## Table of Contents 1. [Authentication](#authentication) — Login, logout, 2FA, SAML 2. [Projects](#projects) — CRUD, settings, team, stats 3. [Shots](#shots) — Shots, sequences, episodes, scenes 4. [Assets](#assets) — Assets, asset types, instances, sharing 5. [Tasks](#tasks) — Tasks, task types, task statuses, assignments, time tracking 6. [Comments](#comments) — Comments, replies, attachments 7. [Previews](#previews) — Preview files, thumbnails, movies 8. [Files](#files) — Working files, output files, software 9. [Casting/Breakdown](#casting) — Entity casting, asset instances 10. [Persons](#persons) — Users, departments, day-offs, time spents 11. [Playlists](#playlists) — Playlists, build jobs 12. [Events](#events) — Event log, login logs 13. [News](#news) — Activity feed 14. [Notifications](#notifications) — User notifications 15. [Search](#search) — Full-text search, filters 16. [Chat](#chat) — Entity chat, messages 17. [Entities](#entities) — Generic entity operations 18. [Concepts & Edits](#concepts-edits) — Concept art, edit entities 19. [Export/Import](#export-import) — CSV, Kitsu, ShotGrid, OTIO 20. [User Context](#user-context) — Current user's data 21. [Custom Actions](#custom-actions) — Webhook-like triggers 22. [Admin](#admin) — Status, config, organisations, studios 23. [Budgets & Scheduling](#budgets-scheduling) — Budgets, milestones, schedule items 24. [Media Files](#media-files) — Pictures, movies, thumbnails --- ## Authentication | Method | Path | Description | |--------|------|-------------| | POST | `/auth/login` | Login with email/password, returns JWT | | GET | `/auth/logout` | Invalidate current token | | GET | `/auth/authenticated` | Check if token is valid (200/401) | | GET | `/auth/refresh-token` | Get new access token | | POST | `/auth/register` | Register new user | | POST | `/auth/change-password` | Change password (old_password, password, password_2) | | POST | `/auth/reset-password` | Request password reset email | | PUT | `/auth/reset-password` | Complete password reset (token, password) | | PUT/POST/DELETE | `/auth/totp` | Pre-enable/enable/disable TOTP 2FA | | GET/POST/DELETE | `/auth/email-otp` | Email OTP 2FA management | | GET/PUT/POST/DELETE | `/auth/fido` | FIDO/WebAuthn device management | | PUT | `/auth/recovery-codes` | Generate recovery codes | | GET | `/auth/saml/login` | SAML SSO login redirect | | POST | `/auth/saml/sso` | SAML SSO callback | ## Projects | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/projects` | List all / create project | | GET | `/data/projects/all` | All projects (admin) | | GET | `/data/projects/open` | Open projects only | | GET | `/data/projects/news` | News across all projects | | GET/PUT/DELETE | `/data/projects/{id}` | Get/update/delete project | | GET/POST | `/data/projects/{id}/team` | Get/add team members | | DELETE | `/data/projects/{id}/team/{person_id}` | Remove from team | | GET | `/data/projects/{id}/task-types` | Project task types | | GET | `/data/projects/{id}/asset-types` | Project asset types | | GET | `/data/projects/{id}/assets` | Project assets | | GET | `/data/projects/{id}/comments` | All project comments | | GET | `/data/projects/{id}/preview-files` | All project previews | | GET | `/data/projects/{id}/attachment-files` | All project attachments | | GET | `/data/projects/{id}/output-files` | All project output files | | GET | `/data/projects/{id}/news` | Project news feed | | GET | `/data/projects/{id}/news/{news_id}` | Specific news item | | GET | `/data/projects/{id}/notifications` | Project notifications | | GET | `/data/projects/{id}/playlists` | Project playlists | | GET | `/data/projects/{id}/playlists/all` | All playlists including temp | | POST | `/data/projects/{id}/playlists/temp` | Create temp playlist | | GET | `/data/projects/{id}/subscriptions` | Project subscriptions | | GET | `/data/projects/{id}/tasks` | All project tasks | | GET | `/data/projects/{id}/time-spents` | Project time tracking | | GET | `/data/projects/{id}/entity-links` | Project entity links | | DELETE | `/data/projects/{id}/entity-links/{link_id}` | Remove entity link | | GET | `/data/projects/{id}/build-jobs` | Build jobs for project | | GET | `/data/projects/{id}/day-offs` | Project day offs | ### Project Settings | Method | Path | Description | |--------|------|-------------| | POST | `/data/projects/{id}/settings/asset-types` | Add asset type to project | | DELETE | `/data/projects/{id}/settings/asset-types/{at_id}` | Remove asset type | | POST | `/data/projects/{id}/settings/task-types` | Add task type to project | | DELETE | `/data/projects/{id}/settings/task-types/{tt_id}` | Remove task type | | GET/POST | `/data/projects/{id}/settings/task-status` | Get/add task statuses | | DELETE | `/data/projects/{id}/settings/task-status/{ts_id}` | Remove task status | | GET/POST | `/data/projects/{id}/settings/status-automations` | Status automations | | DELETE | `/data/projects/{id}/settings/status-automations/{sa_id}` | Remove automation | | GET/POST | `/data/projects/{id}/settings/preview-background-files` | Preview BG files | | DELETE | `/data/projects/{id}/settings/preview-background-files/{pbf_id}` | Remove BG | | POST | `/actions/projects/{id}/set-file-tree` | Set project file tree template | | POST | `/actions/projects/{id}/delete-tasks` | Batch delete tasks | ### Project Metadata | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/projects/{id}/metadata-descriptors` | Custom metadata fields | | POST | `/data/projects/{id}/metadata-descriptors/reorder` | Reorder descriptors | | GET/PUT/DELETE | `/data/projects/{id}/metadata-descriptors/{desc_id}` | CRUD descriptor | ### Project Stats & Quotas | Method | Path | Description | |--------|------|-------------| | GET | `/data/projects/{id}/episodes/stats` | Episode statistics | | GET | `/data/projects/{id}/episodes/retake-stats` | Retake statistics | | GET | `/data/projects/{id}/quotas/{task_type_id}` | Quotas by task type | | GET | `/data/projects/{id}/quotas/persons/{person_id}` | Personal quotas | | GET | `/data/projects/{id}/task-types/{tt_id}/time-spents` | Time by task type | ## Shots | Method | Path | Description | |--------|------|-------------| | GET | `/data/shots` | All shots (filterable) | | GET | `/data/shots/all` | All shots (admin) | | GET | `/data/shots/with-tasks` | Shots with embedded tasks | | GET/PUT/DELETE | `/data/shots/{id}` | Get/update/delete shot | | GET | `/data/shots/{id}/tasks` | Shot's tasks | | GET | `/data/shots/{id}/task-types` | Shot's task types | | GET | `/data/shots/{id}/assets` | Assets linked to shot | | GET | `/data/shots/{id}/asset-types` | Asset types in shot | | GET | `/data/shots/{id}/preview-files` | Shot preview files | | GET | `/data/shots/{id}/versions` | Shot versions | | GET/POST | `/data/shots/{id}/asset-instances` | Shot asset instances | | DELETE | `/data/shots/{id}/asset-instances/{ai_id}` | Remove instance | | POST | `/data/projects/{id}/shots` | Create shot in project | ### Sequences | Method | Path | Description | |--------|------|-------------| | GET | `/data/sequences` | All sequences | | GET | `/data/sequences/with-tasks` | Sequences with tasks | | GET/DELETE | `/data/sequences/{id}` | Get/delete sequence | | GET | `/data/sequences/{id}/shots` | Shots in sequence | | GET | `/data/sequences/{id}/shot-tasks` | All shot tasks in sequence | | GET | `/data/sequences/{id}/scenes` | Scenes in sequence | | GET | `/data/sequences/{id}/task-types` | Sequence task types | | GET | `/data/sequences/{id}/tasks` | Sequence tasks | | GET/POST | `/data/projects/{id}/sequences` | Project sequences | ### Episodes | Method | Path | Description | |--------|------|-------------| | GET | `/data/episodes` | All episodes | | GET | `/data/episodes/with-tasks` | Episodes with tasks | | GET/DELETE | `/data/episodes/{id}` | Get/delete episode | | GET | `/data/episodes/{id}/sequences` | Episode sequences | | GET | `/data/episodes/{id}/shots` | Episode shots | | GET | `/data/episodes/{id}/shot-tasks` | Shot tasks for episode | | GET | `/data/episodes/{id}/asset-tasks` | Asset tasks for episode | | GET | `/data/episodes/{id}/edit-tasks` | Edit tasks for episode | | GET | `/data/episodes/{id}/edits` | Edits for episode | | GET | `/data/episodes/{id}/task-types` | Episode task types | | GET | `/data/episodes/{id}/tasks` | Episode tasks | | GET/POST | `/data/projects/{id}/episodes` | Project episodes | | GET | `/data/projects/{id}/episodes/casting` | All episode casting | | GET | `/data/projects/{id}/episodes/{ep_id}/playlists` | Episode playlists | | GET | `/data/projects/{id}/episodes/{ep_id}/sequences/all/casting` | Casting for all sequences | | GET | `/data/projects/{id}/episodes/{ep_id}/assets/shared-used` | Shared assets in episode | ### Scenes | Method | Path | Description | |--------|------|-------------| | GET | `/data/scenes/all` | All scenes | | GET | `/data/scenes/with-tasks` | Scenes with tasks | | GET/DELETE | `/data/scenes/{id}` | Get/delete scene | | GET/POST | `/data/scenes/{id}/asset-instances` | Scene asset instances | | GET | `/data/scenes/{id}/camera-instances` | Camera instances | | GET/POST | `/data/scenes/{id}/shots` | Scene shots | | DELETE | `/data/scenes/{id}/shots/{shot_id}` | Remove shot from scene | | GET | `/data/scenes/{id}/task-types` | Scene task types | | GET | `/data/scenes/{id}/tasks` | Scene tasks | | GET/POST | `/data/projects/{id}/scenes` | Project scenes | ## Assets | Method | Path | Description | |--------|------|-------------| | GET | `/data/assets` | All assets (filterable by project_id, asset_type_id) | | GET | `/data/assets/all` | All assets (admin) | | GET | `/data/assets/with-tasks` | Assets with embedded tasks | | GET/DELETE | `/data/assets/{id}` | Get/delete asset (force=true to force) | | GET | `/data/assets/{id}/tasks` | Asset's tasks | | GET | `/data/assets/{id}/task-types` | Asset's task types | | GET | `/data/assets/{id}/assets` | Linked assets | | GET | `/data/assets/{id}/cast-in` | Shots this asset appears in | | GET/PUT | `/data/assets/{id}/casting` | Get/set asset casting | | GET | `/data/assets/{id}/shot-asset-instances` | Instances in shots | | GET | `/data/assets/{id}/scene-asset-instances` | Instances in scenes | | GET/POST | `/data/assets/{id}/asset-asset-instances` | Asset instances | | GET | `/data/asset-types` | All asset types | | GET | `/data/asset-types/{id}` | Specific asset type | | GET | `/data/projects/{id}/asset-types` | Project asset types | | GET | `/data/projects/{id}/asset-types/{at_id}/assets` | Assets of type | | POST | `/data/projects/{id}/asset-types/{at_id}/assets/new` | Create asset | | GET | `/data/projects/{id}/asset-types/{at_id}/casting` | Casting by type | | GET | `/data/projects/{id}/assets` | Project assets | | GET | `/data/projects/{id}/assets/shared-used` | Shared assets | ### Asset Sharing | Method | Path | Description | |--------|------|-------------| | POST | `/actions/assets/share` | Share assets across projects | | POST | `/actions/projects/{id}/assets/share` | Share project assets | | POST | `/actions/projects/{id}/asset-types/{at_id}/assets/share` | Share by type | ## Tasks | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/tasks` | List/create tasks | | GET | `/data/tasks/open-tasks` | Open tasks | | GET | `/data/tasks/open-tasks/stats` | Open tasks stats | | GET/PUT/DELETE | `/data/tasks/{id}` | Get/update/delete task | | GET | `/data/tasks/{id}/full` | Full task with all relations | | GET | `/data/tasks/{id}/comments` | Task comments | | GET/DELETE | `/data/tasks/{id}/comments/{cid}` | Get/delete comment | | POST | `/data/tasks/{id}/comments/{cid}/reply` | Reply to comment | | DELETE | `/data/tasks/{id}/comments/{cid}/reply/{rid}` | Delete reply | | POST | `/data/tasks/{id}/comments/{cid}/ack` | Acknowledge comment | | DELETE | `/data/tasks/{id}/comments/{cid}/attachments/{aid}` | Delete attachment | | GET | `/data/tasks/{id}/previews` | Task preview files | | GET | `/data/tasks/{id}/attachment-files` | Task attachments | | GET | `/data/tasks/{id}/working-files` | Task working files | | GET | `/data/tasks/{id}/working-files/last-revisions` | Latest working files | | POST | `/data/tasks/{id}/working-files/new` | Create working file | | POST | `/data/tasks/{id}/working-file-path` | Get working file path | ### Task Actions | Method | Path | Description | |--------|------|-------------| | POST | `/actions/tasks/{id}/comment` | Add comment to task | | POST | `/actions/tasks/{id}/batch-comment` | Batch comment | | POST | `/actions/tasks/batch-comment` | Batch comment (multi-task) | | PUT | `/actions/tasks/{id}/assign` | Assign task | | PUT | `/actions/tasks/clear-assignation` | Clear assignments | | PUT | `/actions/tasks/{id}/set-main-preview` | Set main preview | | PUT | `/actions/tasks/{id}/to-review` | Send to review | | POST | `/actions/tasks/{id}/comments/{cid}/add-preview` | Add preview to comment | | POST | `/actions/tasks/{id}/comments/{cid}/add-attachment` | Add attachment | | POST/DELETE | `/actions/tasks/{id}/comments/{cid}/preview-files/{pfid}` | Manage previews | | POST | `/actions/projects/{id}/tasks/comment-many` | Comment many tasks | ### Task Creation (Bulk) | Method | Path | Description | |--------|------|-------------| | POST | `/actions/projects/{id}/task-types/{tt_id}/shots/create-tasks` | Create tasks for all shots | | POST | `/actions/projects/{id}/task-types/{tt_id}/assets/create-tasks` | Create tasks for all assets | | POST | `/actions/projects/{id}/task-types/{tt_id}/edits/create-tasks` | Create tasks for all edits | | POST | `/actions/projects/{id}/task-types/{tt_id}/concepts/create-tasks` | Create tasks for concepts | | DELETE | `/actions/projects/{id}/task-types/{tt_id}/delete-tasks` | Delete all tasks of type | ### Time Tracking | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/time-spents/` | List/create time spents | | GET/PUT/DELETE | `/data/time-spents/{id}` | CRUD time spent | | GET | `/actions/tasks/{id}/time-spents` | Task time spents | | GET | `/actions/tasks/{id}/time-spents/{date}` | Task time on date | | POST/DELETE | `/actions/tasks/{id}/time-spents/{date}/persons/{pid}` | Set/delete person time | | POST | `/actions/tasks/{id}/time-spents/{date}/persons/{pid}/add` | Add time | ### Task Types & Statuses | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/task-types` | List/create task types | | GET/PUT/DELETE | `/data/task-types/{id}` | CRUD task type | | GET/POST | `/data/task-status` | List/create task statuses | | GET/PUT/DELETE | `/data/task-status/{id}` | CRUD task status | | POST | `/data/task-type-links` | Link task types | | POST | `/data/task-status-links` | Link task statuses | | POST | `/actions/projects/{id}/task-types/{tt_id}/set-shot-nb-frames` | Set frame counts | ## Comments | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/comments` | List/create comments | | GET/PUT/DELETE | `/data/comments/{id}` | CRUD comment | ## Previews ### Preview Actions | Method | Path | Description | |--------|------|-------------| | PUT | `/actions/preview-files/{id}/set-main-preview` | Set as main preview | | PUT | `/actions/preview-files/{id}/update-annotations` | Update annotations | | PUT | `/actions/preview-files/{id}/update-position` | Update position | | GET | `/actions/preview-files/{id}/extract-frame` | Extract frame | | GET | `/actions/preview-files/{id}/extract-tile` | Extract tile | ### Preview Data | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/preview-files` | List/create preview files | | GET/PUT/DELETE | `/data/preview-files/{id}` | CRUD preview file | | GET/POST | `/data/preview-background-files` | Background files | | GET/PUT/DELETE | `/data/preview-background-files/{id}` | CRUD background file | ## Files | Method | Path | Description | |--------|------|-------------| | GET | `/data/files/{id}` | Get file info | | GET/POST | `/data/working-files` | List/create working files | | GET/PUT/DELETE | `/data/working-files/{id}` | CRUD working file | | GET/POST | `/data/working-files/{id}/file` | Upload/download file | | PUT | `/actions/working-files/{id}/comment` | Comment on working file | | PUT | `/actions/working-files/{id}/modified` | Mark as modified | | GET/POST | `/data/output-files` | List/create output files | | GET/PUT/DELETE | `/data/output-files/{id}` | CRUD output file | | GET/POST | `/data/output-types` | List/create output types | | GET/PUT/DELETE | `/data/output-types/{id}` | CRUD output type | | GET/POST | `/data/attachment-files` | List/create attachments | | GET/PUT/DELETE | `/data/attachment-files/{id}` | CRUD attachment | | GET | `/data/attachment-files/{id}/file/{filename}` | Download attachment | | GET/POST | `/data/softwares` | List/create software entries | | GET/PUT/DELETE | `/data/softwares/{id}` | CRUD software | | GET/POST | `/data/file-status/` | File statuses | | GET/PUT/DELETE | `/data/file-status/{id}` | CRUD file status | ### Entity File Operations | Method | Path | Description | |--------|------|-------------| | GET | `/data/entities/{id}/working-files` | Entity working files | | GET | `/data/entities/{id}/output-files` | Entity output files | | GET | `/data/entities/{id}/output-files/last-revisions` | Latest output revisions | | POST | `/data/entities/{id}/output-files/new` | Create output file | | POST | `/data/entities/{id}/output-files/next-revision` | Next revision number | | POST | `/data/entities/{id}/output-file-path` | Get output file path | | GET | `/data/entities/{id}/output-types` | Entity output types | | GET | `/data/entities/{id}/output-types/{ot_id}/output-files` | Files by output type | | GET | `/data/entities/{id}/preview-files` | Entity preview files | ### Asset Instance File Operations | Method | Path | Description | |--------|------|-------------| | GET | `/data/asset-instances/{ai_id}/output-files` | Instance output files | | GET | `/data/asset-instances/{ai_id}/entities/{te_id}/output-files/last-revisions` | Latest revisions | | POST | `/data/asset-instances/{ai_id}/entities/{te_id}/output-files/new` | Create output | | POST | `/data/asset-instances/{ai_id}/entities/{te_id}/output-files/next-revision` | Next revision | | POST | `/data/asset-instances/{ai_id}/entities/{te_id}/output-file-path` | Get path | | GET | `/data/asset-instances/{ai_id}/entities/{te_id}/output-types` | Output types | | GET | `/data/asset-instances/{ai_id}/entities/{te_id}/output-types/{ot_id}/output-files` | Files | ## Casting | Method | Path | Description | |--------|------|-------------| | GET/PUT | `/data/projects/{id}/entities/{eid}/casting` | Entity casting | | GET | `/data/projects/{id}/asset-types/{at_id}/casting` | Casting by asset type | | GET | `/data/projects/{id}/sequences/all/casting` | All sequence casting | | GET | `/data/projects/{id}/sequences/{sid}/casting` | Sequence casting | | GET/POST | `/data/asset-instances/` | Asset instances | | GET/PUT/DELETE | `/data/asset-instances/{id}` | CRUD asset instance | ## Persons | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/persons` | List/create persons | | GET/PUT/DELETE | `/data/persons/{id}` | CRUD person | | GET | `/data/persons/{id}/tasks` | Person's tasks | | GET | `/data/persons/{id}/done-tasks` | Person's completed tasks | | GET | `/data/persons/{id}/time-spents` | All time spents | | GET | `/data/persons/{id}/time-spents/{date}` | Time on specific date | | GET | `/data/persons/{id}/time-spents/day/{y}/{m}/{d}` | Daily time | | GET | `/data/persons/{id}/time-spents/week/{y}/{w}` | Weekly time | | GET | `/data/persons/{id}/time-spents/month/{y}/{m}` | Monthly time | | GET | `/data/persons/{id}/time-spents/month/all/{y}/{m}` | Monthly all | | GET | `/data/persons/{id}/time-spents/year/{y}` | Yearly time | | GET | `/data/persons/{id}/related-tasks/{tt_id}` | Related tasks | | GET | `/data/persons/{id}/quota-shots/day/{y}/{m}/{d}` | Daily quota | | GET | `/data/persons/{id}/quota-shots/week/{y}/{w}` | Weekly quota | | GET | `/data/persons/{id}/quota-shots/month/{y}/{m}` | Monthly quota | | GET/POST | `/data/persons/{id}/desktop-login-logs` | Login logs | ### Person Aggregate Tables | Method | Path | Description | |--------|------|-------------| | GET | `/data/persons/time-spents/day-table/{y}/{m}` | All persons daily | | GET | `/data/persons/time-spents/week-table/{y}` | All persons weekly | | GET | `/data/persons/time-spents/month-table/{y}` | All persons monthly | | GET | `/data/persons/time-spents/year-table/` | All persons yearly | | GET | `/data/persons/task-dates` | All persons task dates | | GET | `/data/persons/presence-logs/{month_date}` | Presence logs | ### Day Offs | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/day-offs/` | List/create day offs | | GET/PUT/DELETE | `/data/day-offs/{id}` | CRUD day off | | GET | `/data/persons/{id}/day-offs` | Person day offs | | GET | `/data/persons/{id}/day-offs/{date}` | Day offs on date | | GET | `/data/persons/{id}/day-offs/week/{y}/{w}` | Weekly day offs | | GET | `/data/persons/{id}/day-offs/month/{y}/{m}` | Monthly day offs | | GET | `/data/persons/{id}/day-offs/year/{y}` | Yearly day offs | | GET | `/data/persons/day-offs/{y}/{m}` | All persons day offs | ### Person Actions | Method | Path | Description | |--------|------|-------------| | PUT | `/actions/persons/{id}/assign` | Assign person | | POST | `/actions/persons/{id}/change-password` | Change password | | DELETE | `/actions/persons/{id}/clear-avatar` | Clear avatar | | POST | `/actions/persons/{id}/departments/add` | Add to department | | DELETE | `/actions/persons/{id}/departments/{did}` | Remove from dept | | DELETE | `/actions/persons/{id}/disable-two-factor-authentication` | Disable 2FA | | GET | `/actions/persons/{id}/invite` | Send invite | ### Departments | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/departments` | List/create departments | | GET/PUT/DELETE | `/data/departments/{id}` | CRUD department | | GET | `/data/departments/hardware-items` | All hardware items | | GET | `/data/departments/software-licenses` | All software licenses | | POST | `/data/departments/{id}/hardware-items` | Add hardware | | GET/DELETE | `/data/departments/{id}/hardware-items/{hid}` | Get/remove | | POST | `/data/departments/{id}/software-licenses` | Add license | | GET/DELETE | `/data/departments/{id}/software-licenses/{sid}` | Get/remove | ## Playlists | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/playlists/` | List/create playlists | | GET/PUT/DELETE | `/data/playlists/{id}` | CRUD playlist | | GET | `/data/playlists/entities/{eid}/preview-files` | Entity previews in playlists | | GET | `/data/playlists/preview-files/running` | Running preview builds | | GET | `/data/playlists/{id}/build/mp4` | Build MP4 | | GET | `/data/playlists/{id}/download/zip` | Download ZIP | | GET/DELETE | `/data/playlists/{id}/jobs/{jid}` | Build job status | | GET | `/data/playlists/{id}/jobs/{jid}/build/mp4` | Job MP4 | | POST | `/data/playlists/{id}/notify-clients` | Notify clients | | POST | `/actions/playlists/{id}/add-entity` | Add entity to playlist | ## Events | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/events/` | List/create events | | GET | `/data/events/last` | Recent events (page_size, before, after, only_files) | | GET | `/data/events/login-logs/last` | Recent login logs | | GET/PUT/DELETE | `/data/events/{id}` | CRUD event | ## News | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/news/` | List/create news | | GET/PUT/DELETE | `/data/news/{id}` | CRUD news | | GET | `/data/entities/{id}/news` | Entity news | ## Notifications | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/notifications/` | List/create notifications | | GET/PUT/DELETE | `/data/notifications/{id}` | CRUD notification | ## Search | Method | Path | Description | |--------|------|-------------| | POST | `/data/search` | Full-text search (query, project_id, limit, offset, index_names) | | GET/POST | `/data/search-filters/` | Saved search filters | | GET/PUT/DELETE | `/data/search-filters/{id}` | CRUD search filter | | GET/POST | `/data/search-filter-groups/` | Filter groups | | GET/PUT/DELETE | `/data/search-filter-groups/{id}` | CRUD filter group | ## Chat | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/chats/` | List/create chats | | GET/PUT/DELETE | `/data/chats/{id}` | CRUD chat | | GET/POST | `/data/chat-messages/` | List/create messages | | GET/PUT/DELETE | `/data/chat-messages/{id}` | CRUD message | | GET | `/data/entities/{eid}/chat` | Entity chat | | GET/POST | `/data/entities/{eid}/chat/messages` | Entity chat messages | | GET/DELETE | `/data/entities/{eid}/chat/messages/{mid}` | Get/delete message | | POST/DELETE | `/actions/user/chats/{eid}/join` | Join/leave entity chat | ## Entities (Generic) | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/entities` | List/create entities | | GET/PUT/DELETE | `/data/entities/{id}` | CRUD entity | | POST | `/data/entities/guess_from_path` | Guess entity from file path | | GET | `/data/entities/{id}/entities-linked/with-tasks` | Linked entities with tasks | | GET | `/data/entities/{id}/time-spents` | Entity time spents | | GET | `/data/entities/{id}/task-types/{tt_id}/tasks` | Tasks by type | | GET/POST | `/data/entity-links/` | Entity links | | GET/PUT/DELETE | `/data/entity-links/{id}` | CRUD entity link | | GET/POST | `/data/entity-types` | Entity types | | GET/PUT/DELETE | `/data/entity-types/{id}` | CRUD entity type | ## Concepts & Edits ### Concepts | Method | Path | Description | |--------|------|-------------| | GET | `/data/concepts` | All concepts | | GET | `/data/concepts/with-tasks` | Concepts with tasks | | GET/DELETE | `/data/concepts/{id}` | Get/delete concept | | GET | `/data/concepts/{id}/preview-files` | Concept previews | | GET | `/data/concepts/{id}/task-types` | Concept task types | | GET | `/data/concepts/{id}/tasks` | Concept tasks | | GET/POST | `/data/projects/{id}/concepts` | Project concepts | ### Edits | Method | Path | Description | |--------|------|-------------| | GET | `/data/edits` | All edits | | GET | `/data/edits/all` | All edits (admin) | | GET | `/data/edits/with-tasks` | Edits with tasks | | GET/DELETE | `/data/edits/{id}` | Get/delete edit | | GET | `/data/edits/{id}/preview-files` | Edit previews | | GET | `/data/edits/{id}/task-types` | Edit task types | | GET | `/data/edits/{id}/tasks` | Edit tasks | | GET | `/data/edits/{id}/versions` | Edit versions | | GET/POST | `/data/projects/{id}/edits` | Project edits | ## Export/Import ### CSV Export | Method | Path | Description | |--------|------|-------------| | GET | `/export/csv/persons.csv` | Export persons | | GET | `/export/csv/projects.csv` | Export projects | | GET | `/export/csv/task-types.csv` | Export task types | | GET | `/export/csv/tasks.csv` | Export tasks | | GET | `/export/csv/time-spents.csv` | Export time spents | | GET | `/export/csv/projects/{id}/assets.csv` | Export assets | | GET | `/export/csv/projects/{id}/shots.csv` | Export shots | | GET | `/export/csv/projects/{id}/edits.csv` | Export edits | | GET | `/export/csv/projects/{id}/casting.csv` | Export casting | | GET | `/export/csv/playlists/{id}` | Export playlist | ### CSV Import | Method | Path | Description | |--------|------|-------------| | POST | `/import/csv/persons` | Import persons | | POST | `/import/csv/projects/{id}/assets` | Import assets | | POST | `/import/csv/projects/{id}/shots` | Import shots | | POST | `/import/csv/projects/{id}/edits` | Import edits | | POST | `/import/csv/projects/{id}/casting` | Import casting | | POST | `/import/csv/projects/{id}/task-types/{tt_id}/estimations` | Import estimations | | POST | `/import/csv/projects/{id}/episodes/{ep_id}/task-types/{tt_id}/estimations` | Episode estimations | ### Kitsu Import | Method | Path | Description | |--------|------|-------------| | POST | `/import/kitsu/projects` | Import from Kitsu | | POST | `/import/kitsu/entities` | Import entities | | POST | `/import/kitsu/tasks` | Import tasks | | POST | `/import/kitsu/comments` | Import comments | | POST | `/import/kitsu/entity-links` | Import links | ### OTIO Import | Method | Path | Description | |--------|------|-------------| | POST | `/import/otio/projects/{id}` | Import OTIO | | POST | `/import/otio/projects/{id}/episodes/{ep_id}` | Import OTIO with episode | ## User Context (Current User) | Method | Path | Description | |--------|------|-------------| | GET | `/data/user/context` | Current user context | | GET | `/data/user/tasks` | My tasks | | GET | `/data/user/tasks-to-check` | Tasks to review | | GET | `/data/user/done-tasks` | My completed tasks | | GET | `/data/user/notifications` | My notifications | | GET/PUT | `/data/user/notifications/{id}` | Get/mark notification | | POST | `/actions/user/notifications/mark-all-as-read` | Mark all read | | GET | `/data/user/chats` | My chats | | GET | `/data/user/time-spents` | My time spents | | GET | `/data/user/time-spents/{date}` | My time on date | | GET | `/data/user/day-offs/{date}` | My day offs | | GET/POST | `/data/user/filters` | My saved filters | | PUT/DELETE | `/data/user/filters/{id}` | Update/delete filter | | GET/POST | `/data/user/filter-groups` | My filter groups | | GET/PUT/DELETE | `/data/user/filter-groups/{id}` | CRUD filter group | | GET/POST | `/data/user/desktop-login-logs` | Desktop login logs | | DELETE | `/actions/user/clear-avatar` | Clear my avatar | | GET | `/data/user/projects/open` | My open projects | | GET | `/data/user/projects/{id}/asset-types` | My project asset types | | GET | `/data/user/projects/{id}/asset-types/{at_id}/assets` | My project assets | | GET | `/data/user/projects/{id}/episodes` | My project episodes | | GET | `/data/user/projects/{id}/sequences` | My project sequences | | GET | `/data/user/projects/{id}/task-types/{tt_id}/sequence-subscriptions` | My subscriptions | | GET | `/data/user/assets/{id}/task-types` | My asset task types | | GET | `/data/user/assets/{id}/tasks` | My asset tasks | | GET | `/data/user/shots/{id}/task-types` | My shot task types | | GET | `/data/user/shots/{id}/tasks` | My shot tasks | | GET | `/data/user/sequences/{id}/shots` | My sequence shots | | GET | `/data/user/sequences/{id}/scenes` | My sequence scenes | | GET | `/data/user/sequences/{id}/task-types` | My sequence task types | | GET | `/data/user/sequences/{id}/tasks` | My sequence tasks | | GET | `/data/user/scenes/{id}/task-types` | My scene task types | | GET | `/data/user/scenes/{id}/tasks` | My scene tasks | | GET | `/data/user/entities/{sid}/task-types/{tt_id}/subscribed` | Subscription status | | GET | `/data/user/tasks/{id}/subscribed` | Task subscription status | | GET | `/data/user/tasks/{id}/time-spents/{date}` | My task time | | POST | `/actions/user/tasks/{id}/subscribe` | Subscribe to task | | DELETE | `/actions/user/tasks/{id}/unsubscribe` | Unsubscribe from task | | POST | `/actions/user/sequences/{sid}/task-types/{tt_id}/subscribe` | Subscribe to sequence | | DELETE | `/actions/user/sequences/{sid}/task-types/{tt_id}/unsubscribe` | Unsubscribe | ## Custom Actions | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/custom-actions/` | List/create custom actions | | GET/PUT/DELETE | `/data/custom-actions/{id}` | CRUD custom action | ## Admin & System | Method | Path | Description | |--------|------|-------------| | GET | `/` | API root | | GET | `/config` | Server configuration | | GET | `/stats` | Server statistics | | GET | `/status` | Server status | | GET | `/status.txt` | Status text | | GET | `/status/influx` | InfluxDB metrics | | GET | `/status/resources` | Resource usage | | GET | `/status/test-event` | Test SSE event | | GET/POST | `/data/organisations` | Organisations | | GET/PUT/DELETE | `/data/organisations/{id}` | CRUD organisation | | GET/POST | `/data/studios` | Studios | | GET/PUT/DELETE | `/data/studios/{id}` | CRUD studio | | GET/POST | `/data/project-status` | Project statuses | | GET/PUT/DELETE | `/data/project-status/{id}` | CRUD project status | | GET/POST | `/data/status-automations/` | Status automations | | GET/PUT/DELETE | `/data/status-automations/{id}` | CRUD status automation | | GET/POST | `/data/plugins` | Plugins | | GET/PUT/DELETE | `/data/plugins/{id}` | CRUD plugin | | GET/POST | `/data/subscriptions/` | Subscriptions | | GET/PUT/DELETE | `/data/subscriptions/{id}` | CRUD subscription | | GET/POST | `/data/salary-scales` | Salary scales | | GET/PUT/DELETE | `/data/salary-scales/{id}` | CRUD salary scale | | GET/POST | `/data/hardware-items` | Hardware items | | GET/PUT/DELETE | `/data/hardware-items/{id}` | CRUD hardware item | ## Budgets & Scheduling | Method | Path | Description | |--------|------|-------------| | GET/POST | `/data/projects/{id}/budgets` | Project budgets | | GET | `/data/projects/{id}/budgets/time-spents` | Budget time spents | | GET/PUT/DELETE | `/data/projects/{id}/budgets/{bid}` | CRUD budget | | GET/POST | `/data/projects/{id}/budgets/{bid}/entries` | Budget entries | | GET/PUT/DELETE | `/data/projects/{id}/budgets/{bid}/entries/{eid}` | CRUD entry | | GET/POST | `/data/milestones/` | Milestones | | GET/PUT/DELETE | `/data/milestones/{id}` | CRUD milestone | | GET | `/data/projects/{id}/milestones` | Project milestones | | GET/POST | `/data/schedule-items/` | Schedule items | | GET/PUT/DELETE | `/data/schedule-items/{id}` | CRUD schedule item | | GET | `/data/projects/{id}/schedule-items` | Project schedule items | | GET | `/data/projects/{id}/schedule-items/task-types` | Schedule by task type | | GET | `/data/projects/{id}/schedule-items/{tt_id}/asset-types` | By asset type | | GET | `/data/projects/{id}/schedule-items/{tt_id}/episodes` | By episode | | GET | `/data/projects/{id}/schedule-items/{tt_id}/sequences` | By sequence | | GET/POST | `/data/production-schedule-versions` | Schedule versions | | GET/PUT/DELETE | `/data/production-schedule-versions/{id}` | CRUD version | | GET | `/data/production-schedule-versions/{id}/task-links` | Version task links | | GET/POST | `/data/production-schedule-version-task-links` | Task links | | GET/PUT/DELETE | `/data/production-schedule-version-task-links/{id}` | CRUD task link | | POST | `/actions/production-schedule-versions/{id}/apply-to-production` | Apply schedule | | POST | `/actions/production-schedule-versions/{id}/set-task-links-from-production` | Sync from prod | | POST | `/actions/production-schedule-versions/{id}/set-task-links-from-production-schedule-version` | Sync from version | ## Media Files ### Pictures | Method | Path | Description | |--------|------|-------------| | POST | `/pictures/preview-files/{id}` | Upload preview image | | GET | `/pictures/originals/preview-files/{id}.png` | Original PNG | | GET | `/pictures/originals/preview-files/{id}.{ext}` | Original (any ext) | | GET | `/pictures/originals/preview-files/{id}/download` | Download original | | GET | `/pictures/previews/preview-files/{id}.png` | Preview size | | GET | `/pictures/thumbnails/preview-files/{id}.png` | Thumbnail | | GET | `/pictures/thumbnails-square/preview-files/{id}.png` | Square thumbnail | | GET | `/pictures/thumbnails/attachment-files/{id}.png` | Attachment thumbnail | | GET/POST | `/pictures/thumbnails/persons/{id}` | Person avatar | | GET/POST | `/pictures/thumbnails/persons/{id}.png` | Person avatar PNG | | GET/POST | `/pictures/thumbnails/projects/{id}` | Project thumbnail | | GET/POST | `/pictures/thumbnails/projects/{id}.png` | Project thumbnail PNG | | GET/POST | `/pictures/thumbnails/organisations/{id}` | Org thumbnail | | GET/POST | `/pictures/thumbnails/organisations/{id}.png` | Org thumbnail PNG | | POST | `/pictures/preview-background-files/{id}` | Upload BG file | | GET | `/pictures/preview-background-files/{id}.{ext}` | Get BG file | | GET/POST | `/pictures/thumbnails/preview-background-files/{id}.png` | BG thumbnail | ### Movies | Method | Path | Description | |--------|------|-------------| | GET | `/movies/originals/preview-files/{id}.mp4` | Original movie | | GET | `/movies/originals/preview-files/{id}/download` | Download movie | | GET | `/movies/low/preview-files/{id}.mp4` | Low-res movie | | GET | `/movies/tiles/preview-files/{id}.png` | Movie tile strip |