🎨 免费的AI图像和视频生成API服务 - 基于即梦AI(国内站)和dreamina(国际站)的逆向工程实现。
现在通过ratio和resolution两个参数来共同控制图像尺寸,这提供了更高的灵活性。程序内resolution默认设置为2k。
curl -X POST http://localhost:5100/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-4.0",
"prompt": "美丽的少女,胶片感",
"ratio": "4:3",
"resolution": "2k"
}'
支持的resolution: 1k, 2k, 4k
支持的ratio: 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9
注意1: 国内站和国际站接口相同,但需要通过不同的前缀来区分:
- 国内站:直接使用sessionid,如
Bearer your_session_id- 美国站:需要添加 us- 前缀,如
Bearer us-your_session_id- 香港站:需要添加 hk- 前缀,如
Bearer hk-your_session_id- 日本站:需要添加 jp- 前缀,如
Bearer jp-your_session_id- 新加坡站: 需要添加 sg- 前缀,如
Bearer sg-your_session_id注意2: 国内站和国际站现已同时支持文生图和图生图,国际站添加nanobanana模型。
注意3: 国际站使用nanobanana模型时,生成的图像都将固定为 1024x1024 和 2k,与官方保持一致。

拉取命令
docker run -d \ --name jimeng-api \ -p 5100:5100 \ --restart unless-stopped \ ghcr.io/iptag/jimeng-api:latest
更新命令
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once jimeng-api
# 克隆项目
git clone <repository-url>
cd jimeng-api
# 安装依赖
npm install
# 编译文件
npm run build
# 启动服务
npm run dev
# 使用docker-compose
docker-compose up -d
# 或者手动构建和运行
docker build -t jimeng-api .
docker run -d \
--name jimeng-api \
-p 5100:5100 \
--restart unless-stopped \
jimeng-api
# 重新构建并启动
docker-compose up -d --build
# 查看服务日志
docker logs jimeng-api
# 停止服务
docker-compose down
# 进入容器调试
docker exec -it jimeng-api sh
name: jimeng-api
route: src/api/routes/index.ts
port: 5100
requestLog: true
debug: false
log_level: info # 日志级别: error, warning, info(默认), debug
本项目提供了一个专用的 Claude Code Skill,方便在 Claude Code 中快速调用即梦API生成图片。
/pic 目录# 使用 Docker 启动服务
docker-compose up -d
# 或
docker run -d --name jimeng-api -p 5100:5100 ghcr.io/iptag/jimeng-api:latest
# 复制到用户级别的全局 skills 目录
cp -r jimeng-api ~/.claude/skills/
# 或者复制到项目级别的 skills 目录
cp -r jimeng-api ./.claude/skills/
pip install requests Pillow
在 Claude Code 中,您可以直接对话使用:
用户: "我的sessionid为xxxxx,用即梦生成一张2K分辨率的16:9图片,内容是未来都市的日落景色" Claude: [自动调用 skill,生成图片并保存到 /pic 目录]
更多详细用法请参见 jimeng-api/Skill.md。
POST /v1/images/generations
请求参数:
model (string): 使用的模型名称prompt (string): 图像描述文本ratio (string, 可选): 图像比例,默认为 "1:1"。支持的比例: 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9。注意: 当 intelligent_ratio 为 true 时,此参数将被忽略,系统会根据提示词自动推断最佳比例。resolution (string, 可选): 分辨率级别,默认为 "2k"。支持的分辨率: 1k, 2k, 4k。intelligent_ratio (boolean, 可选): 是否启用智能比例,默认为 false。启用后系统会根据提示词自动推断最佳图像比例(例如:"竖屏" → 9:16,"横屏" → 16:9)。negative_prompt (string, 可选): 负面提示词sample_strength (number, 可选): 采样强度 (0.0-1.0)response_format (string, 可选): 响应格式 ("url" 或 "b64_json")# 默认参数(ratio: "1:1", resolution: "2k")
curl -X POST http://localhost:5100/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-4.0",
"prompt": "一只可爱的小猫咪"
}'
# 使用4K分辨率的示例
curl -X POST http://localhost:5100/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-4.0",
"prompt": "壮丽的山水风景,超高分辨率",
"ratio": "16:9",
"resolution": "4k"
}'
# 使用智能比例的示例(系统会根据"竖屏"自动推断为9:16)
curl -X POST http://localhost:5100/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-4.0",
"prompt": "奔跑的狮子,竖屏",
"resolution": "2k",
"intelligent_ratio": true
}'
支持的模型:
nanobanana: 仅国际站支持jimeng-4.0: 国内、国际站均支持jimeng-3.1: 仅国内站支持jimeng-3.0: 国内、国际站均支持jimeng-2.1: 仅国内站支持jimeng-xl-pro支持的比例及对应分辨率 :
| resolution | ratio | 分辨率 |
|---|---|---|
1k | 1:1 | 1328×1328 |
4:3 | 1472×1104 | |
3:4 | 1104×1472 | |
16:9 | 1664×936 | |
9:16 | 936×1664 | |
3:2 | 1584×1056 | |
2:3 | 1056×1584 | |
21:9 | 2016×864 | |
2k (默认) | 1:1 | 2048×2048 |
4:3 | 2304×1728 | |
3:4 | 1728×2304 | |
16:9 | 2560×1440 | |
9:16 | 1440×2560 | |
3:2 | 2496×1664 | |
2:3 | 1664×2496 | |
21:9 | 3024×1296 | |
4k | 1:1 | 4096×4096 |
4:3 | 4608×3456 | |
3:4 | 3456×4608 | |
16:9 | 5120×2880 | |
9:16 | 2880×5120 | |
3:2 | 4992×3328 | |
2:3 | 3328×4992 | |
21:9 | 6048×2592 |
POST /v1/images/compositions
功能说明: 基于输入的一张或多张图片,结合文本提示词生成新的图片。支持图片混合、风格转换、内容合成等多种创作模式。
# 国际版图生图示例 (本地文件上传)
# 美国站使用 "us-YOUR_SESSION_ID"
# 香港站使用 "hk-YOUR_SESSION_ID"
# 日本站使用 "jp-YOUR_SESSION_ID"
curl -X POST http://localhost:5100/v1/images/compositions \
-H "Authorization: Bearer us-YOUR_SESSION_ID" \
-F "prompt=A cute cat, anime style" \
-F "model=jimeng-4.0" \
-F "images=@/path/to/your/local/cat.jpg"
请求参数:
model (string): 使用的模型名称prompt (string): 图像描述文本,用于指导生成方向images (array): 输入图片数组ratio (string, 可选): 图像比例,默认为 "1:1"。支持的比例: 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9。resolution (string, 可选): 分辨率级别,默认为 "2k"。支持的分辨率: 1k, 2k, 4k。intelligent_ratio (boolean, 可选): 是否启用智能比例,默认为 false。启用后系统会根据提示词和输入图片自动调整输出比例。negative_prompt (string, 可选): 负面提示词sample_strength (number, 可选): 采样强度 (0.0-1.0)response_format (string, 可选): 响应格式 ("url"(默认) 或 "b64_json")使用限制:
使用示例:
# 示例1: URL图片风格转换 (使用application/json)
curl -X POST http://localhost:5100/v1/images/compositions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-4.0",
"prompt": "将这张照片转换为油画风格,色彩鲜艳,笔触明显",
"images": ["https://example.com/photo.jpg"],
"ratio": "1:1",
"resolution": "2k",
"sample_strength": 0.7
}'
# 示例2: 本地单文件上传 (使用multipart/form-data)
curl -X POST http://localhost:5100/v1/images/compositions \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-F "prompt=一只可爱的猫,动漫风格" \
-F "model=jimeng-4.0" \
-F "ratio=1:1" \
-F "resolution=1k" \
-F "images=@/path/to/your/local/cat.jpg"
# 示例3: 本地多文件上传 (使用multipart/form-data)
curl -X POST http://localhost:5100/v1/images/compositions \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-F "prompt=融合这两张图片" \
-F "model=jimeng-4.0" \
-F "images=@/path/to/your/image1.jpg" \
-F "images=@/path/to/your/image2.png"
成功响应示例 (适用于以上所有示例):
{
"created": 1703123456,
"data": [
{
"url": "https://p3-sign.toutiaoimg.com/tos-cn-i-tb4s082cfz/abc123.webp"
}
],
"input_images": 1,
"composition_type": "multi_image_synthesis"
}
Q: 图片上传失败怎么办? A: 检查图片URL是否可访问,确保图片格式正确,文件大小不超过10MB。
Q: 生成时间过长怎么办? A: 复杂的多图合成需要更长时间,建议耐心等待。如果超过10分钟仍未完成,可以重新提交请求。
Q: 如何提高合成质量? A:
sample_strength 参数Q: 支持哪些图片格式? A: 支持 JPG、PNG、WebP、GIF 等常见格式,推荐使用 JPG 或 PNG。
Q: 可以使用本地图片吗? A: 可以。现在支持直接上传本地文件。请参考上方的“本地文件上传示例”。您也可以继续使用原有的网络图片URL方式。
POST /v1/videos/generations
功能说明: 基于文本提示词(Text-to-Video),或结合输入的首/尾帧图片(Image-to-Video)生成一段视频。支持三种生成模式:
模式检测:系统根据图片的存在情况自动判断生成模式:
- 无图片 → 文生视频模式
- 1张图片 → 图生视频模式(仅提供 first_frame_image)
- 2张图片 → 首尾帧视频模式(first_frame_image 和 end_frame_image 均提供)
请求参数:
model (string): 使用的视频模型名称。prompt (string): 视频内容的文本描述。ratio (string, 可选): 视频比例,默认为 "1:1"。支持的比例:1:1, 4:3, 3:4, 16:9, 9:16, 21:9。注意:在图生视频模式下(有图片输入时),此参数将被忽略,视频比例由输入图片的实际比例决定。resolution (string, 可选): 视频分辨率,默认为 "720p"。支持的分辨率:720p, 1080p。duration (number, 可选): 视频时长(秒),默认为 5。支持的值:5(5秒),10(10秒)。file_paths (array, 可选): 一个包含图片URL的数组,用于指定视频的首帧(数组第1个元素)和尾帧(数组第2个元素)。[file] (file, 可选): 通过 multipart/form-data 方式上传的本地图片文件(最多2个),用于指定视频的首帧和尾帧。字段名可以任意,例如 image1。response_format (string, 可选): 响应格式,支持 url (默认) 或 b64_json。图片输入说明:
- 您可以通过
file_paths(URL数组) 或直接上传文件两种方式提供输入图片。- 如果两种方式同时提供,系统将优先使用本地上传的文件。
- 最多支持2张图片,第1张作为视频首帧,第2张作为视频尾帧。
- 重要:一旦提供图片输入(图生视频或首尾帧视频),
ratio参数将被忽略,视频比例将由输入图片的实际比例决定。resolution参数仍然有效。
支持的视频模型:
jimeng-video-3.0-pro - 专业版jimeng-video-3.0 - 标准版jimeng-video-3.0-fast - 极速版(仅国内站支持)jimeng-video-2.0-pro - 专业版v2jimeng-video-2.0 - 标准版v2使用示例:
# 示例1: 文生视频(0张图片) - 纯文本生成
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-video-3.0",
"prompt": "一只奔跑在草原上的狮子",
"ratio": "16:9",
"resolution": "1080p",
"duration": 10
}'
# 示例2: 图生视频(1张图片) - 单张图片作为首帧
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-F "prompt=一个男人在说话" \
-F "model=jimeng-video-3.0" \
-F "ratio=9:16" \
-F "duration=5" \
-F "image_file_1=@/path/to/your/first-frame.png"
# 示例3: 首尾帧视频(2张图片) - 两张图片分别作为首帧和尾帧
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-F "prompt=场景之间的平滑过渡" \
-F "model=jimeng-video-3.0" \
-F "ratio=16:9" \
-F "duration=10" \
-F "image_file_1=@/path/to/first-frame.png" \
-F "image_file_2=@/path/to/last-frame.png"
# 示例4: 使用网络图片的图生视频
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-video-3.0",
"prompt": "一个女人在花园里跳舞",
"ratio": "4:3",
"duration": 10,
"filePaths": ["https://example.com/your-image.jpg"]
}'
POST /v1/chat/completions
curl -X POST http://localhost:5100/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SESSION_ID" \
-d '{
"model": "jimeng-4.0",
"messages": [
{
"role": "user",
"content": "画一幅山水画"
}
]
}'
{
"created": 1759058768,
"data": [
{
"url": "https://example.com/image1.jpg"
},
{
"url": "https://example.com/image2.jpg"
}
]
}
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1759058768,
"model": "jimeng-4.0",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": ""
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 20,
"total_tokens": 30
}
}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1759058768,"model":"jimeng-4.0","choices":[{"index":0,"delta":{"role":"assistant","content":"🎨 图像生成中,请稍候..."},"finish_reason":null}]} data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1759058768,"model":"jimeng-4.0","choices":[{"index":1,"delta":{"role":"assistant","content":""},"finish_reason":"stop"}]} data: [DONE]
jimeng-api/ ├── src/ │ ├── api/ │ │ ├── controllers/ # 控制器层 │ │ │ ├── core.ts # 核心功能(网络请求、文件处理) │ │ │ ├── images.ts # 图像生成逻辑 │ │ │ ├── videos.ts # 视频生成逻辑 │ │ │ └── chat.ts # 聊天接口逻辑 │ │ ├── routes/ # 路由定义 │ │ └── consts/ # 常量定义 │ ├── lib/ # 核心库 │ │ ├── configs/ # 配置加载 │ │ ├── consts/ # 常量 │ │ ├── exceptions/ # 异常类 │ │ ├── interfaces/ # 接口定义 │ │ ├── request/ # 请求处理 │ │ ├── response/ # 响应处理 │ │ ├── config.ts # 配置中心 │ │ ├── server.ts # 服务器核心 │ │ ├── logger.ts # 日志记录器 │ │ ├── error-handler.ts # 统一错误处理 │ │ ├── smart-poller.ts # 智能轮询器 │ │ └── aws-signature.ts # AWS签名 │ ├── daemon.ts # 守护进程 │ └── index.ts # 入口文件 ├── configs/ # 配置文件 ├── Dockerfile # Docker配置 └── package.json # 项目配置
export const POLLING_CONFIG = {
MAX_POLL_COUNT: 900, // 最大轮询次数 (15分钟)
POLL_INTERVAL: 5000, // 基础轮询间隔 (5秒)
STABLE_ROUNDS: 5, // 稳定轮次
TIMEOUT_SECONDS: 900 // 超时时间 (15分钟)
};
export const RETRY_CONFIG = {
MAX_RETRY_COUNT: 3, // 最大重试次数
RETRY_DELAY: 5000 // 重试延迟 (5秒)
};
JSON解析错误
Sessionid失效
生成超时
积分不足
本项目基于以下开源项目的贡献和启发:
GPL v3 License - 详见 LICENSE 文件
本项目仅供学习和研究使用,请遵守相关服务条款和法律法规。使用本项目所产生的任何后果由使用者自行承担。