简体中文
几分钟内开始使用 Midjourney API 生成令人惊叹的AI图像
https://api.kie.ai
Authorization: Bearer YOUR_API_KEY
async function generateImage() { try { const response = await fetch('https://api.kie.ai/api/v1/mj/generate', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ taskType: 'mj_txt2img', prompt: '一幅日落时分雄伟的雪山风景画,山峰被夕阳映照成金色', speed: 'relaxed', aspectRatio: '16:9', version: '7' }) }); const data = await response.json(); if (response.ok && data.code === 200) { console.log('任务已提交:', data); console.log('任务ID:', data.data.taskId); return data.data.taskId; } else { console.error('请求失败:', data.msg || '未知错误'); return null; } } catch (error) { console.error('错误:', error.message); return null; } } generateImage();
curl -X GET "https://api.kie.ai/api/v1/mj/record-info?taskId=YOUR_TASK_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
{ "code": 200, "msg": "success", "data": { "taskId": "mj_task_abcdef123456" } }
{ "code": 200, "msg": "success", "data": { "taskId": "mj_task_abcdef123456", "successFlag": 1, "resultInfoJson": { "resultUrls": [ {"resultUrl": "https://example.com/image1.jpg"}, {"resultUrl": "https://example.com/image2.jpg"}, {"resultUrl": "https://example.com/image3.jpg"}, {"resultUrl": "https://example.com/image4.jpg"} ] } } }
{ "taskType": "mj_txt2img", "prompt": "未来主义城市景观,有飞行汽车和霓虹灯光", "aspectRatio": "16:9", "version": "7" }
1:1
16:9
9:16
4:3
7
6.1
6
niji6
class MidjourneyAPI { constructor(apiKey) { this.apiKey = apiKey; this.baseUrl = 'https://api.kie.ai/api/v1/mj'; } async generateImage(options) { const response = await fetch(`${this.baseUrl}/generate`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify(options) }); const result = await response.json(); if (!response.ok || result.code !== 200) { throw new Error(`生成失败: ${result.msg || '未知错误'}`); } return result.data.taskId; } async waitForCompletion(taskId, maxWaitTime = 600000) { // 最长等待10分钟 const startTime = Date.now(); while (Date.now() - startTime < maxWaitTime) { const status = await this.getTaskStatus(taskId); switch (status.successFlag) { case 0: console.log('任务生成中,继续等待...'); break; case 1: console.log('生成成功完成!'); return status.resultInfoJson; case 2: const taskError = status.errorMessage || '任务生成失败'; console.error('任务生成失败:', taskError); if (status.errorCode) { console.error('错误代码:', status.errorCode); } throw new Error(taskError); case 3: const generateError = status.errorMessage || '任务创建成功但生成失败'; console.error('生成失败:', generateError); if (status.errorCode) { console.error('错误代码:', status.errorCode); } throw new Error(generateError); default: console.log(`未知状态: ${status.successFlag}`); if (status.errorMessage) { console.error('错误信息:', status.errorMessage); } break; } // 等待30秒后再次检查 await new Promise(resolve => setTimeout(resolve, 30000)); } throw new Error('生成超时'); } async getTaskStatus(taskId) { const response = await fetch(`${this.baseUrl}/record-info?taskId=${taskId}`, { method: 'GET', headers: { 'Authorization': `Bearer ${this.apiKey}` } }); const result = await response.json(); if (!response.ok || result.code !== 200) { throw new Error(`查询状态失败: ${result.msg || '未知错误'}`); } return result.data; } async upscaleImage(taskId, index) { const response = await fetch(`${this.baseUrl}/upscale`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ taskId, index }) }); const result = await response.json(); if (!response.ok || result.code !== 200) { throw new Error(`放大失败: ${result.msg || '未知错误'}`); } return result.data.taskId; } } // 使用示例 async function main() { const api = new MidjourneyAPI('YOUR_API_KEY'); try { // 文本转图像生成 console.log('开始图像生成...'); const taskId = await api.generateImage({ taskType: 'mj_txt2img', prompt: '一座雄伟的古老城堡,矗立在云雾缭绕的山峰之上,夕阳西下,金光洒在城堡的石墙上', speed: 'fast', aspectRatio: '16:9', version: '7', stylization: 500 }); // 等待完成 console.log(`任务ID: ${taskId}。等待完成...`); const result = await api.waitForCompletion(taskId); console.log('图像生成成功!'); console.log('生成的图像数量:', result.resultUrls.length); result.resultUrls.forEach((urlInfo, index) => { console.log(`图像 ${index + 1}: ${urlInfo.resultUrl}`); }); // 放大第一张图像 console.log('\n开始放大第一张图像...'); const upscaleTaskId = await api.upscaleImage(taskId, 1); const upscaleResult = await api.waitForCompletion(upscaleTaskId); console.log('图像放大成功!'); console.log('放大后图像:', upscaleResult.resultUrls[0].resultUrl); } catch (error) { console.error('错误:', error.message); } } main();
{ "taskType": "mj_txt2img", "prompt": "一个宁静的禅意花园,樱花盛开", "callBackUrl": "https://your-app.com/webhook/mj-callback", "aspectRatio": "16:9" }
提示词工程
性能优化
成本管理
错误处理