---
title: "Get a lead form"
method: GET
path: "/v1/ads/lead-forms/{formId}"
tags: ["Lead Gen"]
---

# Get a lead form

`GET /v1/ads/lead-forms/{formId}`

Returns the full form, including the thank-you page, so a form can be diffed against what was created. Meta forms are scoped to the Page the accountId manages: a form on any other Page is a 404, never a read.

## Path parameters

- `formId` string, required

## Query parameters

- `accountId` string, required
- `fields` string

## Response `200`

Form metadata. Meta forms follow MetaLeadForm; LinkedIn forms return LinkedIn's own adForm shape.

- object
  - `status` string
  - `form` union
    - MetaLeadForm — A Meta Lead Gen form as Graph returns it, in Meta's own snake_case. Read through GET /v1/ads/lead-forms/{formId}. Every setting POST /v1/ads/lead-forms writes is present here, so a form can be diffed against what was created and drift from edits made in Meta's form builder is detectable. A compound field is omitted entirely when the form has no value for it, and `fields` narrows the selection.
      - `id` string
      - `name` string
      - `status` string — One of ACTIVE, ARCHIVED, DELETED or DRAFT.
      - `locale` string
      - `created_time` string, date-time
      - `page_id` string — Owning Facebook Page. A form on any other Page is a 404, whether read or archived.
      - `leads_count` integer
      - `organic_leads_count` integer
      - `expired_leads_count` integer — Leads Meta has aged out of the retention window.
      - `privacy_policy_url` string, uri
      - `follow_up_action_url` string, uri
      - `follow_up_action_text` string
      - `question_page_custom_headline` string
      - `is_optimized_for_quality` boolean
      - `block_display_for_non_targeted_viewer` boolean
      - `allow_organic_lead` boolean — Whether the form can also be submitted from an organic Page post.
      - `tracking_parameters` object[] — Custom key/value pairs attached to every lead of this form.
        - `key` string
        - `value` string
      - `legal_content` object — Privacy policy and custom disclaimer as Meta stores them.
        - `id` string
        - `privacy_policy` object
          - `url` string, uri
          - `link_text` string
        - `custom_disclaimer` object — Set in Meta form builder only; there is no create parameter for it.
      - `context_card` object
        - `id` string
        - `title` string
        - `style` 'LIST_STYLE' | 'PARAGRAPH_STYLE'
        - `content` string[]
        - `button_text` string
        - `cover_photo` object
          - `id` string
      - `thank_you_page` object — The form's single ending page, mirroring the thankYou* create fields. Meta has exactly one per form; there is no multiple-ending-page API (thank_you_pages and ending_pages are not Graph fields).
        - `id` string
        - `title` string
        - `body` string
        - `button_text` string
        - `button_type` string
        - `website_url` string, uri
        - `enable_messenger` boolean
        - `status` string
        - `lead_gen_use_case` string
        - `business_phone_number` string
        - `country_code` string
      - `questions` object[]
        - `id` string
        - `key` string
        - `label` string
        - `type` string — EMAIL, PHONE, FULL_NAME, CUSTOM, ...
        - `inline_context` string
        - `options` object[]
          - `key` string
          - `value` string
        - `conditional_questions_group_id` string — READ-ONLY. Conditional logic can only be authored in Meta form builder; Meta has no create parameter for it.
        - `conditional_questions_choices` object[] — READ-ONLY. Which answers reveal the conditional group.
        - `dependent_conditional_questions` object[] — READ-ONLY. Questions revealed by the conditional group.
    - object

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — No lead form with that id on the Page this account manages.

## Changes

- **2026-09-16** `3e6ddf2a99ea` — 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status
- **2026-09-15** `0dba7d004d75` — 2 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaScope` to the response with the `400` status
- **2026-09-12** `06acc34a7017` — 2 breaking, 2 info
  - added `#/components/schemas/MetaLeadForm, subschema #2` to the `form` response property `oneOf` list for the response status `200`
  - the `form` response's property type changed from `object` to no type for status `200`
  - added the new optional `query` request parameter `fields`
  - added the non-success response with the status `404`

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/lead-forms/:formId/get.md)

---

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