RoofRenderRoofRenderAPI Docs

RoofRender API

Render photorealistic roof previews from your own app or website. Send a photo of a house plus a material and color; get back a rendered image in about 20 seconds.

Base URL: https://roofrender.app

Quickstart

Your first render in one command. Replace the key with yours and point at any photo of a house; about 20 seconds later the JSON response contains your rendered image URL.

curl -X POST https://roofrender.app/api/v1/render \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image=@house.jpg" \
  -F "material=Standing Seam Metal" \
  -F "color=Onyx Black"

Authentication

Every request needs an API key, available on Growth and Professional plans. Send it as a header, either way works:

Authorization: Bearer YOUR_API_KEY
X-API-Key: YOUR_API_KEY

Renders draw from your plan's monthly quota. Keep your key secret; contact us to rotate it any time.

Render a roof

POST /api/v1/render with multipart form data:

FieldTypeDescription
imagefilePhoto of the house. JPEG, PNG, WebP, or HEIC. Max 10MB.
materialstringA material name from the catalog endpoint.
colorstringA color available for that material.

Example request

curl -X POST https://roofrender.app/api/v1/render \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image=@house.jpg" \
  -F "material=Standing Seam Metal" \
  -F "color=Onyx Black"

Example response

{
  "render_url": "https://...signed image URL...",
  "material": "Standing Seam Metal",
  "color": "Onyx Black",
  "expires_in": 7200
}

The URL is valid for 2 hours; download the image if you need to keep it. Requests typically complete in 15-30 seconds, so use a client timeout of at least 120 seconds.

List materials and colors

GET /api/v1/materials — no auth required. Returns every material with its category, description, and available colors (with hex values), so your app can build pickers that stay in sync with our catalog.

curl https://roofrender.app/api/v1/materials

Errors

Errors return JSON like { "error": "..." } with a matching status code:

StatusMeaningHow to fix
400Invalid inputCheck the field names and use values from /api/v1/materials.
401Bad or missing keySend your key in the Authorization header exactly as shown above.
403Plan or billing issueAPI access needs an active Growth or Professional plan.
413Image too largeResize or compress the photo under 10MB before sending.
429Rate or quota limitRespect the Retry-After header, or add renders to the account.
502Render failedNot charged against your quota. Retry once; if it persists, try another photo.

API requests are limited to 10 renders per minute per key.

Website widget

Prefer a no-code option? The same renders are available as a drop-in widget for your website: one iframe line, no programming. Ask us for an embed key.

<iframe src="https://roofrender.app/embed/YOUR_EMBED_KEY"
  style="width:100%;max-width:640px;height:1000px;border:0"></iframe>

Get an API key

API access is included with Growth and Professional plans. Email hi@roofrender.app and we'll set you up the same day.