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>

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/mcp

Four 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.