Skip to content
Immersive AI

Image Edit - Seedream - Brand Clothing

Image Seedream v4 by Henri Huotari · Sep 18, 2025

This example shows how you can generate products with your own logo.

This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
Input images
This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
Output

Run it yourself

Set IMMERSIVE_API_KEY to an API key from your account. Create a free account to get one.

curl -X POST 'https://ai.im.inc/api/v1/images/edit' \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "seedream-v4",
  "prompt": "Refer to these logos and create a visual showcase for an outdoor sports brand named ‘IMMERSIVE’. Display four branded items each in their own image: a hat, a t-shirt, swimming shorts, sandals. Use white and pink as the main visual colors, use the logos in the products with a fun, simple, and modern style.",
  "provider": "fal",
  "num_images": 4,
  "image_input": [
    "https://s3.huotari.ai/images/immersive_icon.png",
    "https://s3.huotari.ai/images/immersive.png"
  ],
  "output_format": "png"
}'

# Set JOB_ID to the response's "id", then poll every few seconds until the job has finished:
curl "https://ai.im.inc/api/v1/images/$JOB_ID" \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY"

# The finished response has the result at output.generated_image_url.
const headers = { Authorization: `Bearer ${process.env.IMMERSIVE_API_KEY}` };

const response = await fetch("https://ai.im.inc/api/v1/images/edit", {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    "model": "seedream-v4",
    "prompt": "Refer to these logos and create a visual showcase for an outdoor sports brand named ‘IMMERSIVE’. Display four branded items each in their own image: a hat, a t-shirt, swimming shorts, sandals. Use white and pink as the main visual colors, use the logos in the products with a fun, simple, and modern style.",
    "provider": "fal",
    "num_images": 4,
    "image_input": [
      "https://s3.huotari.ai/images/immersive_icon.png",
      "https://s3.huotari.ai/images/immersive.png"
    ],
    "output_format": "png"
  }),
});
const job = await response.json();

// Poll every few seconds while the job is still running.
const running = ["pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"];
let result;
do {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  result = await (await fetch(`https://ai.im.inc/api/v1/images/${job.id}`, { headers })).json();
} while (running.includes(String(result.status).toLowerCase()));

console.log(result.output.generated_image_url);
import os
import time

import requests

headers = {"Authorization": f"Bearer {os.environ['IMMERSIVE_API_KEY']}"}

job = requests.post(
    "https://ai.im.inc/api/v1/images/edit",
    headers=headers,
    json={
        "model": "seedream-v4",
        "prompt": "Refer to these logos and create a visual showcase for an outdoor sports brand named ‘IMMERSIVE’. Display four branded items each in their own image: a hat, a t-shirt, swimming shorts, sandals. Use white and pink as the main visual colors, use the logos in the products with a fun, simple, and modern style.",
        "provider": "fal",
        "num_images": 4,
        "image_input": [
            "https://s3.huotari.ai/images/immersive_icon.png",
            "https://s3.huotari.ai/images/immersive.png",
        ],
        "output_format": "png",
    },
    timeout=300,
).json()

# Poll every few seconds while the job is still running.
running = {"pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"}
while True:
    time.sleep(5)
    result = requests.get(f"https://ai.im.inc/api/v1/images/{job['id']}", headers=headers, timeout=60).json()
    if str(result.get("status", "")).lower() not in running:
        break

print(result["output"]["generated_image_url"])
{
    "id": "32f04077-567c-4de8-8fab-3fa9972ce95a",
    "meta": "{\"images\":[{\"url\":\"https:\\/\\/v3b.fal.media\\/files\\/b\\/koala\\/u-pOVY_EdKjWbdcVGQI1N_89726d46a58449679bd381e618da4222.png\",\"content_type\":\"image\\/png\",\"file_name\":\"89726d46a58449679bd381e618da4222.png\",\"file_size\":920695,\"width\":null,\"height\":null},{\"url\":\"https:\\/\\/v3b.fal.media\\/files\\/b\\/koala\\/39HDs7U_qoeylI2t-IRTA_0d3921b4d03a46eb8c3a3adbe81137ce.png\",\"content_type\":\"image\\/png\",\"file_name\":\"0d3921b4d03a46eb8c3a3adbe81137ce.png\",\"file_size\":838131,\"width\":null,\"height\":null},{\"url\":\"https:\\/\\/v3b.fal.media\\/files\\/b\\/panda\\/-hChPevpibdN2w-GAIq_H_fab64cc0c3d641b5b4792ef6e36c2e4b.png\",\"content_type\":\"image\\/png\",\"file_name\":\"fab64cc0c3d641b5b4792ef6e36c2e4b.png\",\"file_size\":952944,\"width\":null,\"height\":null},{\"url\":\"https:\\/\\/v3b.fal.media\\/files\\/b\\/panda\\/rABUe0iNkaJUzxZVrvqxg_ad100791d2444f08b1e50b9721559809.png\",\"content_type\":\"image\\/png\",\"file_name\":\"ad100791d2444f08b1e50b9721559809.png\",\"file_size\":791598,\"width\":null,\"height\":null}],\"seed\":1194304287}",
    "seed": "1194304287",
    "error": null,
    "output": {
        "prompt": "Refer to these logos and create a visual showcase for an outdoor sports brand named ‘IMMERSIVE’. Display four branded items each in their own image: a hat, a t-shirt, swimming shorts, sandals. Use white and pink as the main visual colors, use the logos in the products with a fun, simple, and modern style.",
        "generated_image_url": "https://v3b.fal.media/files/b/koala/u-pOVY_EdKjWbdcVGQI1N_89726d46a58449679bd381e618da4222.png",
        "all_generated_image_urls": [
            {
                "url": "https://v3b.fal.media/files/b/koala/u-pOVY_EdKjWbdcVGQI1N_89726d46a58449679bd381e618da4222.png",
                "width": null,
                "height": null,
                "file_name": "89726d46a58449679bd381e618da4222.png",
                "file_size": 920695,
                "content_type": "image/png"
            },
            {
                "url": "https://v3b.fal.media/files/b/koala/39HDs7U_qoeylI2t-IRTA_0d3921b4d03a46eb8c3a3adbe81137ce.png",
                "width": null,
                "height": null,
                "file_name": "0d3921b4d03a46eb8c3a3adbe81137ce.png",
                "file_size": 838131,
                "content_type": "image/png"
            },
            {
                "url": "https://v3b.fal.media/files/b/panda/-hChPevpibdN2w-GAIq_H_fab64cc0c3d641b5b4792ef6e36c2e4b.png",
                "width": null,
                "height": null,
                "file_name": "fab64cc0c3d641b5b4792ef6e36c2e4b.png",
                "file_size": 952944,
                "content_type": "image/png"
            },
            {
                "url": "https://v3b.fal.media/files/b/panda/rABUe0iNkaJUzxZVrvqxg_ad100791d2444f08b1e50b9721559809.png",
                "width": null,
                "height": null,
                "file_name": "ad100791d2444f08b1e50b9721559809.png",
                "file_size": 791598,
                "content_type": "image/png"
            }
        ]
    },
    "status": "succeeded",
    "num_outputs": 4,
    "nsfw_detected": false,
    "generator_used": "fal"
}

Your browser blocked the clipboard. Select the text and copy it by hand.

How the job runs

  1. POST returns the job's id and status right away.
  2. Poll GET /api/v1/images/{id} every few seconds while the job is running.
  3. When status is succeeded, download output.generated_image_url. Failed jobs are refunded automatically.
Endpoint
POST /api/v1/images/edit
Model
seedream-v4
Output
Image · PNG