Files
CalamitousFelicitousness ff42f1631c feat(api): add video generation endpoint
Add POST /sdapi/v1/video plus GET /sdapi/v1/video/models and
GET /sdapi/v1/video/file. The generation body is extracted from the
gradio handler into a keyword-only core, video_run.run, which returns a
structured result and raises typed errors; the positional generate
signature is unchanged and now adapts to the core. Omitting engine and
model drives the currently loaded checkpoint when it is video-capable,
which covers models loaded from local folders without a registry entry.

- registry helpers in models_def (find, engines, pipeline_classes,
  workflow_for_class); validate_pipeline reuses the shared class set
- modular pipes stamp their workflow so out-of-registry loads dispatch
  onto the modular branch
- disk switches (mp4_*) and wire switches (send_*) are independent;
  artifacts above the base64 cap fall back to path plus the file route,
  which is jailed to the video output directory and serves video/mp4
  with range support
- always-on video scripts get bootstrapped default args, matching the
  txt2img handler; missing bootstrap raised a TypeError per frame
- checkpoint overrides are rejected with a pointer to the checkpoint
  endpoint; unknown engine, model and sampler names return 404 with the
  valid choices
- cli/api-video.py client, test/test-video-api.py suite and a
  full-test.sh entry; video mimetypes registered; rate-limit cost set
- remove the unreferenced video_ui.run_video dispatcher
2026-08-10 22:14:18 +01:00

37 lines
1.5 KiB
Bash

#!/usr/bin/env bash
node cli/api-txt2img.js
node cli/api-pulid.js
source venv/bin/activate
echo image-exif
python cli/api-info.py --input ui/assets/logo-bg-0.jpg
echo txt2img
python cli/api-txt2img.py --detailer --prompt "girl on a mountain" --seed 42 --sampler DEIS --width 1280 --height 800 --steps 10
echo img2img
python cli/api-img2img.py --init ui/assets/logo-bg-0.jpg --steps 10
echo inpaint
python cli/api-img2img.py --init ui/assets/logo-bg-0.jpg --mask ui/assets/logo-dark.png --steps 10
echo upscale
python cli/api-upscale.py --input ui/assets/logo-bg-0.jpg --upscaler "ESRGAN 4x Valar" --scale 4
echo vqa
python cli/api-vqa.py --input ui/assets/logo-bg-0.jpg
echo detailer
python cli/api-detect.py --image html/invoked.jpg
echo faceid
python cli/api-faceid.py --face html/simple-dark.jpg
echo control-txt2img
python cli/api-control.py --prompt "cute robot"
echo control-img2img
python cli/api-control.py --prompt "cute robot" --input ui/assets/logo-bg-0.jpg
echo control-ipsadapter
python cli/api-control.py --prompt "cute robot" --ipadapter "Base SDXL:ui/assets/logo-bg-0.jpg:0.8"
echo control-preprocess
python cli/api-preprocess.py --input ui/assets/logo-bg-0.jpg --model "Zoe Depth"
echo control-controlnet
python cli/api-control.py --prompt "cute robot" --input ui/assets/logo-bg-0.jpg --type controlnet --control "Zoe Depth:Xinsir Union XL:0.5"
echo video-models
python cli/api-video.py --list
echo video
python cli/api-video.py --prompt "a paper boat drifting down a rain gutter" --frames 17 --steps 8 --output /tmp/sdnext-test-video.mp4