SkyReels V4
Submit asynchronous SkyReels V4 video-generation tasks through BeansAI with text, image, and omni video references.
Overview
SkyReels exposes native submit endpoints such as POST /api/v1/video/text2video/submit, POST /api/v1/video/image2video/submit, and POST /api/v1/video/omni-video/submit. Task polling uses the matching GET /api/v1/video/:operation/task/:task_id endpoint.
BeansAI keeps one public entrypoint: POST /videos and GET /videos/:task_id. The relay translates BeansAI parameters to the native SkyReels request, inserts the upstream node credential as api_key, and wraps task ids with beansvids_... for later polling.
Models
| Model | Operation | Use |
|---|---|---|
| skyreels-v4-text-std | text2video | Text prompt to video, standard mode |
| skyreels-v4-text-fast | text2video | Text prompt to video, fast mode |
| skyreels-v4-image-std | image2video | First-frame image to video, standard mode |
| skyreels-v4-image-fast | image2video | First-frame image to video, fast mode |
| skyreels-v4-omni-std | omni-video | Omni references without video-reference pricing |
| skyreels-v4-omni-fast | omni-video | Fast omni references without video-reference pricing |
| skyreels-v4-omni-video-std | omni-video | Omni video-reference workflow, standard mode |
| skyreels-v4-omni-video-fast | omni-video | Omni video-reference workflow, fast mode |
Submit text to video
curl https://api.beansai.dev/v1/videos \
-H "Authorization: Bearer sk-beans-..." \
-H "Content-Type: application/json" \
-d '{
"model": "skyreels-v4-text-std",
"content": [
{
"type": "text",
"text": "A polished green coffee bean logo forms from soft studio light, cinematic product reveal"
}
],
"ratio": "16:9",
"duration": "5",
"resolution": "1080p",
"mode": "std",
"generate_audio": false
}'Submit image to video
Put a reference image in content[]; BeansAI forwards it as SkyReels first_frame_image.
curl https://api.beansai.dev/v1/videos \
-H "Authorization: Bearer sk-beans-..." \
-H "Content-Type: application/json" \
-d '{
"model": "skyreels-v4-image-std",
"content": [
{ "type": "text", "text": "Animate this product photo into a clean 5 second launch reveal" },
{ "type": "image_url", "image_url": { "url": "https://example.com/product.png" } }
],
"ratio": "9:16",
"duration": "5",
"resolution": "720p",
"mode": "std"
}'Submit omni video
Add a video_url content part for the omni video-reference workflow. BeansAI wraps it into SkyReels ref_videos and keeps the public task id pollable through /videos/:task_id.
curl https://api.beansai.dev/v1/videos \
-H "Authorization: Bearer sk-beans-..." \
-H "Content-Type: application/json" \
-d '{
"model": "skyreels-v4-omni-video-std",
"content": [
{ "type": "text", "text": "Use the reference motion, replace the subject with a green coffee bean mascot, keep the camera movement smooth" },
{ "type": "video_url", "video_url": { "url": "https://example.com/motion-reference.mp4" } }
],
"ratio": "16:9",
"duration": "5",
"resolution": "720p",
"mode": "std"
}'Poll task status
Save the returned id or task_id. SkyReels task ids returned by BeansAI start with beansvids_.
curl https://api.beansai.dev/v1/videos/beansvids_... \
-H "Authorization: Bearer sk-beans-..."Native mapping
SkyReels places the API key inside the JSON request body. In BeansAI, operators store that key on the provider node; client requests continue to use the normal BeansAI Bearer key.
curl https://api-gateway.skyreels.ai/api/v1/video/text2video/submit \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk-skyreels-...",
"prompt": "A cinematic product reveal",
"aspect_ratio": "16:9",
"duration": 5,
"resolution": "1080p",
"mode": "std",
"sound": false
}'Tips
ratiomaps to SkyReelsaspect_ratio;generate_audiomaps tosound.resolutioncan be480p,720p, or1080p.modecan befastorstd.- Advanced native operations can be selected with
skyreels_operationwhen you need a specific SkyReels endpoint.