---
title: "Get an embedded form"
method: GET
path: "/api/v1/lead-capture/embedded-forms/{formId}"
tags: ["Lead Capture"]
---

# Get an embedded form

`GET /api/v1/lead-capture/embedded-forms/{formId}`

## Request

- Base URL: `https://www.useboom.ai`
- URL: `https://www.useboom.ai/api/v1/lead-capture/embedded-forms/{formId}`
- Auth: HTTP bearer

Get one embedded form: its editable draft, the embed tags, whether the draft has unpublished changes, and anything stopping it from being published.

## Path parameters

- `formId` string, required: Form id.

## Response `200`

Success

- object
  - `id` string, required
  - `name` string, required
  - `status` 'PAUSED' | 'ACTIVE', required
  - `allowedOrigins` string[], required
  - `installKey` string, required: Public; identifies the form in the embed.
  - `publishedVersion` number, nullable, required: The version visitors get; null until first published.
  - `unpublishedChanges` boolean, required: The draft differs from the published version.
  - `updatedAt` string, required
  - `embedTag` string, required: Paste where the form should appear, together with `installTag`.
  - `installTag` string, required
  - `draft` object, required: The editable config: `steps`, `fields` (typed questions with `key`, `options[].value`, `score`, `sensitive`), `endings` (with score ranges), `consent`, `hidden`, `constants`, `partials` (`enabled`, `notice`: keep what a visitor answered when they leave without submitting) and design. Edit it and send it back as `draft` to `lead_capture_embedded_forms_update`; lists are replaced whole. Visitors see nothing until `lead_capture_embedded_forms_publish`.
  - `publishIssues` string[], required: Why the draft cannot be published yet; empty when it can.

## Other responses

- `400`: Validation failed or the request cannot proceed.
- `401`: Missing, malformed, or revoked API key.
- `404`: The resource does not exist in this organization.
- `409`: Conflicts with the current state (duplicates, wrong lifecycle state).
- `422`: The request is well-formed but semantically invalid.
- `429`: Rate limit exceeded — retry after `Retry-After`.
- `500`: Internal server error.
- `503`: Transient error — retry with a narrower request.

## Changes

- **2026-11-03** `7c7a773b12ce`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/useboom/apis/boom-api/changes/api/v1/lead-capture/embedded-forms/:formId/get.md)

---

[API](https://skmtc.dev/useboom/apis/boom-api.md) - [All operations](https://skmtc.dev/useboom/apis/boom-api/llms.txt) - [OpenAPI document](https://skmtc.dev/useboom/apis/boom-api/revisions/d596d92ed092?raw)
