Install
openclaw skills install @jb-fliz/fliz-ai-video-generatorComplete integration guide for the Fliz REST API - an AI-powered video generation platform that transforms text content into professional videos with voiceovers, AI-generated images, and subtitles. Use this skill when: Creating integrations with Fliz API (WordPress, Zapier, Make, n8n, custom apps) Building video generation workflows via API Implementing webhook handlers for video completion notifications Developing automation tools that create, manage, or translate videos Troubleshooting Fliz API errors or authentication issues Understanding video processing steps and status polling Key capabilities: video creation from text/Brief, video status monitoring, translation, duplication, voice/music listing, webhook notifications.
openclaw skills install @jb-fliz/fliz-ai-video-generatorTransform text content into AI-generated videos programmatically.
| Item | Value |
|---|---|
| Base URL | https://app.fliz.ai |
| Auth | Bearer Token (JWT) |
| Get Token | https://app.fliz.ai/api-keys |
| API Docs | https://app.fliz.ai/api-docs |
| Format | JSON |
All requests require Bearer token authentication:
curl -X GET "https://app.fliz.ai/api/rest/voices" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
Test connection by calling GET /api/rest/voices - returns 200 if token is valid.
POST /api/rest/video
Minimal request:
{
"fliz_video_create_input": {
"name": "Video Title",
"description": "Full content text to transform into video",
"format": "size_16_9",
"lang": "en"
}
}
Response:
{
"fliz_video_create": {
"video_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
}
}
CRITICAL: The
descriptionfield must contain the FULL TEXT content. Fliz does NOT extract content from URLs - upstream systems must fetch/process content first.
GET /api/rest/videos/{id}
Poll this endpoint to track video generation progress. Check the step field:
| Step | Status |
|---|---|
pending → scrapping → script → image_* → speech → video_rendering | Processing |
complete | ✅ Ready - url field contains MP4 |
failed / failed_unrecoverable | ❌ Error - check error field |
user_action | ⚠️ Requires manual intervention |
GET /api/rest/videos?limit=20&offset=0
POST /api/rest/videos/{from_video_id}/translate?new_lang=fr
Creates a new video in the target language.
POST /api/rest/videos/{from_video_id}/duplicate
GET /api/rest/voices
GET /api/rest/musics
name (string): Video titledescription (string): Full text contentformat (enum): size_16_9 | size_9_16 | squarelang (string): ISO 639-1 code (en, fr, es, de, pt, etc.)| Field | Description | Default |
|---|---|---|
category | article | product | ad | article |
script_style | Narrative style | auto |
image_style | Visual style | hyperrealistic |
caption_style | Subtitle style | animated_background |
caption_position | bottom | center | bottom |
caption_font | Font family | poppins |
caption_color | Hex color (#FFFFFF) | white |
caption_uppercase | Boolean | false |
voice_id | Custom voice ID | auto |
is_male_voice | Boolean | auto |
music_id | Music track ID | auto |
music_url | Custom music URL | null |
music_volume | 0-100 | 15 |
watermark_url | Image URL | null |
site_url | CTA URL | null |
site_name | CTA text | null |
webhook_url | Callback URL | null |
is_automatic | Auto-process | true |
video_animation_mode | full_video | hook_only | full_video |
image_urls | Array of URLs | null |
Note: For
productandadcategories,image_urlsis required (3-10 images).
For complete enum values, see references/enums-values.md.
Configure webhook_url to receive notifications when video is ready or fails:
{
"event": "video.complete",
"video_id": "a1b2c3d4-...",
"step": "complete",
"url": "https://cdn.fliz.ai/videos/xxx.mp4"
}
| HTTP Code | Meaning | Action |
|---|---|---|
| 200 | Success | Continue |
| 400 | Bad Request | Check params |
| 401 | Unauthorized | Invalid/expired token |
| 404 | Not Found | Invalid video ID |
| 429 | Rate Limited | Retry with backoff |
| 500 | Server Error | Retry later |
1. POST /api/rest/video → get video_id
2. Loop: GET /api/rest/videos/{id}
- If step == "complete": done, get url
- If step contains "failed": error
- Else: wait 10-30s, retry
1. POST /api/rest/video with webhook_url
2. Process webhook callback when received
See assets/examples/ for ready-to-use implementations:
python_client.py - Full Python wrappernodejs_client.js - Node.js implementationcurl_examples.sh - cURL commandswebhook_handler.py - Flask webhook server| Script | Usage |
|---|---|
scripts/test_connection.py | Validate API key |
scripts/create_video.py | Create video from text file |
scripts/poll_status.py | Monitor video generation |
scripts/list_resources.py | Fetch voices/musics |
Run with: python scripts/<script>.py --api-key YOUR_KEY
"Invalid API response": Verify JSON structure matches documentation exactly.
Video stuck in processing: Check step field - some steps like user_action require manual intervention in Fliz dashboard.
No URL extraction: The API requires direct text input. Build content extraction into your integration.