GET
/api/prerender/renderRender a JavaScript page into static HTML. Returns rendered HTML (200) or a passthrough instruction (304 + Location) when prerendering does not apply.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
urlrequired | string | URL-encoded target page to render. Must be a valid URL. |
Response Headers
| Header | Values | Description |
|---|---|---|
x-lovablehtml-render-cache | hit | miss | Whether response was served from cache |
x-lovablehtml-snapshot-key | string | R2 object key for the stored HTML snapshot |
cache-control | public, max-age=N, s-maxage=N | Cache TTL based on your domain's configured refresh interval |
etag | W/"sha256" | Weak etag derived from the HTML content hash |
Response Body
On 200, returns the fully-rendered HTML string with Content-Type: text/html; charset=utf-8.
On 304, the body is empty. Follow the Location header to the origin URL.
Response Codes
200
Success — Returns rendered HTML with
Content-Type: text/html304
Passthrough — Static asset, non-HTML request, or real browser navigation.
Location header contains origin URL.401
Unauthorized — Missing or invalid API key.
402
Subscription required — Rendering via API requires an active plan.
403
Forbidden —
domain_not_owned or api_key_domain_scope_mismatch.Example
javascript
CopyDownload
const response = await fetch('https://lovablehtml.com/api/prerender/render?url=' +encodeURIComponent('https://your-app.com/page'),{headers: {'x-lovablehtml-api-key': '<API_KEY>','Accept': 'text/html'}});const html = await response.text();// Check response headersconst cacheStatus = response.headers.get('x-lovablehtml-render-cache');// → "hit" (cached) or "miss" (fresh render)const snapshotKey = response.headers.get('x-lovablehtml-snapshot-key');// Useful for debugging: the stored HTML object key (when available)
bash
CopyDownload
curl -X GET \"https://lovablehtml.com/api/prerender/render?url=https%3A%2F%2Fyour-app.com%2Fpage" \-H "x-lovablehtml-api-key: <API_KEY>" \-H "Accept: text/html"
python
CopyDownload
import requestsimport urllib.parseurl = urllib.parse.quote('https://your-app.com/page', safe='')response = requests.get(f'https://lovablehtml.com/api/prerender/render?url={url}',headers={'x-lovablehtml-api-key': '<API_KEY>','Accept': 'text/html'})html = response.textcache_status = response.headers.get('x-lovablehtml-render-cache')
Tip: Static assets (CSS, JS, images, fonts) are never prerendered. Follow the Location header or fetch directly from origin.
