---
title: "Get a Lead Capture pop-up"
method: GET
path: "/api/v1/lead-capture/forms/{formId}"
tags: ["Lead Capture"]
---

# Get a Lead Capture pop-up

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

## Request

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

Get one pop-up in full: its whole config (design, copy, fields, trigger, game, prizes and codes), the install tag, and anything still stopping it from going live. Edit any part of the config and send it back with lead_capture_forms_update.

## Path parameters

- `formId` string, required: Pop-up id.

## Response `200`

Success

- object
  - `id` string, required
  - `name` string, required
  - `status` 'PAUSED' | 'ACTIVE', required: ACTIVE shows it to visitors on the allowed sites; it is refused, with the reasons, until the pop-up is ready (at least one site, a prize per game, consent text for a phone).
  - `game` string, required: The game, or `none` for a plain form.
  - `allowedOrigins` string[], required
  - `installKey` string, required: Public; identifies the pop-up in the install tag.
  - `updatedAt` string, required: ISO timestamp.
  - `installTag` string, required: The script tag to paste at the end of the page body.
  - `buttonTag` string, required: A button that opens the pop-up when clicked, whatever its trigger; with the trigger set to `click` it is the only way it opens. The install tag must be on the page too.
  - `config` object, required: The full design, copy, fields, trigger, game and prizes. Send any part of it back as `config` to `lead_capture_forms_update`. Text fields are `{ "en": "…", "es": "…", "pt": "…" }`; `en` is required. `flow.order` is `form-first` (details, then the game) or `play-first` (the game, then details to claim the prize; needs a game). If the stored settings could no longer be read, this shows the defaults and `liveIssues` says so; a patch then starts from the defaults.
  - `liveIssues` string[], required: Why it could not go live as it stands, one `field: reason` per line. Empty when it is ready.

## 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/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)
