Meldport
bytedance · Image

Seedream 4.5

Image model · Available upstream

Seedream 4.5 high fidelity multi reference text to image model

Generation is available through the published Meldport configurations below. Review the exact quote before submitting.

Model ID
bytedance-seedream-4-5
Released
Dec 3, 2025
Billing unit
Generated output

Meldport generation prices

Seedream 4.5

API configuration IDd2e71556-6226-43e4-8eb1-9ba8c02b3177

text to image

GenerationMeldport $0.048/ generation

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.

generation_parametersJSON
{
  "width": 3840,
  "height": 2160
}

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.

generate.mjsJavaScript
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": "d2e71556-6226-43e4-8eb1-9ba8c02b3177",
  "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.

Seedream 4.5

API configuration IDec29463f-095e-4017-85c0-78d2e22f2a05

image to image

GenerationMeldport $0.048/ generation

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.

generation_parametersJSON
{
  "resolution": "4K"
}

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.

generate.mjsJavaScript
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": "ec29463f-095e-4017-85c0-78d2e22f2a05",
  "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.

Seedream 4.5

API configuration IDb392501a-0dd2-4760-95b0-8c0dbf69acdd

image to image

GenerationMeldport $0.048/ generation

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.

generation_parametersJSON
{
  "width": 2048,
  "height": 2048
}

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.

generate.mjsJavaScript
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": "b392501a-0dd2-4760-95b0-8c0dbf69acdd",
  "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.

Seedream 4.5

API configuration ID695f9b00-4a12-4388-b935-98b7730bb6bc

image to image

GenerationMeldport $0.048/ generation

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.

generation_parametersJSON
{
  "resolution": "2K"
}

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.

generate.mjsJavaScript
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": "695f9b00-4a12-4388-b935-98b7730bb6bc",
  "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.

Seedream 4.5

API configuration ID24e68d16-ca90-412f-ab19-1bcfc46ab4de

text to image

GenerationMeldport $0.048/ generation

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.

generation_parametersJSON
{
  "width": 2048,
  "height": 2048
}

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.

generate.mjsJavaScript
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": "24e68d16-ca90-412f-ab19-1bcfc46ab4de",
  "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.

Seedream 4.5

API configuration IDa66f29e2-6fd2-4630-a709-310b5116646d

image to image

GenerationMeldport $0.048/ generation

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.

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.

generate.mjsJavaScript
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": "a66f29e2-6fd2-4630-a709-310b5116646d",
  "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

Seedream 4.5 is a ByteDance image model for precise 2K to 4K generation and editing. It improves multi image composition, preserves reference detail, and renders small text more reliably. It supports up to 14 reference images for stable characters and design heavy layouts.

  • text to image
  • image to image
  • op:edit
  • checkpoint