NebiusForge
Model CatalogTrainingAgentsDocsStatusAccountSign in
← Back to catalog
General·custom_container·stability-ai-non-commercial-research-community·Added May 17, 2026

Stable Video Diffusion XT

Stable Video Diffusion XT image-to-video generation through the Forge Diffusers media wrapper. It is an older but still widely referenced image-to-video baseline and gives Forge a lightweight SVD comparison point.

image→video
video-generationimage-to-videodiffusionstable-video-diffusion+1
Try in playground ↓Deploy Serverless ↓Open Hugging Face model ↗API docs
Selected targetL40S in eu-north1Using your requested verified target. Playground and API docs links stay pinned to it until you choose another GPU or region.
VRAM needed
≥16 GB

Configured minimum GPU memory.

API route
POST /v1/inference/stabilityai-stable-video-diffusion
Weights dtype
FP16

After the last request a backend stays warm on its GPU for about 15 minutes, then frees the GPU. The next request triggers a fresh cold start.

Status
cold
Not running.
API target

stabilityai-stable-video-diffusion version img2vid-xt-diffusers on L40S in eu-north1

POST to the native route with the shown model field; the playground below generates a full payload.

Open docsTry target
API route
/v1/inference/stabilityai-stable-video-diffusion
HTTP method
POST
Model field
stabilityai-stable-video-diffusion
Version field
model_version: img2vid-xt-diffusers
GPU field
gpu_type: L40S
Region field
region: eu-north1
  1. 1Verify targetRuns the auth guard and selected endpoint/model/routing check.
  2. 2Validate targetConfirm the selected GPU or region is still verified, or print copyable best-target exports.
  3. 3Estimate runValidate warm and first-cold request cost before prewarming or first traffic.
  4. 4Check runtimeConfirm whether the selected version is warm or starting.
  5. 5Prewarm targetStart the selected version on its pinned GPU or region before latency-sensitive traffic.
  6. 6Open docsUse the selected target snippets for the first request.Open docs
One-block API check

Terminal-ready smoke test for this selected target.

View command
set -euo pipefail
# Forge API smoke test
# Forge selected target: route=/v1/models/stabilityai-stable-video-diffusion/inference-routes model=stabilityai-stable-video-diffusion version=img2vid-xt-diffusers gpu=L40S region=eu-north1
FORGE_API_BASE=${FORGE_API_BASE:-'https://YOUR_FORGE_HOST'}
case "${FORGE_API_KEY:-}" in
  ""|replace-with-your-forge-api-key)
    echo 'Set FORGE_API_KEY to a real Forge API key before running this snippet; browser SSO sessions are not sent to copied curl or SDK clients.' >&2
    exit 1
    ;;
esac
forge_api_url() {
  endpoint="$1"
  base="${FORGE_API_BASE%/}"
  case "$base:$endpoint" in
    */v1:/v1|*/v1:/v1/*|*/v1:/v1\?*) printf '%s%s\n' "$base" "${endpoint#/v1}" ;;
    *) printf '%s%s\n' "$base" "$endpoint" ;;
  esac
}
curl -sS --fail-with-body "$(forge_api_url '/v1/models/stabilityai-stable-video-diffusion/inference-routes?model_version=img2vid-xt-diffusers&gpu_type=L40S&region=eu-north1')" \
  --max-time "${FORGE_REQUEST_TIMEOUT_SECONDS:-600}" \
  -H "Authorization: Bearer ${FORGE_API_KEY}" | \
python3 -m json.tool
Client fit

Native route check · Best for model-specific payloads; run the route check first, then copy the schema-specific request from the playground.

Routing pinned

Copied snippets include gpu_type and region, so the first request targets this verified GPU and region. Remove those fields to let Forge choose another compatible target.

Target availability

7 free GPUs · Live capacity for L40S in eu-north1.

Request URL
https://YOUR_FORGE_HOST/v1/inference/stabilityai-stable-video-diffusion
Authentication

Client auth: Set FORGE_API_KEY to a real Forge API key before running copied curl, fetch, or SDK snippets. Browser SSO only authenticates this web session.

