Text to Video Endpoint
Overview
Text to Video endpoint generates and returns a video based on a text description.
![Text to video endpoint result](/assets/images/Text-to-video-059ae4e254324cdd6b271d791167cb35.jpg)
Request
--request POST 'https://modelslab.com/api/v6/video/text2video' \
Make a POST
request to https://modelslab.com/api/v6/video/text2video endpoint and pass the required parameters in the request body.
Body Attributes
Parameter | Description |
---|---|
key | Your API Key used for request authorization. |
model_id | The ID of the model to use. The allowed model_id are zeroscope , dark-sushi-mix-vid ,epicrealismnaturalsi-vid ,hellonijicute25d-vid |
prompt | Text prompt with description of the things you want in the video to be generated. |
negative_prompt | Items you don't want in the video. |
seed | Seed is used to reproduce results, same seed will give you same image in return again. Pass null for a random number. |
height | Max height: 1024px. |
width | Max width: 1024px. |
num_frames | Number of frames in generated video. Max: 25. Defaults to 16. |
num_inference_steps | Number of denoising steps. Max: 50. Defaults to 20. |
guidance_scale | Scale for classifier-free guidance. |
clip_skip | Number of CLIP layers to skip. 2 leads to more aesthetic defaults. Defauls to null. |
upscale_height | Can be specified to upscale height of video generated by zeroscope model. |
upscale_width | Can be specified to upscale width of video generated by zeroscope model. |
upscale_strength | Higher strength can lead to more differences between generated video and upscaled video when using zeroscope model. |
upscale_guidance_scale | Guidance scale to be used for upscaling video when using zeroscope model. |
upscale_num_inference_steps | Number of denoising steps for upscaling video when using zeroscope model. |
use_improved_sampling | Whether or not you want to use improved sampling technique. Leads to better results with higher temporal consistency at the cost of being slow. |
improved_sampling_seed | Seed for consistent video generation when using improved sampling technique. |
fps | Frames per second rate of generated video. |
output_type | The output type could be mp4 ,gif . |
instant_response | true if you'd like a response with future links for queued requests instantly instead of waiting for a fixed amount of time. Defaults to false . |
temp | true if you want to store your generations on our temporary storage. Temporary files are cleaned every 24 hours. Defaults to false . |
webhook | Set an URL to get a POST API call once the image generation is complete. |
ip_adapter_id | Ip adpater id. The supported ids are ip-adapter_sdxl , ip-adapter_sd15 ,ip-adapter-plus-face_sd15 |
ip_adapter_scale | scale should be between 0 to 1 |
ip_adapter_image | Valid image url for ip adapter |
lora_models | lora models to be used with the model id - default=null |
lora_strength | comma separated lora strengths - default=1.0 |
motion_loras | motion lora models to be used with the model id - default=null |
motion_lora_strength | comma separated motion lora strengths - default=1.0 |
domain_lora_scale | animate diff v3 scale - default=1.0 |
adapter_lora | motion model lora for v3 - default is v2_sd15_adapter |
motion_module | motion models - default is v2_sd15_mm . Other options include animatelcm ,v2_sd15_mm ,animateDiff-lightning |
track_id | This ID is returned in the response to the webhook API call. This will be used to identify the webhook request. |
Example
Body
When the model_id is zeroscope
, the request json looks like so,
Body
{
"key":"",
"model_id":"zeroscope",
"prompt":"An astronaut riding a horse",
"negative_prompt":"low quality",
"height":320,
"width":576,
"num_frames":16,
"num_inference_steps":20,
"guidance_scale":7,
"upscale_height":640,
"upscale_width":1024,
"upscale_strength":0.6,
"upscale_guidance_scale":12,
"upscale_num_inference_steps":20,
"output_type":"gif",
"webhook":null,
"track_id":null
}
When the model_id is either dark-sushi-mix-vid
,epicrealismnaturalsi-vid
orhellonijicute25d-vid
, the request json looks like so,
Body
{
"key":"",
"model_id":"epicrealismnaturalsi",
"prompt":"An astronaut riding a horse",
"negative_prompt":"low quality",
"height":320,
"fps":7
"width":576,
"num_frames":18,
"num_inference_steps":30,
"guidance_scale":7.5,
"output_type":"gif",
"webhook":null,
"track_id":null
}
Request
- JS
- PHP
- NODE
- PYTHON
- JAVA
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"key":"",
"model_id":"zeroscope",
"prompt":"An astronaut riding a horse",
"negative_prompt":"low quality",
"height":320,
"width":576,
"num_frames":16,
"num_inference_steps":20,
"guidance_scale":7,
"upscale_height":640,
"upscale_width":1024,
"upscale_strength":0.6,
"upscale_guidance_scale":12,
"upscale_num_inference_steps":20,
"output_type":"gif",
"webhook":null,
"track_id":null
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://modelslab.com/api/v6/video/text2video", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
<?php
$payload = [
"key" => "",
"model_id" => "zeroscope",
"prompt" => "An astronaut riding a horse",
"negative_prompt" => "low quality",
"height" =>320,
"width" => 576,
"num_frames" => 16,
"num_inference_steps" =>20,
"guidance_scale" => 7,
"upscale_height" => 640,
"upscale_width" => 1024,
"upscale_strength" => 0.6,
"upscale_guidance_scale" => 12,
"upscale_num_inference_steps" => 20,
"output_type" => "gif",
"webhook" => null,
"track_id" => null
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://modelslab.com/api/v6/video/text2video',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://modelslab.com/api/v6/video/text2video',
'headers': {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"key":"",
"model_id":"zeroscope",
"prompt":"An astronaut riding a horse",
"negative_prompt":"low quality",
"height":320,
"width":576,
"num_frames":16,
"num_inference_steps":20,
"guidance_scale":7,
"upscale_height":640,
"upscale_width":1024,
"upscale_strength":0.6,
"upscale_guidance_scale":12,
"upscale_num_inference_steps":20,
"output_type":"gif",
"webhook":null,
"track_id":null
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "https://modelslab.com/api/v6/video/text2video"
payload = json.dumps({
"key":"",
"model_id":"zeroscope",
"prompt":"An astronaut riding a horse",
"negative_prompt":"low quality",
"height":320,
"width":576,
"num_frames":16,
"num_inference_steps":20,
"guidance_scale":7,
"upscale_height":640,
"upscale_width":1024,
"upscale_strength":0.6,
"upscale_guidance_scale":12,
"upscale_num_inference_steps":20,
"output_type":"gif",
"webhook":None,
"track_id":None
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"key\":\"\",\n \"model_id\":\"zeroscope\",\n \"prompt\":\"An astronaut riding a horse\",\n \"negative_prompt\":\"low quality\",\n \"height\":320,\n \"width\":576,\n \"num_frames\":16,\n \"num_inference_steps\":20,\n \"guidance_scale\":7,\n \"upscale_height\":640,\n \"upscale_width\":1024,\n \"upscale_strength\":0.6,\n \"upscale_guidance_scale\":12,\n \"upscale_num_inference_steps\":20,\n \"output_type\":\"gif\",\n \"webhook\":null,\n \"track_id\":null\n}");
Request request = new Request.Builder()
.url("https://modelslab.com/api/v6/video/text2video")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
Response
Example Response
{
"status": "success",
"generationTime": 8.49,
"id": 147,
"output": [
"https://pub-3626123a908346a7a8be8d9295f44e26.r2.dev/generations/2be1702e-3a1f-46ee-811c-350cee84b66e.gif"
],
"proxy_links": [
"https://cdn2.stablediffusionapi.com/generations/2be1702e-3a1f-46ee-811c-350cee84b66e.gif"
],
"meta": {
"clip_skip": null,
"file_prefix": "2be1702e-3a1f-46ee-811c-350cee84b66e",
"fps": 7,
"guidance_scale": 7,
"height": 320,
"improved_sampling_seed": 42,
"instant_response": "no",
"model_id": "zeroscope",
"negative_prompt": "low quality",
"num_frames": 16,
"num_inference_steps": 20,
"output_type": "gif",
"prompt": "An astronaut riding a horse",
"seed": 3848624113,
"temp": "no",
"upscale_guidance_scale": 15,
"upscale_height": null,
"upscale_num_inference_steps": 20,
"upscale_strength": 0.6,
"upscale_width": null,
"use_improved_sampling": "no",
"width": 576
}
}