API version 1 (GET /health → api_version). The engine listens on http://127.0.0.1:8765. How to call it, with examples and the gotchas, is in docs/API.md; what the labels promise is in API.
197 routes: 60 stable, 25 experimental, 112 internal.
| Label | Promise |
|---|---|
| stable | Documented as supported in docs/API.md. Changes only by adding; removing or reshaping it bumps the API version. Its request shape is pinned by tests/test_api_contract.py. |
| experimental | Meant for outside use, but its shape may still change in a release; every change is noted in CHANGELOG.md. |
| internal | Serves one screen of the desktop app and changes with it. Works, but depending on it is at your own risk. |
Details: docs/API.md › Readiness.
| Route | Label | What it is for |
|---|---|---|
GET /health |
stable | Liveness, app version and API version. |
GET /health/preflight |
stable | Whether a job can actually run here: FFmpeg, Ollama, model, Whisper, GPU, disk. |
GET /system/stats |
stable | CPU, memory, disk and GPU use. |
Details: docs/API.md › Submitting work.
| Route | Label | What it is for |
|---|---|---|
POST /jobs |
stable | Queue one link with its options. |
POST /jobs/batch |
stable | Queue several links, each with its own options; bad ones are reported, not fatal. |
GET /sports |
stable | The sports a job's sport option can name, with their choices. |
POST /videos/local |
stable | Queue a video file already on this computer. |
Details: docs/API.md › Watching progress.
| Route | Label | What it is for |
|---|---|---|
POST /cancel |
stable | Ask a running video to stop at its next stage boundary. |
GET /jobs |
stable | Every job, newest last (a bare array). |
DELETE /jobs/{job_id} |
stable | Remove a job. |
GET /jobs/{job_id} |
stable | One job. |
PATCH /jobs/{job_id} |
experimental | Change a queued job's options. |
GET /jobs/{job_id}/log |
stable | The job's own log file, last lines. |
POST /jobs/{job_id}/retry |
stable | Queue a failed job again with its original settings. |
POST /storage/cleanup |
experimental | Remove leftover partial downloads and other temporary files. |
Details: docs/API.md › The queue.
| Route | Label | What it is for |
|---|---|---|
GET /queue |
stable | The grouped queue the app shows, with capacity and estimate. |
POST /queue/pause |
stable | Stop claiming new work. |
POST /queue/resume |
stable | Start claiming work again. |
Details: docs/API.md › Results.
| Route | Label | What it is for |
|---|---|---|
GET /clips/{clip_id}/captions |
stable | A clip's caption lines, clip-relative. |
GET /clips/{clip_id}/words |
experimental | A clip's words with their times. |
GET /media/{clip_id} |
stable | A clip's video file. |
GET /videos |
stable | Every video in the library. |
GET /videos/{video_id}/clips |
stable | A video's clips with titles, scores and paths. |
Details: docs/API.md › Models and where the AI runs.
| Route | Label | What it is for |
|---|---|---|
GET /ai |
stable | Where the AI work runs: local or a cloud provider, and the providers offered. |
POST /ai/activate |
stable | Choose which model does the AI work. |
DELETE /ai/providers/{provider_id}/key |
stable | Delete a provider's stored key. |
PUT /ai/providers/{provider_id}/key |
stable | Check and keep a provider's API key. |
GET /ai/providers/{provider_id}/models |
stable | Models a provider offers for the job, with the user's key. |
POST /ai/providers/{provider_id}/test |
stable | Check key, reachability and model without spending tokens. |
POST /ai/transcription |
stable | Choose local Whisper or a provider for transcription. |
GET /models |
stable | Local models through Ollama, and which one is active. |
POST /models/activate |
stable | Choose the local model. |
POST /models/pull |
stable | Download a local model through Ollama. |
Details: docs/API.md › Languages and export.
| Route | Label | What it is for |
|---|---|---|
PATCH /clips/{clip_id} |
experimental | Change a clip's title, schedule and other fields. |
POST /clips/{clip_id}/export |
stable | Copy a clip to a folder. |
POST /export/batch |
stable | Copy several clips to a folder. |
GET /languages |
stable | Languages for captions and translation. |
POST /translate |
stable | Translate a clip's captions. |
Details: docs/API.md › Publishing to YouTube.
| Route | Label | What it is for |
|---|---|---|
GET /clips/{clip_id}/publish |
stable | A clip's publishing state. |
POST /clips/{clip_id}/publish |
stable | Publish one clip. |
GET /youtube/status |
stable | Whether publishing is available and connected. |
Details: docs/API.md › Streamer integrations.
| Route | Label | What it is for |
|---|---|---|
POST /clips/{clip_id}/thumbnail |
experimental | Choose a clip's thumbnail. |
POST /clips/{clip_id}/thumbnail/generate |
stable | Make thumbnail candidates from the clip's frames. |
GET /clips/{clip_id}/thumbnail/generated/{index} |
stable | One generated thumbnail candidate. |
GET /integrations/presets |
stable | Presets a dock can offer. |
POST /integrations/streams |
stable | Hand over a finished livestream to be clipped when its VOD appears. |
DELETE /integrations/streams/{session_id} |
stable | Stop waiting for a stream. |
GET /integrations/streams/{session_id} |
stable | A handed-over stream's progress. |
POST /integrations/streams/{session_id}/link |
stable | Give the stream's VOD link by hand. |
POST /publish/plan |
stable | Plan a batch of uploads without doing them. |
POST /publish/plan/execute |
stable | Carry out a plan. |
Details: docs/API.md › Watched channels.
| Route | Label | What it is for |
|---|---|---|
GET /automation |
stable | Watched-channel settings. |
PATCH /automation |
stable | Change watched-channel settings. |
GET /automation/activity |
stable | What the watches did recently. |
GET /automation/items |
stable | Videos a watch found. |
POST /automation/items/{item_id}/publish |
stable | Publish a found video's clips. |
POST /automation/items/{item_id}/queue |
stable | Clip a found video. |
POST /automation/items/{item_id}/skip |
stable | Skip a found video. |
GET /automation/slots |
stable | Upcoming publishing slots. |
GET /automation/watches |
stable | Every watch. |
POST /automation/watches |
stable | Watch a channel. |
DELETE /automation/watches/{watch_id} |
stable | Stop watching. |
PATCH /automation/watches/{watch_id} |
stable | Change a watch. |
POST /automation/watches/{watch_id}/check |
stable | Check a watch now. |
Details: docs/API.md › WebSocket events.
| Route | Label | What it is for |
|---|---|---|
WS /ws |
stable | Job, progress, queue, model and publishing events. |
Details: docs/API.md › Plugins.
| Route | Label | What it is for |
|---|---|---|
GET /marketplace |
experimental | Listed plugins from the registry indexes, searched and filtered, with what is installed. |
GET /marketplace/catalog |
experimental | Awesome Clips Kitty's entries built with Clips Kitty (integrations, apps and tools), searched, with their sections, labels and numbers. |
GET /marketplace/counting |
experimental | Whether installs from the Marketplace are counted, and what counting sends. |
PUT /marketplace/counting |
experimental | Switch install counting on or off for this PC. Session header. |
GET /marketplace/online |
experimental | Whether the Marketplace checks Clips Kitty's online list by itself, when it last fetched it and how the last try went. |
PUT /marketplace/online |
experimental | Switch the Marketplace's automatic checks of Clips Kitty's online list on or off for this PC. Session header. |
POST /marketplace/refresh |
experimental | Fetch Clips Kitty's online list and the registry index addresses set in settings into the cache; automatic: the online list only, when a day old. Session header. |
GET /plugin-models |
experimental | Every model the installed plugins list, once: where it is, its licence and size, and which plugins use it. |
POST /plugin-models/download |
experimental | Download one plugin's model into the shared model folder, checked against its size and SHA-256. Session header. |
POST /plugin-models/plan |
experimental | What downloading one plugin's model would fetch, from Hugging Face's metadata; downloads nothing. Session header. |
GET /plugins |
experimental | Installed plugins with their versions, permissions and state, and the built-in modes. |
POST /plugins/install |
experimental | Install what a plan fetched. Session header. |
POST /plugins/plan |
experimental | Fetch a plugin from a folder or a Git commit and say what installing it would do, with the install screen as text. Session header. |
DELETE /plugins/{publisher}/{name} |
experimental | Remove a plugin, its files and its stored keys. Session header. |
POST /plugins/{publisher}/{name}/disable |
experimental | Turn a plugin off. Session header. |
POST /plugins/{publisher}/{name}/enable |
experimental | Turn a plugin on. Session header. |
POST /plugins/{publisher}/{name}/pin |
experimental | Stop update offers for a plugin. Session header. |
POST /plugins/{publisher}/{name}/rollback |
experimental | Go back to the version installed before. Session header. |
PUT /plugins/{publisher}/{name}/secrets |
experimental | Store a plugin's secret settings. Session header. |
POST /plugins/{publisher}/{name}/unpin |
experimental | Offer a plugin's updates again. Session header. |
Everything else. Grouped by the first part of the path; the module is where it is defined.
| Area | Routes | Module |
|---|---|---|
/agent |
POST /agent/chatGET /agent/status |
server.api |
/ai |
GET /ai/providers/{provider_id}/callback/{state}POST /ai/providers/{provider_id}/connectPOST /ai/providers/{provider_id}/stt-checkGET /ai/signin/{provider_id}POST /ai/signin/{provider_id}/automationPOST /ai/signin/{provider_id}/cancelGET /ai/signin/{provider_id}/modelsPOST /ai/signin/{provider_id}/sign-outPOST /ai/signin/{provider_id}/startPOST /ai/signin/{provider_id}/test |
server.ai_api |
/branding |
GET /brandingPOST /brandingPOST /branding/assetGET /branding/asset/{name}DELETE /branding/{profile_id}PUT /branding/{profile_id} |
server.api |
/clips |
DELETE /clips/{clip_id}POST /clips/{clip_id}/ai-editPUT /clips/{clip_id}/captionsGET /clips/{clip_id}/creator-gaming-layoutPUT /clips/{clip_id}/creator-gaming-layoutGET /clips/{clip_id}/frameGET /clips/{clip_id}/glossaryPOST /clips/{clip_id}/glossaryGET /clips/{clip_id}/panelsGET /clips/{clip_id}/peoplePOST /clips/{clip_id}/previewPOST /clips/{clip_id}/renderGET /clips/{clip_id}/snapGET /clips/{clip_id}/source-framePOST /clips/{clip_id}/tightenGET /clips/{clip_id}/translationsDELETE /clips/{clip_id}/translations/{language}PUT /clips/{clip_id}/translations/{language} |
server.api, server.youtube_api |
/creators |
GET /creatorsPOST /creators/mergePOST /creators/split/{account_id}DELETE /creators/{creator_id}GET /creators/{creator_id}POST /creators/{creator_id}/accountsPOST /creators/{creator_id}/brandingDELETE /creators/{creator_id}/knowledgeDELETE /creators/{creator_id}/knowledge/{knowledge_id}POST /creators/{creator_id}/learningDELETE /creators/{creator_id}/memory |
server.api |
/feedback |
GET /feedback/diagnosticsPOST /feedback/submit |
server.api |
/jobs |
POST /jobs/{job_id}/move |
server.api |
/media |
GET /media/preview/{clip_id} |
server.api |
/models |
GET /models/pullsDELETE /models/{tag:path} |
server.api |
/publish |
POST /publish/{job_id}/cancel |
server.youtube_api |
/queue |
POST /queue/clear |
server.api |
/remote-render |
GET /remote-renderPUT /remote-renderPOST /remote-render/jobs/{job_id}/retryPOST /remote-render/pairing-codePUT /remote-render/this-pcPOST /remote-render/this-pc/unpairPOST /remote-render/videos/{video_id}/render-locallyDELETE /remote-render/workers/{worker_id}POST /remote-render/workers/{worker_id}/hold |
remote_render.service |
/settings |
GET /settingsPATCH /settings |
server.api |
/sources |
GET /sources/frameGET /sources/peopleGET /sources/snapGET /sources/suggest |
server.api |
/storage |
GET /storageGET /storage/videos |
server.api |
/uploadpost |
POST /uploadpost/batchGET /uploadpost/capabilitiesGET /uploadpost/clips/{clip_id}POST /uploadpost/clips/{clip_id}/publishPOST /uploadpost/connectGET /uploadpost/connectionsDELETE /uploadpost/keyPUT /uploadpost/keyGET /uploadpost/profilesPOST /uploadpost/refresh/{request_id}POST /uploadpost/retry/{request_id}PATCH /uploadpost/settingsGET /uploadpost/status |
server.uploadpost_api |
/videos |
GET /videos/local/shapeDELETE /videos/{video_id} |
server.api |
/voices |
GET /voicesGET /voices/preview |
server.api |
/woopsocial |
POST /woopsocial/batchPOST /woopsocial/batch/planPOST /woopsocial/clips/{clip_id}/publishPOST /woopsocial/connectGET /woopsocial/connectionsGET /woopsocial/in-flightDELETE /woopsocial/keyPUT /woopsocial/keyPOST /woopsocial/refreshPOST /woopsocial/refresh/{post_id}GET /woopsocial/schedulePATCH /woopsocial/settingsGET /woopsocial/status |
server.woopsocial_api |
/youtube |
GET /youtube/categoriesGET /youtube/connectPOST /youtube/connectDELETE /youtube/credentialsPUT /youtube/credentialsPATCH /youtube/default-accountPOST /youtube/disconnectGET /youtube/playlistsPATCH /youtube/settingsGET /youtube/uploads |
server.youtube_api |