Open Account
Authorization: Bearer $FORGE_API_KEY
Pinned setup
export FORGE_API_BASE='https://YOUR_FORGE_HOST'
export FORGE_API_KEY="${FORGE_API_KEY:-replace-with-your-forge-api-key}"
export FORGE_REQUEST_TIMEOUT_SECONDS="${FORGE_REQUEST_TIMEOUT_SECONDS:-600}"
export FORGE_API_ROUTE='/v1/inference/stabilityai-stable-video-diffusion'
export MODEL_OR_FAMILY_SLUG='stabilityai-stable-video-diffusion'
export FORGE_MODEL_VERSION='img2vid-xt-diffusers'
export FORGE_GPU_TYPE='L40S'
export FORGE_REGION='eu-north1'
Project .env

Copy these values into a local .env file when moving the selected target into an app or SDK client.

# Forge selected target: route=/v1/inference/stabilityai-stable-video-diffusion model=stabilityai-stable-video-diffusion version=img2vid-xt-diffusers gpu=L40S region=eu-north1
FORGE_API_BASE="https://YOUR_FORGE_HOST"
FORGE_API_ROUTE="/v1/inference/stabilityai-stable-video-diffusion"
FORGE_API_KEY="replace-with-your-forge-api-key"
FORGE_REQUEST_TIMEOUT_SECONDS="600"
MODEL_OR_FAMILY_SLUG="stabilityai-stable-video-diffusion"
FORGE_MODEL_VERSION="img2vid-xt-diffusers"
FORGE_GPU_TYPE="L40S"
FORGE_REGION="eu-north1"
Project .gitignore

Add these rules before replacing the placeholder API key so local Forge secrets stay out of commits while .env.example can remain tracked.

