API Reference
Prerender JavaScript pages into crawler-friendly HTML. Integrate with your CI/CD, CMS webhooks, or call on-demand.
Base URL
https://lovablehtml.com
Authentication
Authenticate requests using an API key in the header. Create and manage keys in your dashboard settings.
Supported headers:
x-lovablehtml-api-key: sk_live_...# Or use Bearer tokenAuthorization: Bearer sk_live_...
Render Endpoint
/api/prerender/renderRender a JavaScript page into static HTML. Returns the fully rendered HTML or a redirect for non-HTML resources.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
urlrequired | string | URL-encoded target page to render |
Response Headers
| Header | Values | Description |
|---|---|---|
| x-lovablehtml-render-cache | hit | miss | Whether response was served from cache |
| x-lovablehtml-soft-404 | true | Present if SPA renders a not-found page |
Response Codes
Content-Type: text/htmlLocation header contains origin URL.Example
const response = await fetch('https://lovablehtml.com/api/prerender/render?url=' +encodeURIComponent('https://your-app.com/page'),{headers: {'x-lovablehtml-api-key': 'sk_live_...','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 isSoft404 = response.headers.get('x-lovablehtml-soft-404');// → "true" if SPA renders a not-found page
Location header or fetch directly from origin.Cache Invalidation
Purge cached prerendered pages for domains you own. Optionally prewarm to immediately re-render.
/api/prerender/cache/invalidate-page-cacheInvalidate the cache for a single page path.
Request Body
| Field | Type | Description |
|---|---|---|
domainrequired | string | Domain name (e.g., "your-app.com") |
pathrequired | string | Page path to invalidate (e.g., "/pricing") |
prewarm | boolean | Re-render immediately after invalidation |
Example
const response = await fetch('https://lovablehtml.com/api/prerender/cache/invalidate-page-cache',{method: 'POST',headers: {'Content-Type': 'application/json','x-lovablehtml-api-key': 'sk_live_...'},body: JSON.stringify({domain: 'your-app.com',path: '/pricing',prewarm: true})});const result = await response.json();// { "ok": true, "deleted": 1, "prewarmed": 1 }
/api/prerender/cache/invalidate-paths-cacheInvalidate cache for multiple page paths in a single request.
Request Body
| Field | Type | Description |
|---|---|---|
domainrequired | string | Domain name |
pathsrequired | string[] | Array of paths to invalidate |
prewarm | boolean | Re-render all paths after invalidation |
Example
const response = await fetch('https://lovablehtml.com/api/prerender/cache/invalidate-paths-cache',{method: 'POST',headers: {'Content-Type': 'application/json','x-lovablehtml-api-key': 'sk_live_...'},body: JSON.stringify({domain: 'your-app.com',paths: ['/', '/pricing', '/blog/post'],prewarm: true})});const result = await response.json();// { "ok": true, "deleted": 3, "prewarmed": 3 }
/api/prerender/cache/invalidate-site-cachePurge the entire cache for a domain. Use sparingly.
Request Body
| Field | Type | Description |
|---|---|---|
domainrequired | string | Domain name to purge completely |
Example
const response = await fetch('https://lovablehtml.com/api/prerender/cache/invalidate-site-cache',{method: 'POST',headers: {'Content-Type': 'application/json','x-lovablehtml-api-key': 'sk_live_...'},body: JSON.stringify({domain: 'your-app.com'})});const result = await response.json();// { "ok": true, "deleted": 42 }
Error Codes
| Code | Error | Description |
|---|---|---|
401 | missing_api_key | No API key provided in headers |
401 | invalid_api_key | API key is invalid or revoked |
403 | domain_not_owned | Target domain is not connected to your account |
Best Practices
Send Accept header
Always include Accept: text/html for bot/crawler requests to maximize prerender success.
Rotate API keys
Regularly rotate and revoke compromised keys from your dashboard.
Use prewarm wisely
Enable prewarm for critical pages to ensure instant cache hits after invalidation.
Handle 304 responses
When you get a 304, follow the Location header or fetch directly from origin.
API Collections
Explore and test the API using these interactive platforms:
Ready to integrate?
Create your API key in the dashboard and start prerendering in minutes.