---
title: "Video Engine Generate"
method: POST
path: "/api/admin/video/generate"
tags: ["Admin"]
---

# Video Engine Generate

`POST /api/admin/video/generate`

## Request

- Base URL: `https://api.xfinlab.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xfinlab.com/api/admin/video/generate`
- Auth: none declared

Growth OS Phase 7 -- on-demand "Generate Now" trigger for the admin
panel, so this can be tested/verified before wiring any automatic
daily schedule. Gated by the video_engine flag (default OFF) on top
of the admin-token check -- this is the heaviest single operation in
Growth OS (TTS calls + ffmpeg render), so it must never run from a
stale/cached admin.html session if the feature's been intentionally
turned off. Runs synchronously and returns the result dict as-is
(including a graceful {"available": False, "message": ...} if TTS or
ffmpeg isn't actually configured on this deploy).

2026-08-04 v2: lang/aspect_ratio/theme are now real choices (see
services/video_engine_service.py's _SCRIPT/_ASPECT_RATIOS/_THEMES).
post_to_telegram defaults to False and is an explicit per-click admin
opt-in, not automatic -- repeatedly clicking Generate Now while
testing shouldn't quietly spam a live public channel every time;
the admin has to tick the box each time they actually want that.

2026-10-01 (AJ: "加可選GEN不同資產，佢日日都一樣果3隻" -- the daily video
always used whatever _compute_free_signals() auto-ranked top today,
which on a quiet market can repeat the same handful of tickers for
days): `tickers` is an optional comma-separated list (e.g.
"NVDA,BTC-USD,GC=F"). Blank (the default, and what the unattended
daily schedule still passes) keeps the original auto-picked
today's-top-signals behavior unchanged -- see
services/video_engine_service.py's generate_daily_video()/
_build_custom_signals() docstrings.

## Query parameters

- `token` string, required
- `lang` string
- `aspect_ratio` string
- `theme` string
- `post_to_telegram` boolean
- `upload_to_youtube` boolean
- `tickers` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/xfinlab/apis/xfinlab-api.md) · [All operations](https://skmtc.dev/xfinlab/apis/xfinlab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/xfinlab/apis/xfinlab-api/revisions/205f85614bc6?raw)