# Forge local API secrets
.env
.env.*
!.env.example
Preflight URLs and commands
Run estimate URL
https://YOUR_FORGE_HOST/v1/models/stabilityai-stable-video-diffusion/run-estimate?model_version=img2vid-xt-diffusers&gpu_type=L40S&region=eu-north1
Selected target reliability
set -euo pipefail # Forge selected target: route=/v1/inference/stabilityai-stable-video-diffusion model=stabilityai-stable-video-diffusion version=img2vid-xt-diffusers gpu=L40S region=eu-north1 FORGE_API_BASE=${FORGE_API_BASE:-'https://YOUR_FORGE_HOST'} export MODEL_OR_FAMILY_SLUG=${MODEL_OR_FAMILY_SLUG:-'stabilityai-stable-video-diffusion'} export FORGE_MODEL_VERSION=${FORGE_MODEL_VERSION:-'img2vid-xt-diffusers'} export FORGE_GPU_TYPE=${FORGE_GPU_TYPE:-'L40S'} export FORGE_REGION=${FORGE_REGION:-'eu-north1'} case "${FORGE_API_KEY:-}" in ""|replace-with-your-forge-api-key) echo 'Set FORGE_API_KEY to a real Forge API key before running this snippet; browser SSO sessions are not sent to copied curl or SDK clients.' >&2 exit 1 ;; esac forge_api_url() { endpoint="$1" base="${FORGE_API_BASE%/}" case "$base:$endpoint" in */v1:/v1|*/v1:/v1/*|*/v1:/v1\?*) printf '%s%s\n' "$base" "${endpoint#/v1}" ;; *) printf '%s%s\n' "$base" "$endpoint" ;; esac } reliability_path="$(python3 -c 'import os from urllib.parse import quote, urlencode model = os.environ.get("MODEL_OR_FAMILY_SLUG", "").strip() if not model: raise SystemExit("Set MODEL_OR_FAMILY_SLUG from search or route finder output before checking reliability.") params = {} model_version = os.environ.get("FORGE_MODEL_VERSION", "").strip() if model_version: params["model_version"] = model_version gpu_type = os.environ.get("FORGE_GPU_TYPE", "").strip() if gpu_type: params["gpu_type"] = gpu_type region = os.environ.get("FORGE_REGION", "").strip() if region: params["region"] = region path = "/v1/models/" + quote(model, safe="") + "/reliability" if params: path += "?" + urlencode(params) print(path)')" curl -sS --fail-with-body "$(forge_api_url "$reliability_path")" \ --max-time "${FORGE_REQUEST_TIMEOUT_SECONDS:-600}" \ -H "Authorization: Bearer ${FORGE_API_KEY}" | \ python3 -c 'import json, shlex, sys payload = json.load(sys.stdin) print( f"{payload.get('\''slug'\'')} reliability={payload.get('\''reliability_status'\'')} " f"supported={payload.get('\''supported_rows'\'', 0)}/{payload.get('\''total_rows'\'', 0)}" ) filters = payload.get("filters") or {} if filters: print("filters: " + ", ".join(f"{key}={value}" for key, value in filters.items())) def describe_target(target): details = [] request_ms = target.get("request_ms_p50") or target.get("request_ms") if request_ms is not None: details.append(f"p50={request_ms}ms") warm_cost = target.get("estimated_warm_request_cost_usd") if warm_cost is not None: details.append(f"warm_cost_usd={warm_cost}") elif target.get("cost_per_gpu_hour_usd") is not None: details.append(f"gpu_hour_usd={target['\''cost_per_gpu_hour_usd'\'']}") success_rate = target.get("observed_success_rate") if isinstance(success_rate, (int, float)): details.append(f"success={success_rate:.0%}") return ", ".join(details) or target.get("status") or "supported" exports = {} for label, key in ( ("fastest supported", "fastest_supported_target"), ("lowest-cost supported", "lowest_cost_supported_target"), ): target = payload.get(key) or {} gpu_type = target.get("gpu_type") if not gpu_type: continue identity = (str(gpu_type), str(target.get("region") or "")) exports.setdefault(identity, {"labels": [], "target": target})["labels"].append(label) if not exports: print("No supported GPU/region target returned.", file=sys.stderr) print(json.dumps({ "status_counts": payload.get("status_counts", {}), "failure_reason_counts": payload.get("failure_reason_counts", {}), }, indent=2)) raise SystemExit(1) for (gpu_type, region), entry in exports.items(): assignments = [f"FORGE_GPU_TYPE={shlex.quote(gpu_type)}"] if region: assignments.append(f"FORGE_REGION={shlex.quote(region)}") labels = " + ".join(entry["labels"]) details = describe_target(entry["target"]) print(f"export {'\'' '\''.join(assignments)} # {labels}: {details}")'
Runtime status URL
https://YOUR_FORGE_HOST/v1/model-families/stabilityai-stable-video-diffusion/status?version=img2vid-xt-diffusers
Runtime warmup command
set -euo pipefail # Forge selected target: route=/v1/inference/stabilityai-stable-video-diffusion model=stabilityai-stable-video-diffusion version=img2vid-xt-diffusers gpu=L40S region=eu-north1 FORGE_API_BASE=${FORGE_API_BASE:-'https://YOUR_FORGE_HOST'} export MODEL_OR_FAMILY_SLUG=${MODEL_OR_FAMILY_SLUG:-'stabilityai-stable-video-diffusion'} export FORGE_MODEL_VERSION=${FORGE_MODEL_VERSION:-'img2vid-xt-diffusers'} export FORGE_GPU_TYPE=${FORGE_GPU_TYPE:-'L40S'} export FORGE_REGION=${FORGE_REGION:-'eu-north1'} export FORGE_KEEP_WARM=${FORGE_KEEP_WARM:-false} case "${FORGE_API_KEY:-}" in ""|replace-with-your-forge-api-key) echo 'Set FORGE_API_KEY to a real Forge API key before running this snippet; browser SSO sessions are not sent to copied curl or SDK clients.' >&2 exit 1 ;; esac forge_api_url() { endpoint="$1" base="${FORGE_API_BASE%/}" case "$base:$endpoint" in */v1:/v1|*/v1:/v1/*|*/v1:/v1\?*) printf '%s%s\n' "$base" "${endpoint#/v1}" ;; *) printf '%s%s\n' "$base" "$endpoint" ;; esac } runtime_start_path="$(python3 -c 'import os from urllib.parse import quote model = os.environ.get("MODEL_OR_FAMILY_SLUG", "").strip() if not model: raise SystemExit("Set MODEL_OR_FAMILY_SLUG from the model picker output") print("/v1/model-families/" + quote(model, safe="") + "/start")')" python3 -c 'import json, os def env_value(name): value = os.environ.get(name, "").strip() return value or None payload = {} version = env_value("FORGE_MODEL_VERSION") if version: payload["version"] = version gpu_type = env_value("FORGE_GPU_TYPE") if gpu_type: payload["gpu_type"] = gpu_type region = env_value("FORGE_REGION") if region: payload["region"] = region keep_warm = env_value("FORGE_KEEP_WARM") payload["run_until_stopped"] = (keep_warm or "").lower() in {"1", "true", "yes", "on"} print(json.dumps(payload))' | \ curl -sS --fail-with-body "$(forge_api_url "$runtime_start_path")" \ --max-time "${FORGE_REQUEST_TIMEOUT_SECONDS:-600}" \ -X POST \ -H "Authorization: Bearer ${FORGE_API_KEY}" \ -H "Content-Type: application/json" \ -d @- | \ python3 -c 'import json, sys payload = json.load(sys.stdin) slug = payload.get("slug") or "runtime" gpu_type = payload.get("gpu_type") or "scheduler-selected GPU" region = payload.get("region") or "scheduler-selected region" startup_ms = payload.get("startup_ms") state = "cold-started" if payload.get("was_cold_start") else "already warm" suffix = f"; startup_ms={startup_ms}" if startup_ms is not None else "" print(f"{slug} {state} on {gpu_type} in {region}{suffix}; keep_warm={payload.get('\''keep_warm'\'')}")'

