Spaces:
Running
Running
File size: 4,452 Bytes
2ff83a9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | API 调用
概述
Lux3D 当前提供 2 个接口,用于完成图生 3D 的异步生成流程:
创建任务
查询任务
调用流程如下:
API Key -> 解析 appuid/appkey/appsecret -> 生成 sign -> 创建任务 -> 查询任务 -> 获取 lux3d_url
建议每 10-15 秒轮询查询任务状态。
鉴权说明
API 调用使用签名方式鉴权。
开发者申请到的 API Key 并不是直接作为请求参数透传给接口,而是需要先解析出以下信息:
appuid
appkey
appsecret
随后按以下规则生成签名:
sign = MD5(appsecret + appkey + appuid + timestamp)
其中:
timestamp 为毫秒级时间戳
sign 作为 query 参数参与接口调用
目前 Lux3D 不提供独立的服务端接口帮助开发者解析 API Key。 如果使用 API 方式接入,开发者需要在本地或自己的服务中先完成 API Key 解析,再使用解析结果调用 Lux3D API。
API Key 解析结果
根据当前实现,API Key 可解析出以下结构:
version:appkey:appsecret:appuid
编码方式为 Base64。
API Key 解析示例
以下示例展示如何从 API Key 中解析出 appkey、appsecret 和 appuid。
JavaScript
const apiKey = "YOUR_API_KEY";
const decoded =
typeof atob === "function"
? atob(apiKey)
: Buffer.from(apiKey, "base64").toString("utf-8");
const [version, appkey, appsecret, appuid] = decoded.split(":");
if (!version || !appkey || !appsecret || !appuid) {
throw new Error("Invalid API Key format");
}
Python
import base64
api_key = "YOUR_API_KEY"
decoded = base64.b64decode(api_key).decode("utf-8")
version, appkey, appsecret, appuid = decoded.split(":")
签名生成示例
以下示例展示如何基于解析结果生成 sign。
JavaScript
const appkey = "YOUR_APPKEY";
const appsecret = "YOUR_APPSECRET";
const appuid = "YOUR_APPUID";
const timestamp = Date.now().toString();
const sign = CryptoJS.MD5(appsecret + appkey + appuid + timestamp).toString();
Python
import hashlib
import time
appkey = "YOUR_APPKEY"
appsecret = "YOUR_APPSECRET"
appuid = "YOUR_APPUID"
timestamp = str(int(time.time() * 1000))
sign = hashlib.md5((appsecret + appkey + appuid + timestamp).encode("utf-8")).hexdigest()
接口列表
接口 方法 说明
https://api.luxreal.ai/global/lux3d/generate/task/create POST 创建图生 3D 任务
https://api.luxreal.ai/global/lux3d/generate/task/get GET 查询图生 3D 任务状态与结果
创建图生 3D 任务
描述
创建图生 3D 任务。
请求成功后返回任务 ID busid,后续可通过查询接口获取任务状态和结果。
API
POST https://api.luxreal.ai/global/lux3d/generate/task/create
Query 参数
参数 是否必须 类型 说明
appuid 是 string 第三方用户 ID
appkey 是 string 由 API Key 解析得到
timestamp 是 long 毫秒级时间戳
sign 是 string 签名结果
Request Body
{
"img": ""
}
Body 参数说明
参数 是否必须 类型 说明
img 是 string 图片 Base64,建议使用 Data URL 格式,例如 data:image/png;base64,...
响应
{
"d": "",
"m": null,
"c": null
}
响应字段说明
参数 是否必须 类型 说明
d 是 long 返回 busid
m 是 string null
c 是 string null
示例
curl -X POST "https://api.luxreal.ai/global/lux3d/generate/task/create?appuid=YOUR_APPUID&appkey=YOUR_APPKEY×tamp=YOUR_TIMESTAMP&sign=YOUR_SIGN" \
-H "Content-Type: application/json" \
-d '{
"img": "data:image/png;base64,BASE64_IMAGE_STRING"
}'
查询图生 3D 任务
描述
根据 busid 查询任务状态和结果。
查询结果中的输出内容有效期为 2 小时,建议在任务成功后尽快获取并保存结果。
API
GET https://api.luxreal.ai/global/lux3d/generate/task/get
Query 参数
参数 是否必须 类型 说明
appuid 是 string 第三方用户 ID
appkey 是 string 由 API Key 解析得到
timestamp 是 long 毫秒级时间戳
sign 是 string 签名结果
busid 是 long 任务 ID
响应
{
"d": {
"busId": "",
"outputs": [
{
"content": null
}
],
"status": ""
},
"m": null,
"c": null
}
响应字段说明
参数 是否必须 类型 说明
d.busId 是 long 主线 ID
d.status 是 int 0 初始化,1 进行中,3 成功,4 失败
d.outputs 否 list<object> 输出列表
d.outputs[].content 否 string 结果内容
m 是 string null
c 是 string null
示例
curl -X GET "https://api.luxreal.ai/global/lux3d/generate/task/get?appuid=YOUR_APPUID&appkey=YOUR_APPKEY×tamp=YOUR_TIMESTAMP&sign=YOUR_SIGN&busid=123456789" |