Runway Gen-4 Image
Image model · Available upstream
High-fidelity Gen-4 image generation with style control
Generation is available through the published Meldport configurations below. Review the exact quote before submitting.
- Model ID
runway-gen-4-image- Released
- May 7, 2025
- Billing unit
- Generated output
Meldport generation prices
Runway Gen-4 Image
87953bc5-22a5-40df-8ec7-e6c2960a808bimage to image
1080x1080 · 1080p · 1 output
API request and parameters
Use images:generate on your API key. This configuration runs image to image and returns image/jpeg.
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": 1080,
"height": 1080
}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": "87953bc5-22a5-40df-8ec7-e6c2960a808b",
"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 Image
238f8876-6243-4377-a815-5beccb84610aimage to image
720x720 · 720p · 1 output
API request and parameters
Use images:generate on your API key. This configuration runs image to image and returns image/jpeg.
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": 720,
"height": 720
}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": "238f8876-6243-4377-a815-5beccb84610a",
"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 Image
1e0bfa04-8d62-4876-99b4-eb4142857738text to image
1024x1024 · 1K · 1 output
API request and parameters
Use images:generate on your API key. This configuration runs text to image and returns image/jpeg.
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": 1024,
"height": 1024
}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": "1e0bfa04-8d62-4876-99b4-eb4142857738",
"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.
Runway Gen-4 Image
7c1bd6c6-6efc-456d-9f9d-1178a5f05243text to image
1080x1080 · 1080p · 1 output
API request and parameters
Use images:generate on your API key. This configuration runs text to image and returns image/jpeg.
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": 1080,
"height": 1080
}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": "7c1bd6c6-6efc-456d-9f9d-1178a5f05243",
"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.
Runway Gen-4 Image
d428293b-aadd-4bf3-91f1-e2260ce2f47btext to image
720x720 · 720p · 1 output
API request and parameters
Use images:generate on your API key. This configuration runs text to image and returns image/jpeg.
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": 720,
"height": 720
}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": "d428293b-aadd-4bf3-91f1-e2260ce2f47b",
"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.
Runway Gen-4 Image
b98bfb59-a1f5-4764-9f75-672543423e49image to image
1024x1024 · 1K · 1 output
API request and parameters
Use images:generate on your API key. This configuration runs image to image and returns image/jpeg.
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": 1024,
"height": 1024
}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": "b98bfb59-a1f5-4764-9f75-672543423e49",
"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 Image is a text-to-image model for production work. It offers strong prompt adherence, fine stylistic control, and visual consistency across scenes and characters. Ideal for pipelines that link still images into video while preserving look and layout.