GPU performance

Pick a verified target for repeatable runs. Failed or pending details appear on the status hover.

Try selected target
Runs on · Image-to-Video XT Diffusers
· weights FP16 · floor 16 GB
Target readiness

5 verified targets

5/6 verified1 awaiting probe0 unavailable
Fastest verified
B200 in us-central1
Use in playground

Lowest warm model time among verified targets: 22.0s p50 warm model time across 1 sample.

Model time
22.0sp50 warm model time
1 sample
Cold start
7.0s
Most affordable
RTX6000 in us-central1
Use in playground

Lowest estimated GPU price among verified targets: $1.80/GPU-hr; 32.3s p50 warm model time across 1 sample.

Model time
32.3sp50 warm model time
1 sample
Cold start
6.3s
GPURegionStatusCold startModel timeRelativeEst. $/GPU-hrTarget
B200fastestus-central1works7.0s22.0sp50 warm model time
1 sample
100%$7.15Use in playground
B300uk-south1works5.1s27.6sp50 warm model time
1 sample
80% · -20%$7.85Use in playground
H100—not probed—————
H200eu-north2works5.5s25.3sp50 warm model time
1 sample
87% · -13%$4.50Use in playground
L40Seu-north1works15.3s1m 2sp50 warm model time
1 sample
36% · -64%$1.82Use in playground
RTX6000us-central1works6.3s32.3sp50 warm model time
1 sample
68% · -32%$1.80Use in playground
How we measure

Model time uses the p50 warm model-reported execution time when available, then falls back to the latest probe time; p95/p99 and sample count appear when there is enough probe history. Cold start excludes the first (uncached) run. VRAM is the peak GPU memory seen during the probe. Relative compares each row's model time to the highlighted baseline (fastest row by default; hover any row to re-root). The fastest chip marks only verified supported GPU-region rows. Estimated on-demand GPU price (Nebius pay-as-you-go); shown for performance/price comparison. Configured minimum GPU memory: 16 GB.

Try it out

cold·General
Open Account
Leave GPU on “Any available GPU” to use a warm or verified backend automatically.API docs for this target
Request targetRoute/v1/inference/stabilityai-stable-video-diffusionModelstabilityai-stable-video-diffusionVersionimg2vid-xt-diffusersGPUautomaticRegionautomatic

Inputs

API examples

Use the API

API docs

Snippet target: stabilityai-stable-video-diffusion version img2vid-xt-diffusers using scheduler-selected GPU/region.

Client auth: Set FORGE_API_KEY to a real Forge API key before running copied curl, fetch, or SDK snippets. Browser SSO only authenticates this web session.

