🎨 免费的AI图像和视频生成API服务 - 基于即梦AI(国内站)和dreamina(国际站)的逆向工程实现。
⭐ 如果这个项目对你有帮助,请给个 Star 支持一下! 你的支持是我们持续更新的动力。
🔔 Watch 本项目以获取最新功能更新通知。
💬 加入 Telegram 交流群: https://t.me/jimeng_api — 问题反馈、使用交流、功能讨论。
- 🎨 AI图像生成: 支持多种模型和分辨率(默认2K,支持4K,1K)
- 🖼️ 图生图合成: 支持本地图片或者图片URL
- 🎬 AI视频生成: 支持文本到视频生成,增加国内站图生视频的本地图片上传功能
- 🌐 国际站支持: 新增对即梦国际站(dreamina)文生图以及图生图API的支持,有问题提issue
- 🔄 智能轮询: 自适应轮询机制,优化生成效率
- 🛡️ 统一异常处理: 完善的错误处理和重试机制
- 📊 详细日志: 结构化日志记录,便于调试
- 🐳 Docker支持: 容器化部署,开箱即用
- ⚙️ 日志级别控制: 可通过配置文件动态调整日志输出级别
- 此项目属于研究交流学习性质,不接受任何资金捐助和金钱交易!
- 仅限自用和个人研究,避免对官方造成服务压力,否则轻者可能封号,重者可能触犯法律!
- 仅限自用和个人研究,避免对官方造成服务压力,否则轻者可能封号,重者可能触犯法律!
- 仅限自用和个人研究,避免对官方造成服务压力,否则轻者可能封号,重者可能触犯法律!
现在通过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.5",
"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
- 国内站 (即梦)、国际站 (dreamina)获取sessionid的方法相同,见下图。
注意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: 支持在 Token 中绑定代理(HTTP/SOCKS5等),详见 Token 绑定代理功能。
注意3: 国内站和国际站现已同时支持文生图和图生图,国际站添加nanobanana和nanobananapro模型。
注意4: 国际站使用nanobanana模型时的分辨率规则:
- 美国站 (us-): 生成的图像固定为 1024x1024 和 2k 清晰度,忽略用户传入的 ratio 和 resolution 参数
- 香港/日本/新加坡站 (hk-/jp-/sg-): 强制使用 1k 清晰度,但支持自定义 ratio 参数(如 16:9、4:3 等)
- Node.js 18+
- npm 或 yarn
- Docker (可选)
拉取命令
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- ✅ 多阶段构建:优化镜像大小(170MB)
- ✅ 非root用户:增强安全性(jimeng用户)
- ✅ 健康检查:自动监控服务状态
- ✅ 统一端口:容器内外均使用5100端口
- ✅ 日志管理:结构化日志输出
name: jimeng-api
route: src/api/routes/index.ts
port: 5100requestLog: true
debug: false
log_level: info # 日志级别: error, warning, info(默认), debug本项目提供了一个专用的 Claude Code Skill,方便在 Claude Code 中快速调用即梦API生成图片。
- 🎯 快速生成: 直接在对话中使用即梦API生成图片
- 📁 自动保存: 生成的图片自动保存到项目的
/pic目录 - 🔄 格式转换: 自动将 WebP 格式转换为 PNG
- 🎨 双模式支持: 支持文生图和图生图两种模式
- ⚙️ 可配置参数: 支持自定义比例、分辨率、模型等参数
- 确保 jimeng-api 服务正在运行:
# 使用 Docker 启动服务
docker-compose up -d
# 或
docker run -d --name jimeng-api -p 5100:5100 ghcr.io/iptag/jimeng-api:latest- 将 skill 复制到 Claude Code 的 skills 目录:
# 复制到用户级别的全局 skills 目录
cp -r jimeng-api ~/.claude/skills/
# 或者复制到项目级别的 skills 目录
cp -r jimeng-api ./.claude/skills/- 安装 Python 依赖:
pip install requests Pillow在 Claude Code 中,您可以直接对话使用:
用户: "我的sessionid为xxxxx,用即梦生成一张2K分辨率的16:9图片,内容是未来都市的日落景色"
Claude: [自动调用 skill,生成图片并保存到 /pic 目录]
更多详细用法请参见 jimeng-api/Skill.md。
POST /v1/images/generations
请求参数:
model(string, 可选): 使用的模型名称。国内站和国际站(US/HK/JP/SG)均默认jimeng-4.5。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。⚠️ 此参数仅对 jimeng-4.0/jimeng-4.1/jimeng-4.5/jimeng-4.6/jimeng-5.0 模型有效,其他模型将忽略此参数。 启用后系统会根据提示词自动推断最佳图像比例(例如:"竖屏" → 9:16,"横屏" → 16:9)。negative_prompt(string, 可选): 负面提示词sample_strength(number, 可选): 采样强度 (0.0-1.0)response_format(string, 可选): 响应格式 ("url" 或 "b64_json")
⏱️ 超时设置: 图像生成最长等待 30 分钟。高峰期可能需要排队,请耐心等待。
# 默认参数(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.5",
"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.5",
"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.5",
"prompt": "奔跑的狮子,竖屏",
"resolution": "2k",
"intelligent_ratio": true
}'支持的模型:
nanobananapro: 仅国际站支持,支持ratio和resolution参数nanobanana: 仅国际站支持jimeng-5.0: 国内站及亚洲国际站 (HK/JP/SG) 支持jimeng-4.6: 国内站及亚洲国际站 (HK/JP/SG) 支持jimeng-4.5: 国内、国际站均支持,支持 2k/4k 全部 ratio 及 intelligent_ratio (所有站点默认模型)jimeng-4.1: 国内、国际站均支持,支持 2k/4k 全部 ratio 及 intelligent_ratiojimeng-4.0: 国内、国际站均支持jimeng-3.1: 仅国内站支持jimeng-3.0: 国内、国际站均支持
支持的比例及对应分辨率 :
| resolution | ratio | 分辨率 |
|---|---|---|
1k |
1:1 |
1024×1024 |
4:3 |
768×1024 | |
3:4 |
1024×768 | |
16:9 |
1024×576 | |
9:16 |
576×1024 | |
3:2 |
1024×682 | |
2:3 |
682×1024 | |
21:9 |
1195×512 | |
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.5" \
-F "images=@/path/to/your/local/cat.jpg"请求参数:
model(string, 可选): 使用的模型名称。国内站和国际站(US/HK/JP/SG)均默认jimeng-4.5。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。⚠️ 此参数仅对 jimeng-4.0/jimeng-4.1/jimeng-4.5/jimeng-4.6/jimeng-5.0 模型有效,其他模型将忽略此参数。 启用后系统会根据提示词和输入图片自动调整输出比例。negative_prompt(string, 可选): 负面提示词sample_strength(number, 可选): 采样强度 (0.0-1.0)response_format(string, 可选): 响应格式 ("url"(默认) 或 "b64_json")
使用限制:
- 输入图片数量: 1-10张
- 支持的图片格式: JPG, PNG, WebP等常见格式
- 图片大小限制: 建议单张图片不超过100MB
- 生成时间: 通常30秒-5分钟,复杂合成可能需要更长时间
使用示例:
# 示例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.5",
"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.5" \
-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.5" \
-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是否可访问,确保图片格式正确,文件大小不超过100MB。
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)生成一段视频。支持四种生成模式:
- 文生视频(Text-to-Video):纯文本提示词,不使用任何图片
- 图生视频(Image-to-Video):使用单张图片作为首帧
- 首尾帧视频(First-Last Frame):使用两张图片分别作为首帧和尾帧
- 全能模式(Omni Reference)(新):混合图片+视频作为参考素材,在 prompt 中通过
@字段名引用素材并描述其作用。仅jimeng-video-seedance-2.0模型支持。
模式检测:系统根据图片的存在情况自动判断生成模式:
- 无图片 → 文生视频模式
- 1张图片 → 图生视频模式(仅提供 first_frame_image)
- 2张图片 → 首尾帧视频模式(first_frame_image 和 end_frame_image 均提供)
functionMode=omni_reference→ 全能模式(需显式传入参数)
请求参数:
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。注意:仅jimeng-video-3.0和jimeng-video-3.0-fast支持此参数,其他模型会忽略。duration(number, 可选): 视频时长(秒)。不同模型支持的值:jimeng-video-veo3/jimeng-video-veo3.1:8(固定)jimeng-video-sora2:4(默认)、8、12jimeng-video-seedance-2.0:4~15(支持任意整数秒,默认5)jimeng-video-3.5-pro:5(默认)、10、12- 其他模型:
5(默认)、10
file_paths(array, 可选): 一个包含图片URL的数组,用于指定视频的首帧(数组第1个元素)和尾帧(数组第2个元素)。[file](file, 可选): 通过multipart/form-data方式上传的本地图片文件(最多2个),用于指定视频的首帧和尾帧。字段名可以任意,例如image1。functionMode(string, 可选): 生成模式。默认为"first_last_frames"。支持的值:"first_last_frames"(默认):标准模式,根据图片数量自动判断文生视频/图生视频/首尾帧模式。"omni_reference":全能模式。需要jimeng-video-seedance-2.0模型。通过指定字段名上传文件:image_file_1~image_file_9(图片)、video_file_1~video_file_3(视频),支持本地文件和网络URL。在 prompt 中使用@字段名引用素材。
response_format(string, 可选): 响应格式,支持url(默认) 或b64_json。
图片输入说明:
- 您可以通过
file_paths(URL数组) 或直接上传文件两种方式提供输入图片。- 如果两种方式同时提供,系统将优先使用本地上传的文件。
- 最多支持2张图片,第1张作为视频首帧,第2张作为视频尾帧。
- 重要:一旦提供图片输入(图生视频或首尾帧视频),
ratio参数将被忽略,视频比例将由输入图片的实际比例决定。resolution参数仍然有效。
全能模式 (Omni Reference)(新):
- 需要
functionMode=omni_reference且model=jimeng-video-seedance-2.0。- 素材数量限制:
- 最多 9 张图片(
image_file_1~image_file_9)- 最多 3 个视频(
video_file_1~video_file_3)- 图片+视频总数不超过 12 个
- 所有视频总时长不超过 15 秒
- 图片输入支持三种方式(优先级从高到低):
- 本地文件上传:通过
multipart/form-data,字段名为image_file_1~image_file_9(如 curl-F "image_file_1=@local.jpg")- 表单字段传入 URL:同样的字段名,值为 URL 字符串而非文件(如 curl
-F "image_file_1=https://...",无@前缀)。服务端会先下载图片再上传。file_paths/filePaths数组:在 JSON body 中传入 URL 数组,按顺序映射到image_file_1/image_file_2... 槽位。- 三种方式可以自由混搭——每个槽位由优先级最高的来源填充。
- 视频输入支持两种方式(优先级从高到低):
- 本地文件上传:通过
multipart/form-data,字段名为video_file_1~video_file_3(如 curl-F "video_file_1=@local.mp4")- 表单字段传入 URL:同样的字段名,值为 URL 字符串而非文件(如 curl
-F "video_file_1=https://...",无@前缀)。服务端会先下载视频再上传。- 至少提供1个素材(图片或视频),最多12个文件。
- 在
prompt中使用@字段名(如@image_file_1、@video_file_1)或@原始文件名引用素材,描述每个素材的作用。- 注意:使用 curl
-F参数时,prompt 值中的@符号会被解释为文件引用。请使用--form-string代替-F来发送 prompt 字段。- Prompt 示例:
"@image_file_1作为首帧,@image_file_2作为尾帧,运动动作模仿@video_file_1"
支持的视频模型:
jimeng-video-seedance-2.0- Seedance 2.0,仅国内站支持,支持4~15秒时长,支持全能模式 (Omni Reference) (最新)jimeng-video-seedance-2.0-fast- Seedance 2.0 Fast,仅国内站支持,支持4~15秒时长,支持全能模式 (Omni Reference),速度更快jimeng-video-3.5-pro- 专业版v3.5,国内/国际站均支持 (默认)jimeng-video-veo3- Veo3模型,仅亚洲国际站 (HK/JP/SG) 支持,固定8秒时长jimeng-video-veo3.1- Veo3.1模型,仅亚洲国际站 (HK/JP/SG) 支持,固定8秒时长jimeng-video-sora2- Sora2模型,仅亚洲国际站 (HK/JP/SG) 支持jimeng-video-3.0-pro- 专业版,国内站和亚洲国际站 (HK/JP/SG) 支持jimeng-video-3.0- 标准版,国内/国际站均支持jimeng-video-3.0-fast- 极速版,国内站和亚洲国际站 (HK/JP/SG) 支持jimeng-video-2.0-pro- 专业版v2,国内站和亚洲国际站 (HK/JP/SG) 支持jimeng-video-2.0- 标准版v2,国内站和亚洲国际站 (HK/JP/SG) 支持
注意: 美国站仅支持
jimeng-video-3.5-pro和jimeng-video-3.0模型。
使用示例:
# 示例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"]
}'
# 示例5: 全能模式 - 全部本地文件
# 需要 jimeng-video-seedance-2.0 模型
# 注意: prompt 中包含 @ 引用时,使用 --form-string 代替 -F(curl -F 会将 @ 解释为文件)
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Authorization: Bearer YOUR_SESSION_ID" \
--form-string "prompt=@image_file_1作为首帧,@image_file_2作为尾帧,运动动作模仿@video_file" \
-F "model=jimeng-video-seedance-2.0" \
-F "functionMode=omni_reference" \
-F "ratio=16:9" \
-F "duration=5" \
-F "image_file_1=@/path/to/first.png" \
-F "image_file_2=@/path/to/second.png" \
-F "video_file=@/path/to/reference-video.mp4"
# 示例6: 全能模式 - 网络图片URL + 本地视频混合
# image_file_1/image_file_2 使用URL(无 @ 前缀),video_file 使用本地文件(有 @ 前缀)
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Authorization: Bearer YOUR_SESSION_ID" \
--form-string "prompt=@image_file_1作为首帧,@image_file_2作为尾帧,运动动作模仿@video_file" \
-F "model=jimeng-video-seedance-2.0" \
-F "functionMode=omni_reference" \
-F "ratio=16:9" \
-F "duration=5" \
-F "image_file_1=https://example.com/first.jpg" \
-F "image_file_2=https://example.com/second.jpg" \
-F "video_file=@/path/to/reference-video.mp4"
# 示例7: 全能模式 - 全部素材使用网络URL(无需本地文件)
# image_file_1/image_file_2/video_file 均使用URL(无 @ 前缀)
curl -X POST http://localhost:5100/v1/videos/generations \
-H "Authorization: Bearer YOUR_SESSION_ID" \
--form-string "prompt=@image_file_1作为首帧,@image_file_2作为尾帧,运动动作模仿@video_file" \
-F "model=jimeng-video-seedance-2.0" \
-F "functionMode=omni_reference" \
-F "ratio=16:9" \
-F "duration=5" \
-F "image_file_1=https://example.com/first.jpg" \
-F "image_file_2=https://example.com/second.jpg" \
-F "video_file=https://example.com/reference-video.mp4"
功能说明:用户可以在 token 中嵌入代理 URL,解决因 IP 限制导致签到获取 0 积分的问题。每个账号可以绑定独立的代理。
Token 格式:
[代理URL@][地区前缀-]session_id
代理前缀在最外层,地区前缀紧跟 session_id
支持的代理协议:
- HTTP 代理:
http://host:port - HTTPS 代理:
https://host:port - SOCKS4 代理:
socks4://host:port - SOCKS5 代理:
socks5://host:port - 带认证的代理:
http://user:pass@host:port
完整示例:
| 场景 | Token 格式 |
|---|---|
| 国内站,无代理 | session_id_xxx |
| 美国站,无代理 | us-session_id_xxx |
| 香港站,无代理 | hk-session_id_xxx |
| 国内站 + SOCKS5代理 | socks5://127.0.0.1:1080@session_id_xxx |
| 美国站 + HTTP代理 | http://127.0.0.1:7890@us-session_id_xxx |
| 香港站 + 带认证代理 | http://user:pass@proxy.com:8080@hk-session_id_xxx |
API 调用示例:
# 单个 token 带代理
curl -X POST http://localhost:5100/v1/images/generations \
-H "Authorization: Bearer socks5://127.0.0.1:1080@us-session_id" \
-H "Content-Type: application/json" \
-d '{"prompt": "a cat", "model": "jimeng-3.0"}'
# 多个 token,部分带代理
curl -X POST http://localhost:5100/token/receive \
-H "Authorization: Bearer socks5://1.2.3.4:1080@us-token1,http://5.6.7.8:8080@hk-token2,token3"向后兼容:不带代理的 token 格式完全兼容,无需修改。
POST /token/check
检查token是否有效。
请求参数:
token(string): 要检查的session token
响应格式:
{
"live": true
}POST /token/points
获取一个或多个token的当前积分余额。
请求头:
Authorization: Bearer token,多个token用逗号分隔
响应格式:
[
{
"token": "your_token",
"points": {
"giftCredit": 10,
"purchaseCredit": 0,
"vipCredit": 0,
"totalCredit": 10
}
}
]POST /token/receive
手动触发每日积分领取(签到)。无论领取是否成功,都会返回最新的积分信息。
请求头:
Authorization: Bearer token,多个token用逗号分隔
响应格式:
[
{
"token": "your_token",
"credits": {
"giftCredit": 10,
"purchaseCredit": 0,
"vipCredit": 0,
"totalCredit": 10
},
"received": true,
"error": "可选的错误信息"
}
]响应字段说明:
token(string): 处理的tokencredits(object): 操作后的当前积分余额received(boolean): 是否成功领取积分(true表示已领取,false表示已有积分或领取失败)error(string, 可选): 领取失败时的错误信息
使用示例:
# 单个token
curl -X POST http://localhost:5100/token/receive \
-H "Authorization: Bearer YOUR_SESSION_ID"
# 多个token批量签到
curl -X POST http://localhost:5100/token/receive \
-H "Authorization: Bearer TOKEN1,TOKEN2,TOKEN3"{
"created": 1759058768,
"data": [
{
"url": "https://example.com/image1.jpg"
},
{
"url": "https://example.com/image2.jpg"
}
]
}jimeng-api/
├── src/
│ ├── api/
│ │ ├── builders/ # 请求构建器
│ │ │ └── payload-builder.ts # API请求负载构建
│ │ ├── controllers/ # 控制器层
│ │ │ ├── core.ts # 核心功能(网络请求、文件处理)
│ │ │ ├── images.ts # 图像生成逻辑
│ │ │ └── videos.ts # 视频生成逻辑
│ │ ├── routes/ # 路由定义
│ │ │ ├── index.ts # 路由入口
│ │ │ ├── images.ts # 图像生成路由
│ │ │ ├── videos.ts # 视频生成路由
│ │ │ ├── token.ts # Token管理路由
│ │ │ ├── models.ts # 模型列表路由
│ │ │ └── ping.ts # 健康检查路由
│ │ └── consts/ # 常量定义
│ │ ├── common.ts # 通用常量
│ │ ├── dreamina.ts # Dreamina站点常量
│ │ └── exceptions.ts # 异常常量
│ ├── lib/ # 核心库
│ │ ├── configs/ # 配置加载
│ │ │ ├── service-config.ts # 服务配置
│ │ │ └── system-config.ts # 系统配置
│ │ ├── consts/ # 常量
│ │ ├── exceptions/ # 异常类
│ │ │ ├── Exception.ts # 基础异常
│ │ │ └── APIException.ts # API异常
│ │ ├── request/ # 请求处理
│ │ │ └── Request.ts # 请求封装
│ │ ├── response/ # 响应处理
│ │ │ ├── Response.ts # 响应封装
│ │ │ ├── Body.ts # 响应体基类
│ │ │ ├── SuccessfulBody.ts # 成功响应体
│ │ │ └── FailureBody.ts # 失败响应体
│ │ ├── config.ts # 配置中心
│ │ ├── server.ts # 服务器核心
│ │ ├── logger.ts # 日志记录器
│ │ ├── error-handler.ts # 统一错误处理
│ │ ├── smart-poller.ts # 智能轮询器
│ │ ├── aws-signature.ts # AWS签名
│ │ ├── environment.ts # 环境变量处理
│ │ ├── initialize.ts # 初始化逻辑
│ │ ├── http-status-codes.ts # HTTP状态码常量
│ │ ├── image-uploader.ts # 图片上传工具
│ │ ├── image-utils.ts # 图片处理工具
│ │ ├── region-utils.ts # 区域处理工具
│ │ ├── video-uploader.ts # 视频上传工具 (VOD)
│ │ └── util.ts # 通用工具函数
│ └── index.ts # 入口文件
├── configs/ # 配置文件
├── Dockerfile # Docker配置
└── package.json # 项目配置
- 基于状态码自适应调整轮询间隔
- 多重退出条件,避免无效等待
- 详细的进度跟踪和日志记录
- 分类错误处理(网络错误、API错误、超时等)
- 自动重试机制
- 用户友好的错误提示
- 自动修复常见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失效
- 重新获取对应站点的Sessionid
- 检查Sessionid格式是否正确
-
生成超时
- 图像生成:最长等待 15 分钟(高峰期可能需要排队)
- 视频生成:最长等待 20 分钟
- 系统会自动处理超时情况,超时后会返回错误信息
-
积分不足
- 前往即梦/dreamina官网查看积分余额
- 系统会提供详细的积分状态信息
本项目基于以下开源项目的贡献和启发:
- jimeng-free-api-all - 感谢该项目为即梦API逆向工程提供的重要参考和技术基础,本项目在其基础上进行了功能完善和架构优化
GPL v3 License - 详见 LICENSE 文件
本项目仅供学习和研究使用,请遵守相关服务条款和法律法规。使用本项目所产生的任何后果由使用者自行承担。
