{"openapi":"3.0.3","info":{"title":"Render MCP API","version":"0.2.0","description":"HTML-to-image rendering API. Create a free key with an email, then send HTML/CSS or template+data and receive a hosted PNG/SVG URL. Free beta."},"servers":[{"url":"https://www.rendermcp.com"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"API key from POST /v1/keys"}}},"paths":{"/v1/keys":{"post":{"operationId":"createKey","summary":"Create a free API key for a new email; rotate an existing account's key by calling with the current key (Bearer). Secrets are shown once and never retrievable.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]}}}},"responses":{"200":{"description":"{api_key, email, rotated, note}"},"400":{"description":"Invalid email"}}}},"/v1/render":{"post":{"operationId":"render","summary":"Render HTML or a template to an image (Authorization: Bearer header required)","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"html":{"type":"string","description":"Raw HTML. Satori CSS subset: flexbox only, no grid. Required unless template is set."},"css":{"type":"string","description":"Optional CSS appended in a <style> block."},"template":{"type":"string","description":"Template name (see /v1/templates). Required unless html is set."},"data":{"type":"object","description":"Template data fields."},"brand":{"type":"object","properties":{"name":{"type":"string"},"primary_color":{"type":"string","description":"Hex color, e.g. #5138EE"},"theme":{"type":"string","enum":["indigo","emerald","crimson","amber","ocean","mono"],"description":"Named accent preset; ignored when primary_color is set."},"logo_url":{"type":"string","description":"Public https image URL, fetched and inlined (max 2MB)."},"logo_data":{"type":"string","description":"data:image/... URI used directly as the logo."},"font":{"type":"string","enum":["Inter","Plus Jakarta Sans","Space Grotesk","Poppins","Lora","Playfair Display","Merriweather","Outfit"],"description":"Display font for templates (default Inter)."}}},"width":{"type":"integer","default":1200,"maximum":4096},"height":{"type":"integer","default":630,"maximum":4096},"format":{"type":"string","enum":["png","svg"],"default":"png"},"response":{"type":"string","enum":["url","image"],"default":"url"}}}}}},"responses":{"200":{"description":"Rendered image","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"format":{"type":"string"},"render_ms":{"type":"integer"}}}},"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request"},"401":{"description":"Missing or invalid Authorization header"}}}},"/v1/usage":{"get":{"operationId":"getUsage","summary":"Render counts for the authenticated key","security":[{"bearer":[]}],"responses":{"200":{"description":"{email, month, renders_this_month, renders_total}"}}}},"/v1/templates":{"get":{"operationId":"listTemplates","summary":"List templates with fields and examples (no key needed)","responses":{"200":{"description":"Template catalog"}}}},"/r/{key}":{"get":{"operationId":"getRender","summary":"Fetch a previously rendered image (valid 24h)","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image bytes"},"404":{"description":"Not found or expired"}}}}}}