Open Account
FORGE_API_BASE=${FORGE_API_BASE:-'https://YOUR_FORGE_HOST'}
case "${FORGE_API_KEY:-}" in
  ""|replace-with-your-forge-api-key)
    echo 'Set FORGE_API_KEY to a real Forge API key before running this snippet; browser SSO sessions are not sent to copied curl or SDK clients.' >&2
    exit 1
    ;;
esac
forge_api_url() {
  endpoint="$1"
  base="${FORGE_API_BASE%/}"
  case "$base:$endpoint" in
    */v1:/v1|*/v1:/v1/*|*/v1:/v1\?*) printf '%s%s\n' "$base" "${endpoint#/v1}" ;;
    *) printf '%s%s\n' "$base" "$endpoint" ;;
  esac
}
forge_print_response() {
  response_file="$1"
  if [ ! -s "$response_file" ]; then
    printf '%s\n' '(empty response)'
    return 0
  fi
  if command -v python3 >/dev/null 2>&1; then
    python3 -m json.tool "$response_file" 2>/dev/null || cat "$response_file"
  else
    cat "$response_file"
  fi
}
response_file="$(mktemp)"
if curl -sS --fail-with-body "$(forge_api_url '/v1/inference/stabilityai-stable-video-diffusion')" \
  --max-time "${FORGE_REQUEST_TIMEOUT_SECONDS:-600}" \
  -H "Authorization: Bearer ${FORGE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
  "fps": 7,
  "seed": 17,
  "image": "data:image/x-portable-pixmap;base64,UDYKMTYgMTYKMjU1ChRGvhxGuiRGtixGsjRGrjxGqkRGpkxGolRGnlxGmmRGlmxGknRGjnxGioRGhoxGghROvhxOuiROtixOsjROrjxOqkROpkxOolROnlxOmmROlmxOknROjnxOioROhoxOghRWvhxWuiRWtixWsjRWrjxWqkRWpkxWolRWnlxWmmRWlmxWknRWjnxWioRWhoxWghRevhxeuiRetixesjRerjxeqkRepkxeolRenlxemmRelmxeknRejnxeioRehoxeghRmvhxmuiRmtixmsjRmrjxmqkRmpkxmolRmnlxmmmRmlmxmknRmjnxmioRmhoxmghRuvhxuuiRutixusjRurtzw+tzw+tzw+tzw+tzw+tzw+tzw+nRujnxuioRuhoxughR2vhx2uiR2tix2sjR2rtzw+njmbnjmbnjmbnjmbnjmbtzw+nR2jnx2ioR2hox2ghR+vhx+uiR+tix+sjR+rtzw+njmbnjmbnjmbnjmbnjmbtzw+nR+jnx+ioR+hox+ghSGvhyGuiSGtiyGsjSGrtzw+njmbnjmbnjmbnjmbnjmbtzw+nSGjnyGioSGhoyGghSOvhyOuiSOtiyOsjSOrtzw+njmbnjmbnjmbnjmbnjmbtzw+nSOjnyOioSOhoyOghSWvhyWuiSWtiyWsjSWrtzw+njmbnjmbnjmbnjmbnjmbtzw+nSWjnyWioSWhoyWghSevhyeuiSetiyesjSertzw+tzw+tzw+tzw+tzw+tzw+tzw+nSejnyeioSehoyeghSmvhymuiSmtiymsjSmrjymqkSmpkymolSmnlymmmSmlmymknSmjnymioSmhoymghSuvhyuuiSutiyusjSurjyuqkSupkyuolSunlyummSulmyuknSujnyuioSuhoyughS2vhy2uiS2tiy2sjS2rjy2qkS2pky2olS2nly2mmS2lmy2knS2jny2ioS2hoy2ghS+vhy+uiS+tiy+sjS+rjy+qkS+pky+olS+nly+mmS+lmy+knS+jny+ioS+hoy+gg==",
  "width": 1024,
  "height": 576,
  "prompt": "Animate the input image with subtle cinematic camera motion",
  "num_frames": 25,
  "guidance_scale": 7.5,
  "num_inference_steps": 25,
  "model": "stabilityai-stable-video-diffusion",
  "model_version": "img2vid-xt-diffusers"
}' \
  -o "$response_file"; then
  forge_print_response "$response_file"
  status=$?
  rm -f "$response_file"
  (exit "$status")
