Vidu Q1
Video model · Available upstream
Vidu Q1 high fidelity reference to video generation model
Generation is available through the published Meldport configurations below. Review the exact quote before submitting.
- Model ID
vidu-q1- Released
- Apr 21, 2025
- Billing unit
- Generated output
Meldport generation prices
Vidu Q1
aad9991b-2041-42c3-bdc8-0a20a1472cb2image to video
1080p · 1 output
API request and parameters
Use videos:generate on your API key. This configuration runs image to video and returns video/mp4.
Upload an image using the same API key, then replace YOUR_UPLOADED_ASSET_ID. Input upload example. Choose a different configuration ID to change the workflow or output settings. Send only options listed below.
These output settings are included in this configuration. Select another configuration ID to change them. Do not add them to options.
{
"duration": 5
}This configuration has no additional request options.
Replace the prompt and set a unique MELDPORT_IDEMPOTENCY_KEY for this operation. The example quotes the request and then creates one paid job. Read the billing rules before accepting variable charges.
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const idempotencyKey = process.env.MELDPORT_IDEMPOTENCY_KEY;
if (!key || !idempotencyKey) throw new Error("Set your API key and a unique operation ID first.");
async function post(path, body) {
const response = await fetch(api + path, {method: "POST",
headers: {Authorization: `Bearer ${key}`, "Content-Type": "application/json"},
body: JSON.stringify(body)});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result.error));
return result;
}
const request = {
"configuration_id": "aad9991b-2041-42c3-bdc8-0a20a1472cb2",
"prompt": "Replace with your prompt or speech script.",
"options": {},
"input_asset_ids": [
"YOUR_UPLOADED_ASSET_ID"
]
};
const {data: quote} = await post("/v1/media/quotes", request);
console.log("Quote:", quote);
const result = await post("/v1/media/jobs", {
...request, idempotency_key: idempotencyKey,
accepted_customer_price_microusd: quote.customer_price_microusd,
accepted_maximum_reservation_microusd: quote.maximum_reservation_microusd,
...(quote.billing_policy_version === "actual-cost-v1"
? {billing_policy_version: "actual-cost-v1"} : {}),
});
console.log(result.job);
// Poll GET /v1/media/jobs/<job.id> with the same API key.
// Keep this operation ID for retries. A new ID requests another generation.Poll the returned job ID. Download only after state is succeeded and billing_state is settled. Polling and download example.
Vidu Q1
805f258a-87e0-45c3-806a-2a01044a966etext to video
1080p · 1 output
API request and parameters
Use videos:generate on your API key. This configuration runs text to video and returns video/mp4.
This configuration does not require an uploaded image. Choose a different configuration ID to change the workflow or output settings. Send only options listed below.
These output settings are included in this configuration. Select another configuration ID to change them. Do not add them to options.
{
"width": 1920,
"height": 1080,
"duration": 5
}This configuration has no additional request options.
Replace the prompt and set a unique MELDPORT_IDEMPOTENCY_KEY for this operation. The example quotes the request and then creates one paid job. Read the billing rules before accepting variable charges.
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const idempotencyKey = process.env.MELDPORT_IDEMPOTENCY_KEY;
if (!key || !idempotencyKey) throw new Error("Set your API key and a unique operation ID first.");
async function post(path, body) {
const response = await fetch(api + path, {method: "POST",
headers: {Authorization: `Bearer ${key}`, "Content-Type": "application/json"},
body: JSON.stringify(body)});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result.error));
return result;
}
const request = {
"configuration_id": "805f258a-87e0-45c3-806a-2a01044a966e",
"prompt": "Replace with your prompt or speech script.",
"options": {},
"input_asset_ids": []
};
const {data: quote} = await post("/v1/media/quotes", request);
console.log("Quote:", quote);
const result = await post("/v1/media/jobs", {
...request, idempotency_key: idempotencyKey,
accepted_customer_price_microusd: quote.customer_price_microusd,
accepted_maximum_reservation_microusd: quote.maximum_reservation_microusd,
...(quote.billing_policy_version === "actual-cost-v1"
? {billing_policy_version: "actual-cost-v1"} : {}),
});
console.log(result.job);
// Poll GET /v1/media/jobs/<job.id> with the same API key.
// Keep this operation ID for retries. A new ID requests another generation.Poll the returned job ID. Download only after state is succeeded and billing_state is settled. Polling and download example.
Vidu Q1
ce59a463-29c5-4de3-8c87-1a5a5227bc96image to video
1080p · 1 output
API request and parameters
Use videos:generate on your API key. This configuration runs image to video and returns video/mp4.
Upload an image using the same API key, then replace YOUR_UPLOADED_ASSET_ID. Input upload example. Choose a different configuration ID to change the workflow or output settings. Send only options listed below.
These output settings are included in this configuration. Select another configuration ID to change them. Do not add them to options.
{
"width": 1920,
"height": 1080,
"duration": 5
}This configuration has no additional request options.
Replace the prompt and set a unique MELDPORT_IDEMPOTENCY_KEY for this operation. The example quotes the request and then creates one paid job. Read the billing rules before accepting variable charges.
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const idempotencyKey = process.env.MELDPORT_IDEMPOTENCY_KEY;
if (!key || !idempotencyKey) throw new Error("Set your API key and a unique operation ID first.");
async function post(path, body) {
const response = await fetch(api + path, {method: "POST",
headers: {Authorization: `Bearer ${key}`, "Content-Type": "application/json"},
body: JSON.stringify(body)});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result.error));
return result;
}
const request = {
"configuration_id": "ce59a463-29c5-4de3-8c87-1a5a5227bc96",
"prompt": "Replace with your prompt or speech script.",
"options": {},
"input_asset_ids": [
"YOUR_UPLOADED_ASSET_ID"
]
};
const {data: quote} = await post("/v1/media/quotes", request);
console.log("Quote:", quote);
const result = await post("/v1/media/jobs", {
...request, idempotency_key: idempotencyKey,
accepted_customer_price_microusd: quote.customer_price_microusd,
accepted_maximum_reservation_microusd: quote.maximum_reservation_microusd,
...(quote.billing_policy_version === "actual-cost-v1"
? {billing_policy_version: "actual-cost-v1"} : {}),
});
console.log(result.job);
// Poll GET /v1/media/jobs/<job.id> with the same API key.
// Keep this operation ID for retries. A new ID requests another generation.Poll the returned job ID. Download only after state is succeeded and billing_state is settled. Polling and download example.
About this model
Vidu Q1 is a generative video model that preserves visual fidelity from multiple reference images. It supports character, scene and prop control with smooth transitions and 1080p clips. Ideal for ads, story sequences and animation workflows that need tight visual continuity.