# Video Generation API Guide This document explains how to use the video generation API endpoint to create animated outputs in **GIF**, **WebM**, or **ZIP (PNG frames)** format. It includes request structure, parameter explanations, and copy‑paste curl commands for testing. --- ## Base Endpoint ``` https://cyjm1rsdzy6la31w.us-east-1.aws.endpoints.huggingface.cloud ``` --- ## Authentication All requests require a Hugging Face access token. Add this header to every request: ``` Authorization: Bearer YOUR_HF_TOKEN ``` --- ## Request Structure Requests must be wrapped inside an `"inputs"` object: ```json { "inputs": { "prompt": "your prompt here", "outputs": ["gif"] } } ``` --- ## Core Request Parameters | Parameter | Type | Default | Description | |----------|------|---------|-------------| | `prompt` | string | required | Text description of the video. | | `negative_prompt` | string | "" | What to avoid in the output. | | `num_frames` | int | 32 | Total frames generated. | | `fps` | int | 12 | Playback speed (GIF/WebM). | | `height` | int | 512 | Frame height. | | `width` | int | 512 | Frame width. | | `seed` | int | null | Reproducibility. | | `outputs` | array | ["gif"] | Any of: `"gif"`, `"webm"`, `"zip"`. | | `return_base64` | bool | true | Returns base64 file data in JSON. | | `num_inference_steps` | int | 30 | Quality vs speed tradeoff. | | `guidance_scale` | float | 7.5 | Prompt adherence strength. | --- ## Output Configuration ### GIF Options ```json "gif": { "fps": 10 } ``` ### WebM Options ```json "webm": { "fps": 24, "quality": "good" } ``` Quality levels: - `"fast"` — fastest encoding - `"good"` — balanced (recommended) - `"best"` — highest quality, slower ### ZIP Output ZIP always contains PNG frames: ``` frame_000000.png frame_000001.png ... ``` --- ## Response Format Successful response: ```json { "ok": true, "outputs": { "gif_base64": "...", "webm_base64": "...", "zip_base64": "..." } } ``` Error response: ```json { "ok": false, "error": "message" } ``` --- ## Best Practices - Use `jq -er` when decoding base64 to prevent corrupted files - Start with 16–32 frames for fast testing - Use WebM for high quality playback - Use ZIP when post‑processing frames externally --- # Example curl Commands These commands save files **directly** without storing JSON. Replace `YOUR_HF_TOKEN`. --- ## GIF Test ```bash curl -sS -X POST "https://cyjm1rsdzy6la31w.us-east-1.aws.endpoints.huggingface.cloud" \ -H "Authorization: Bearer YOUR_HF_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "prompt": "cinematic sunset over mountains", "num_frames": 20, "fps": 10, "outputs": ["gif"] } }' \ | jq -er '.outputs.gif_base64' \ | base64 --decode > output.gif ``` --- ## WebM Test ```bash curl -sS -X POST "https://cyjm1rsdzy6la31w.us-east-1.aws.endpoints.huggingface.cloud" \ -H "Authorization: Bearer YOUR_HF_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "prompt": "drone flying through clouds", "num_frames": 32, "fps": 24, "outputs": ["webm"], "webm": { "quality": "good" } } }' \ | jq -er '.outputs.webm_base64' \ | base64 --decode > output.webm ``` --- ## ZIP Frames Test ```bash curl -sS -X POST "https://cyjm1rsdzy6la31w.us-east-1.aws.endpoints.huggingface.cloud" \ -H "Authorization: Bearer YOUR_HF_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "prompt": "ocean waves crashing", "num_frames": 16, "outputs": ["zip"] } }' \ | jq -er '.outputs.zip_base64' \ | base64 --decode > frames.zip ``` Unzip: ```bash unzip frames.zip ``` --- ## Multiple Outputs Test ```bash curl -sS -X POST "https://cyjm1rsdzy6la31w.us-east-1.aws.endpoints.huggingface.cloud" \ -H "Authorization: Bearer YOUR_HF_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "prompt": "cinematic space nebula", "num_frames": 24, "fps": 12, "outputs": ["gif", "webm", "zip"], "webm": { "quality": "good" } } }' \ -o response.json ``` Extract: ```bash jq -er '.outputs.gif_base64' response.json | base64 --decode > output.gif jq -er '.outputs.webm_base64' response.json | base64 --decode > output.webm jq -er '.outputs.zip_base64' response.json | base64 --decode > frames.zip ``` --- ## Troubleshooting ### Corrupted Files Inspect JSON first: ```bash jq . response.json ``` Ensure: ``` "ok": true ``` ### Large Outputs Reduce: - `num_frames` - resolution Or upload files to cloud storage and return a download URL. --- ## Suggested Defaults ``` num_frames: 24–32 fps: 12 (GIF) / 24 (WebM) resolution: 512x512 quality: "good" ```