else
  status=$?
  cat "$response_file" >&2
  rm -f "$response_file"
  (exit "$status")
fi
Setup & .env

Install for curl

Copy setup before the request when moving this snippet into a fresh shell. The default 600 second timeout is intentional for GPU cold starts and can be overridden with FORGE_REQUEST_TIMEOUT_SECONDS.

export FORGE_API_BASE='https://YOUR_FORGE_HOST'
export FORGE_API_KEY="${FORGE_API_KEY:-replace-with-your-forge-api-key}"
export FORGE_REQUEST_TIMEOUT_SECONDS="${FORGE_REQUEST_TIMEOUT_SECONDS:-600}"

Project .env

Copy these values into a local .env file when moving the selected target into an app or SDK client.

# Forge selected target: route=/v1/inference/stabilityai-stable-video-diffusion model=stabilityai-stable-video-diffusion version=img2vid-xt-diffusers
FORGE_API_BASE="https://YOUR_FORGE_HOST"
FORGE_API_ROUTE="/v1/inference/stabilityai-stable-video-diffusion"
FORGE_API_KEY="replace-with-your-forge-api-key"
FORGE_REQUEST_TIMEOUT_SECONDS="600"
MODEL_OR_FAMILY_SLUG="stabilityai-stable-video-diffusion"
FORGE_MODEL_VERSION="img2vid-xt-diffusers"
Output

Run a request to see output here.

Deploy to Nebius Serverless

Run a dedicated, autoscaling endpoint in your own Nebius account. The endpoint runs under your account and billing — Forge just pre-fills the configuration for you.

Deploy in your Nebius account ↗

Opens the Nebius Console with the image pre-filled for Stable Video Diffusion XT (Forge version Image-to-Video XT Diffusers).

Prefer to create the endpoint from the CLI, or self-manage the container image? Use the commands below.

The image is hosted on cr.eu-north1.nebius.cloud; you may need registry credentials in the Console form. The CLI below includes placeholders.

The links use Forge’s eu-north1 Nebius Container Registry mirror. If your project can’t pull that private mirror, add pull credentials or a registry secret.

nebius CLI
# Runs in YOUR Nebius account (you own + pay for the endpoint).
# platform/preset must exist in your project — list them with:
#   nebius compute platform list
export ENDPOINT_NAME="stabilityai-stable-video-diffusion-img2vid-xt-private"
export AUTH_TOKEN=$(openssl rand -hex 32)
export SUBNET_ID=$(nebius vpc subnet list --format jsonpath='{.items[0].metadata.id}')
export REGISTRY_USERNAME="YOUR_REGISTRY_USERNAME"
export REGISTRY_PASSWORD="YOUR_REGISTRY_PASSWORD"

# Note: the --image above points at Forge's regional Nebius CR mirror.
#   Serverless AI can pull Container Registry images without credentials
#   only when the image is public or in the same project. For a private
#   mirror in another project, provide pull credentials or a MysteryBox
#   registry secret with REGISTRY_USERNAME and REGISTRY_PASSWORD.

nebius ai endpoint create \
  --name "$ENDPOINT_NAME" \
  --image "cr.eu-north1.nebius.cloud/e00h91c5sa606xfwpj/models/forge-media-generation-diffusers:20260517-diffusers-v9" \
  --registry-username "$REGISTRY_USERNAME" \
  --registry-password "$REGISTRY_PASSWORD" \
  --container-port 8000 \
  --auth token \
  --token "$AUTH_TOKEN" \
  --subnet-id "$SUBNET_ID"

export ENDPOINT_ID=$(nebius ai endpoint get-by-name --name "$ENDPOINT_NAME" --format jsonpath='{.metadata.id}')
nebius ai endpoint get "$ENDPOINT_ID"

Need a throughput- and cost-optimized build tuned for specific Nebius GPUs? Nebius Token Factory is coming soon — contact your Nebius account team for early access.