所有接口(创建任务、查询进度、查询余额)都需要在 HTTP Header 中携带认证头,缺失或错误一律返回 HTTP 401:
API Key 在个人中心 → API 密钥生成,明文仅显示一次,请妥善保存。每账号最多 5 把有效密钥,可在个人中心随时吊销。
⚠️ 开放 API 仅对订阅会员开放:会员有效期内可创建与使用 Key,到期后所有调用返回 HTTP 403。查询接口同样需要认证,且只能查询本账号自己创建的任务(查他人任务返回 404)。
上传一张材质照片,提交材质生成任务。受理成功即扣 1 积分,返回 task_id 供后续查询。
| 参数 | 类型 | 描述 |
|---|---|---|
| image | file | 素材图片文件(multipart 表单),≤20MB,JPEG / PNG / WebP。与 image_url 二选一,同时提供时优先 image |
| image_url | string | 素材图片的公网 http(s) 地址(JSON Body 方式),≤20MB。与 image 二选一 |
cURL · 方式一:multipart 直接上传图片(推荐)
cURL · 方式二:JSON 传图片 URL
Python
| 参数 | 类型 | 描述 |
|---|---|---|
| ok | boolean | 请求是否受理成功(true / false) |
| task_id | string | 任务唯一标识(W + 日期_时间_随机串),查询进度、获取成果均凭此 ID |
| status | string | 任务状态,创建成功时固定为 running |
| progress | integer | 进度百分比,创建成功时为 0(实时进度用查询进度接口轮询) |
| status_url | string | 查询进度接口的完整 URL(路径式写法),可直接 GET 轮询(同样需带认证头) |
| balance | integer | 扣费后的积分余额 |
▸ 受理成功即扣 1 积分,任务失败自动全额退回。
▸ 图片预处理(EXIF 转正、长边归一 1536px)由服务端自动完成。
▸ API 仅接受完整图片,蒙版 / 区域裁切请调用方自行预处理后再上传。
轮询任务状态与处理进度。两种地址格式等价,任选其一:路径式 /api/v1/tasks/W20261020_152956_6f5ac1 或查询串式 /api/v1/tasks/?task_id=W20261020_152956_6f5ac1。查询请求同样必须携带认证头,否则返回 401。
| 参数 | 类型 | 描述 |
|---|---|---|
| task_id | string | 创建任务时返回的任务标识。路径式写在 URL 路径中,查询串式写在 ?task_id= 参数中 |
cURL
Python
返回示例(已完成,results 字段说明见「成果贴图说明」)
| 参数 | 类型 | 描述 |
|---|---|---|
| ok | boolean | 请求是否成功(true / false) |
| task_id | string | 任务唯一标识,与创建时返回一致 |
| status | string | 任务状态:running 处理中 / succeeded 已完成 / failed 已失败(失败时积分自动退回) |
| progress | integer | 进度 0-100:30% = 材质识别完成,50% = 参数装配完成,52-90% = 贴图派生中,100% = 渲染完成 |
| stage_label | string | 当前处理阶段的可读描述(材质识别中 / 参数生成中 / 贴图生成中 / 任务完成 / 任务失败),可用于界面展示 |
| error | string|null | 仅 status=failed 时有值,失败原因 |
| note | string|null | 仅 status=failed 时有值,附加说明(如「积分已自动退回」) |
| results | object|null | 仅 status=succeeded 时有值,成果贴图 URL 集合,字段说明见「成果贴图说明」 |
▸ 建议每 3-5 秒轮询一次,status 变为 succeeded 或 failed 后停止轮询(限频 60 次/分钟)。
▸ 任务只能查询本账号自己创建的,查他人任务返回 404。
查询当前 API Key 对应账号的积分余额与会员有效期,同样需携带认证头。
无(仅认证头)。
cURL
Python
| 参数 | 类型 | 描述 |
|---|---|---|
| ok | boolean | 请求是否成功(true / false) |
| balance | integer | 当前积分余额 |
| vip_until | string | 订阅会员有效期(会员到期后 API 调用返回 403) |
任务成功(status=succeeded)后 results 返回 PBR 贴图组(2048px 无缝)与渲染预览的下载 URL,各字段说明:
| 字段 | 类型 | 描述 |
|---|---|---|
| albedo | string | 无缝化反照率贴图(基础颜色,sRGB) |
| normal | string | 法线贴图(OpenGL 约定,Y+ 向上,linear) |
| roughness | string | 粗糙度贴图(linear) |
| height | string | 高度 / 置换贴图(linear) |
| ao | string | 环境光遮蔽贴图(linear) |
| preview_sphere | string | 材质球渲染预览图 |
| preview_cube | string | 材质块渲染预览图 |
所有 URL 均可直接下载,无需认证。API 交付内容与站内「一键下载全部」压缩包完全一致(5 张贴图 + 2 张预览)。任务失败时 error 给出原因,对应积分已自动退回。
出错时 HTTP 状态码非 200,响应体格式统一为 {"ok": false, "error": "错误码", "message": "说明"}。
| HTTP | error | 描述 |
|---|---|---|
| 401 | missing_or_bad_bearer | 缺少 Authorization 请求头或格式错误(所有接口均需认证头) |
| 401 | invalid_key | API Key 无效或已被吊销 |
| 403 | vip_required | 非订阅会员或会员已到期 |
| 402 | insufficient_credits | 积分余额不足(响应体含当前 balance),请先充值 |
| 400 | no_image | 缺少 image 文件字段(或上传出错) |
| 400 | bad_type | 图片格式不支持,仅支持 JPEG / PNG / WebP |
| 400 | too_large | 图片超过 20MB 上限 |
| 400 | bad_image_url | image_url 不是合法公网 http(s) 地址,或指向内网 |
| 400 | image_download_failed | image_url 下载失败(或超过 20MB) |
| 400 | bad_task_id | 查询时 task_id 缺失或格式不正确 |
| 404 | task_not_found | 任务不存在,或不属于当前 API Key 对应账号 |
| 429 | rate_limited | 触发限频:任务提交 2 次/分钟,进度查询 60 次/分钟 |
| 429 | queue_busy | 当前排队任务过多,请稍后再试 |
Beematra 以「积分」计量能力消耗(Beta 公测期,2026-10-13 起执行)。英文版产品发布后,同一体系将统一以 token 表述,规则不变。
| 获取 | 新用户注册赠送 5 积分;充值套餐即将上线(见 套餐与充值)。 |
| 消耗 | Beta 版材质生成任务每次消耗 1 积分,提交任务时即时扣除;任务失败自动全额退回。开放 API 同一口径:1 次任务调用 = 1 积分,与站内共享同一积分池与有效期规则。 |
| 有效期 | 积分自发放之日起 30 天内有效,到期未使用部分自动失效清零。消耗时按「先到期先消耗」(FIFO)规则优先扣减最早到期的积分。 |
| 查询 | 个人中心 → 财务信息 → 积分明细:每笔发放(含到期日)、消耗、失效、退回均逐条可查,余额恒等于所有未过期批次剩余之和。 |
| 使用前提 | 生成功能需登录后使用;积分余额不足时无法提交任务,需充值后继续。 |