为批量场景设计的接口
这三类量级我们在网页端已经见过。API 走的是同一条出图管线,只是把浏览器这一层拿掉了。
房产平台与房源门户
新房源进来永远是空房照。上传时每张图打一次接口,整个房源列表在中介打开后台之前就已经出好图,而且风格统一。
家居与家具电商
白底图卖的是单品,场景图卖的是一整套。按 SKU、按风格批量生成场景图,不用为每一个新系列搭一次景、约一次摄影和造型。
装修与设计类 SaaS
你的用户本来就在传房间照。在自家产品里加一步「看看换个风格什么样」,整条流程和客户都留在你这边,不用把人导去别人的站。
两个调用,从头到尾
POST 一张房间照片,拿 id 轮询结果,取回无水印的原图。鉴权用 Settings → API Keys 里生成的 Bearer key。
# 1. 提交一张房间照片
curl -X POST https://spacevo.io/api/v1/render \
-H "Authorization: Bearer sk-your_key" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://cdn.example.com/listings/8412/living-room.jpg",
"style": "scandinavian",
"room_type": "living-room"
}'
# => { "id": "8f4c1d6e-2b7a-4f19-9c3d-5a10e7b64f28",
# "status": "processing", "credits_remaining": 962 }
# 2. 轮询结果
curl https://spacevo.io/api/v1/render/8f4c1d6e-2b7a-4f19-9c3d-5a10e7b64f28 \
-H "Authorization: Bearer sk-your_key"
# => { "id": "8f4c1d6e-2b7a-4f19-9c3d-5a10e7b64f28", "status": "succeeded",
# "image_url": "https://cdn.spacevo.io/interior/api/8f4c1d6e.jpg" }import os
import time
import requests
API = "https://spacevo.io/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SPACEVO_API_KEY']}"}
created = requests.post(
f"{API}/render",
headers=HEADERS,
json={
"image_url": "https://cdn.example.com/listings/8412/living-room.jpg",
"style": "scandinavian",
"room_type": "living-room",
},
timeout=30,
).json()
while True:
render = requests.get(
f"{API}/render/{created['id']}", headers=HEADERS, timeout=30
).json()
if render["status"] in ("succeeded", "failed"):
break
time.sleep(2)
print(render["image_url"])const API = 'https://spacevo.io/api/v1';
const headers = {
Authorization: `Bearer ${process.env.SPACEVO_API_KEY}`,
'Content-Type': 'application/json',
};
const created = await fetch(`${API}/render`, {
method: 'POST',
headers,
body: JSON.stringify({
image_url: 'https://cdn.example.com/listings/8412/living-room.jpg',
style: 'scandinavian',
room_type: 'living-room',
}),
}).then((res) => res.json());
let render;
do {
await new Promise((resolve) => setTimeout(resolve, 2000));
render = await fetch(`${API}/render/${created.id}`, { headers }).then((res) =>
res.json()
);
} while (render.status === 'processing');
console.log(render.image_url);出图是异步的:POST 立刻返回 id 和剩余额度,图片过一会儿在 GET 上拿。完整参数、错误码和限流规则见 API 文档。
一个套餐,一个价
没有阶梯计价要算,月底也不会冒出一张看不懂的账单。量比套餐大,就直接聊,不必在价格页里找答案。
API Plan
$99/月
约合 $0.099 一张
- 每月 1,000 张图片渲染
- 原图输出,无水印
- 含商用授权,可用于房源和商品图
- 每个 key 每分钟 60 次请求
- 额度按月重置,不滚存到下月
- 邮件支持,回你的是做这个产品的人
刷卡即开通,随时可取消。订阅完成后在「设置 → API 密钥」里生成密钥,第一次调用就能跑通。
常见问题
出的图可以直接挂到房源上吗?
可以。API Plan 自带商用授权,出的图能直接上房源门户、宣传册或对客的 CRM。只有一条规矩到哪都适用:多数平台和行业规范要求虚拟软装图必须标注,按你所在市场的要求把说明写上。
一张图多少钱?
约 $0.099。套餐是每月 $99 含 1,000 张,没有额外的按次加价,出图失败也不扣额度。
API 出的图带水印吗?
不带。GET /api/v1/render/{id} 返回的都是全分辨率无水印原图;水印只会出现在网页端用赠送积分出的图上。
1,000 张用完会怎样?
接口返回 402 并停止出图。额度在下一个计费月初重置,没用完的不滚存,所以按真实用量选档;快撞到上限之前先来找我们,一起定下一档。
有免费试用或免费额度吗?
API 这边没有。先在网页端试模型——一次性 $4.90 的 Room Plan 就能做一个房间——出图质量确认了再接 API。
出一张图要多久?
正常负载下几十秒。请按异步来接:POST 拿到 id 存下来,轮询 GET 直到 status 变成 succeeded。限流是每个 key 每分钟 60 次。