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>MCP server (AI assistants)
RoofRender is also available as an MCP server, so AI assistants like Claude can render roofs as a tool: ask for a house photo in a material and color, get the rendered image back in the conversation. Uses your regular API key and the same plan quota. Two tools are exposed: list_roof_materials and render_roof.
Endpoint
https://roofrender.app/api/mcpFour tools are exposed: list_roof_materials, render_roof (returns the image inline), get_account_usage, and list_recent_renders.
ChatGPT
Enable Developer mode in ChatGPT's settings (its location in the settings menu varies by plan), then create a new connector/plugin with the endpoint URL above and OAuth as the authentication method. You'll be sent to RoofRender to log in and approve — no key handling needed.
Claude (claude.ai)
Settings → Customize → Connectors → "Add custom connector". Enter any name and the endpoint URL above, leave the advanced OAuth fields blank, click Add, then log in and approve when prompted.
Claude Code / other dev tools (API key)
claude mcp add --transport http roofrender https://roofrender.app/api/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Codex (config file)
[mcp_servers.roofrender]
url = "https://roofrender.app/api/mcp"
http_headers = { "Authorization" = "Bearer YOUR_API_KEY" }AI apps reorganize these menus often — if a step doesn't match what you see, search your AI app's help for "add custom MCP connector". The endpoint and OAuth flow above stay the same regardless of client.
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.
