成功调用LiblibAI API获取task_id后,许多人会困惑如何获取最终生成的图片地址。实际上,只需掌握异步进度查询接口的使用方法即可。

当你通过LiblibAI API成功获取task_id后,可能不清楚如何获取最终的图片地址,或在轮询状态时遇到问题。过程并不复杂,接下来我们将逐步解析。
使用异步进度查询接口获取任务状态与结果
LiblibAI的所有文生图、图生图、视频生成任务本质上都是异步执行的。这意味着不能指望首次响应直接返回图片URL,必须携带task_id主动查询。
第一步:准备请求参数。构建一个POST请求体,仅需包含{"task_id": "your_task_id_here"},无需其他字段。
第二步:发送HTTP请求。目标URL为https://openapi.liblibai.cloud/v2/async/fetch。请求Header中必须包含Content-Type: application/json以及有效的Authorization: Bearer {AccessKey}——注意此处使用AccessKey而非SecretKey,勿混淆。
第三步:解析返回的JSON数据。关键字段为data.state:
• 值为1 → 任务仍在排队或渲染中,需稍后再次查询。
• 值为2 → 成功!此时data.url即为可直接访问的图片或视频公网地址。
• 值为3 → 失败。data.msg会提供具体原因,如“提示词含违禁词”或“显存超限”。
第四步:提取并使用结果链接。请务必注意,data.url字段是唯一有效的下载入口,切勿自行拼接或修改。该链接带有时效性签名,通常有效期为24小时。过期后需重新查询任务或触发重新生成。
轮询策略与超时控制
任务从提交到完成通常需要3至90秒,具体时长受模型复杂度及队列长度影响。若盲目高频轮询,极易被限流。根据经验,采用指数退避策略是最可靠的方案。
方法一:基础轮询。首次查询后,若state=1,则等待2秒再次查询;若仍为1,则等待4秒;再不行则等待8秒,以此类推,但最大间隔不超过30秒。
方法二:带超时终止的循环。以Python为例,使用time.time()记录起始时间,当总等待时间超过180秒时立即中断,防止程序无限挂起。此时应检查:task_id是否输入错误?API密钥权限是否过期?或者模型服务是否临时不可用?
方法三:监听Webhook。若在调用原始生成接口时,在请求参数中预先添加了callback_url字段(例如https://your-server.com/liblib-hook),则任务完成后LiblibAI会自动将结果POST至该地址。此方式省去轮询,但前提是服务器需能接收公网POST请求并处理验签。
常见失败场景与应对
当data.state == 3且data.msg显示“模型加载失败”时,通常是因为所选Checkpoint未在当前节点部署。解决方法:登录LiblibAI网页端,在对应模型页面确认右上角是否显示“✅ 已就绪”。若未就绪,请更换模型重新尝试。
另一种常见问题是:返回"data.url": null而state == 2。这意味着任务逻辑上已完成,但资源未持久化——通常是由于勾选了“仅缓存不保存”选项。此时需返回LiblibAI网页端图库,使用该task_id进行搜索,然后手动点击“导出原图”以触发持久化。
