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_KEYRenders 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:
| Field | Type | Description |
|---|---|---|
| image | file | Photo of the house. JPEG, PNG, WebP, or HEIC. Max 10MB. |
| material | string | A material name from the catalog endpoint. |
| color | string | A 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/materialsErrors
Errors return JSON like { "error": "..." } with a matching status code:
| Status | Meaning | How to fix |
|---|---|---|
| 400 | Invalid input | Check the field names and use values from /api/v1/materials. |
| 401 | Bad or missing key | Send your key in the Authorization header exactly as shown above. |
| 403 | Plan or billing issue | API access needs an active Growth or Professional plan. |
| 413 | Image too large | Resize or compress the photo under 10MB before sending. |
| 429 | Rate or quota limit | Respect the Retry-After header, or add renders to the account. |
| 502 | Render failed | Not 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.
