Rendering API

One POST request: send a viewport capture, sketch or photo, get a photorealistic architectural render back in about 30 seconds. Your geometry is preserved — the API renders what you sent, it does not invent a new building.

Authentication

Every request carries a bearer token. Generate one in your dashboard settings; it is shown once and stored hashed, so keep it somewhere safe. Regenerating invalidates the old key.

Authorization: Bearer arch_live_...

POST /api/v1/render

curl -X POST https://archome.ai/api/v1/render \
  -H "Authorization: Bearer arch_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<base64 PNG>",
    "tool": "sketch_to_render",
    "prompt": "warm oak floors, matte white walls, late afternoon daylight"
  }'

Request body

AlanTipDescription
imagestring (required)Base64 PNG. A data: prefix is stripped automatically. ~10 MB limit.
toolstringinterior | exterior | sketch_to_render (default: sketch_to_render)
promptstringDescribe materials, light and atmosphere. Describe the space, not the geometry.

Response

{
  "url": "https://archome.ai/...",     // permanent render URL
  "generationId": "uuid",
  "creditsUsed": 15,
  "creditsRemaining": 985
}

Errors

Node.js

const res = await fetch("https://archome.ai/api/v1/render", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ARCHOME_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    image: base64Png,           // data: prefix optional
    tool: "interior",           // interior | exterior | sketch_to_render
    prompt: "japandi, warm oak, paper lanterns, soft daylight",
  }),
});
const { url, creditsRemaining } = await res.json();

Python

import base64, os, requests

with open("viewport.png", "rb") as f:
    image = base64.b64encode(f.read()).decode()

r = requests.post(
    "https://archome.ai/api/v1/render",
    headers={"Authorization": f"Bearer {os.environ['ARCHOME_API_KEY']}"},
    json={"image": image, "tool": "exterior",
          "prompt": "charred timber cladding, overcast light"},
    timeout=300,
)
print(r.json()["url"])

Credit cost per call

sketch_to_render15 kredi
interior10 kredi
exterior10 kredi

On the free tier every call costs 30 credits and output is licensed for personal use. On paid plans the real tool price applies and output carries a commercial licence. Nothing is watermarked on any plan.

Already in SketchUp or 3ds Max?

Free plugins call this same endpoint from your current viewport — no code to write.

Frequently asked

How is the API priced?+

By credits, on the same balance as the web app — there is no separate API subscription and no per-seat licence. A sketch-to-render call costs 15 credits, interior or exterior 10. Credits come from your plan or from a one-time pack.

Which tools does the API expose?+

sketch_to_render, interior and exterior. Everything else (video, 2D-to-3D, material analysis, inpainting) currently runs in the web app only.

How long does a call take?+

Roughly 20–40 seconds. The request stays open until the render is finished and returns the permanent URL — there is no polling step.

What are the limits?+

The request body is capped at about 10 MB of image data, and calls are rate-limited per account. A 429 means you hit the rate limit; retry with backoff.

Do free accounts get API access?+

Yes, but each call costs 30 credits, so the 100 free credits to start go quickly and free-tier output carries no commercial licence. Any paid plan adds the licence and charges the standard tool price.

Is there a plugin instead?+

Yes — the SketchUp and 3ds Max plugins call this same endpoint. If you work in either, use the plugin rather than writing your own integration.