API
Webhooks (网络钩子)

Webhooks (网络钩子)

在我们的快速开始指南中,我们发送了一个POST请求来生成初始图像,然后使用响应中的id来发出GET请求,以检查图像生成的状态并获取图像数据。

这样做的一些问题包括:

  • 每隔X秒钟就必须检查状态,因此会消耗资源
  • 尤其是如果你不经常检查(特别是使用make.com或Zapier时,它们不允许非常频繁的检查),你就不会立即得到通知

为了解决这些问题,你可以设置webhooks,当Midjourney完成你的图像生成时,会通知你。

操作方式如下:

添加webhook网址

在您登录ImagineAPI.dev 仪表板 (opens in a new tab)后。点击您的用户名(左下角)。

滚动到底部,点击添加webhook按钮。

在这里,你可以输入你的webhook URL。完成后,不要忘记保存你的用户信息

操作看起来是这样的:

添加Midjourney webhook

Webhook数据结构

{
  "event": "images.items.create" | "images.items.update",
  "payload": {
    "id": string,
    "prompt": string,
    "results": null | string,
    "user_created": string,
    "date_created": string,
    "status": "pending" | "in-progress" | "completed" | "failed",
    "progress": null | number,
    "url": null | string,
    "error": null | string,
    "upscaled_urls": null | string[],
    "upscaled": string[],
    "ref": string | null,
  }
}

在图像加载时显示进度

为了在图像加载时向用户显示进度指示器,请关注status字段,当它变为in-progress时,progress字段是一个大于0的数字url将包含部分生成的Midjourney图像:

例如:

{
    "event": "images.items.update",
    "payload": {
        "id": "41b7ac2b-8a51-481b-a19c-74626a93cacc",
        "prompt": "冬日城市风光",
        "results": "81d2bf65-1997-485c-ad2f-3e4358a96995",
        "user_created": "fcb5549b-f8a6-4a5f-90e9-7e337209c893",
        "date_created": "2023-12-19T23:01:47.708Z",
        "status": "in-progress",
        "progress": 15,
        "url": "https://cl.imagineapi.dev/assets/81d2bf65-1997-485c-ad2f-3e4358a96995/81d2bf65-1997-485c-ad2f-3e4358a96995.webp",
        "error": null,
        "upscaled_urls": null,
        "upscaled": [],
        "ref": null
    }
}

在这种情况下,url将是:部分生成的Midjourney图像

换句话说,如果你在statusin-progress时获得一个url值,那将是部分生成的Midjourney图像。

获取最终图像

一旦图像生成,你将收到一个新的webhook,其status: completed

{
    "event": "images.items.update",
    "payload": {
        "id": "41b7ac2b-8a51-481b-a19c-74626a93cacc",
        "prompt": "冬日城市风光",
        "results": "23a8b0bb-7aee-4f28-99dd-b7ca7a4f1e84",
        "user_created": "fcb5549b-f8a6-4a5f-90e9-7e337209c893",
        "date_created": "2023-12-19T23:01:47.708Z",
        "status": "completed",
        "progress": null,
        "url": "https://cl.imagineapi.dev/assets/23a8b0bb-7aee-4f28-99dd-b7ca7a4f1e84/23a8b0bb-7aee-4f28-99dd-b7ca7a4f1e84.png",
        "error": null,
        "upscaled_urls": [
            "https://cl.imagineapi.dev/assets/0f059246-7520-44de-a546-4aa4c16ff5d7/0f059246-7520-44de-a546-4aa4c16ff5d7.png",
            "https://cl.imagineapi.dev/assets/0ed8da36-0bbe-4879-acc8-0607f539bacf/0ed8da36-0bbe-4879-acc8-0607f539bacf.png",
            "https://cl.imagineapi.dev/assets/9eff353d-f0a4-4c97-af99-bb85c5861b7e/9eff353d-f0a4-4c97-af99-bb85c5861b7e.png",
            "https://cl.imagineapi.dev/assets/f2479b70-66d1-436b-bec4-5a028f5a558a/f2479b70-66d1-436b-bec4-5a028f5a558a.png"
        ],
        "upscaled": [
            "0ed8da36-0bbe-4879-acc8-0607f539bacf",
            "0f059246-7520-44de-a546-4aa4c16ff5d7",
            "9eff353d-f0a4-4c97-af99-bb85c5861b7e",
            "f2479b70-66d1-436b-bec4-5a028f5a558a"
        ],
        "ref": null
    }
}

要获取放大的图像(共4张),你可以使用upscaled_urls中的字符串数组。 注意:此时的statuscompleted

以上例子中的图像如下所示:

Midjourney放大后的冬景图像

这太棒了,Midjourney 使用了中文提示,并生成了带有中式特色的图像。难道这不令人惊叹吗‽