Runway Gen-4 Turbo
Video model · Available upstream
High speed Gen-4 Turbo image to video generation
Generation is available through the published Meldport configurations below. Review the exact quote before submitting.
- Model ID
runway-gen-4-turbo- Released
- Apr 8, 2025
- Billing unit
- Duration seconds
Meldport generation prices
Runway Gen-4 Turbo
a4f759d9-8ba8-4297-89f8-d62806324f84image to video
2 seconds
Variable billing detailsAPI 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": 2
}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": "a4f759d9-8ba8-4297-89f8-d62806324f84",
"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.
Runway Gen-4 Turbo
2682b411-0cd1-4a91-b424-c7464f1d7c31image to video
9 seconds
Variable billing detailsAPI 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": 9
}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": "2682b411-0cd1-4a91-b424-c7464f1d7c31",
"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.
Runway Gen-4 Turbo
c1f50e4f-aa7c-49e3-b907-49c99eb2e0acimage to video
10 seconds
Variable billing detailsAPI 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": 10
}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": "c1f50e4f-aa7c-49e3-b907-49c99eb2e0ac",
"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.
Runway Gen-4 Turbo
213ac78b-7d1f-41a1-8608-a56b73e65788image to video
5 seconds
Variable billing detailsAPI 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": "213ac78b-7d1f-41a1-8608-a56b73e65788",
"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.
Runway Gen-4 Turbo
4b884481-77a9-4b40-9ddd-5bb07077790dimage to video
7 seconds
Variable billing detailsAPI 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": 7
}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": "4b884481-77a9-4b40-9ddd-5bb07077790d",
"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.
Runway Gen-4 Turbo
8fef95c8-344a-4f53-9f25-faa0c0ff0b35image to video
3 seconds
Variable billing detailsAPI 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": 3
}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": "8fef95c8-344a-4f53-9f25-faa0c0ff0b35",
"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.
Runway Gen-4 Turbo
54bab527-8ba0-4d50-ba7b-90b78bee604aimage to video
4 seconds
Variable billing detailsAPI 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": 4
}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": "54bab527-8ba0-4d50-ba7b-90b78bee604a",
"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.
Runway Gen-4 Turbo
1af2e51b-b209-42e5-8dd7-f8a07ebbe54fimage to video
8 seconds
Variable billing detailsAPI 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": 8
}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": "1af2e51b-b209-42e5-8dd7-f8a07ebbe54f",
"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.
Runway Gen-4 Turbo
d95570ac-ea8e-4199-b6d2-0d743ab9c1d0image to video
6 seconds
Variable billing detailsAPI 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": 6
}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": "d95570ac-ea8e-4199-b6d2-0d743ab9c1d0",
"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
Runway Gen-4 Turbo is a high speed variant of Gen-4 for rapid video ideation. It turns reference images into short cinematic clips with strong character consistency, smooth motion, and reduced credit cost. Ideal for fast iteration in production and previsualization pipelines.