---
title: "Create embed URL"
method: POST
path: "/v1/projects/{project_id}/embed-url"
tags: ["projects"]
---

# Create embed URL

`POST /v1/projects/{project_id}/embed-url`

**Plan:** `All plans`

Creates a one-hour static preview URL that can be framed by one exact HTTPS parent origin. The token is anonymous and cannot access live previews or published modes.

## Path parameters

- `project_id` string, required — Project ID

## Request body

- V1CreateEmbedURLInputBody
  - `parent_origin` string, required — Exact HTTPS origin (scheme + host, no path) allowed to frame the static preview. The minted token only loads inside a frame served from this origin.

## Response `200`

OK

- V1CreateEmbedURLOutputBody
  - `embed_url` string, required — Origin-bound static-preview URL carrying a short-lived signed token (?__lovable_token=…). Load it in an iframe on the requested parent_origin.
  - `expires_at` string, date-time, required — When the embed URL token expires and stops loading the preview.

## Other responses

- `401` — Missing or invalid API key.
- `403` — The key or caller lacks the required scope or permission.
- `406` — The Accept header excludes every media type this endpoint produces.
- `429` — Too many requests. Retry after the interval in Retry-After when present.
- `default` — Error. The response body uses the standard error envelope; status matches the HTTP status code and type is a machine-readable error code.

---

[API](https://skmtc.dev/lovable/apis/lovable-api.md) · [All operations](https://skmtc.dev/lovable/apis/lovable-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lovable/lovable-api/revisions/dee6c6545511/schema)
