Create a lead form
Creates a Lead Gen form. The form content goes inside platformSpecificData for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms); the old top-level Meta fields (questions, thankYou*, contextCard, …) are DEPRECATED but still accepted while platformSpecificData is absent — mixing both shapes is a 400. LinkedIn: created on the ad account's Company Page. NOT idempotent — a retry creates a second form. Meta prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM questions require both. LinkedIn exposes only free-text and multiple-choice questions via API (prefilled-from-profile fields are Campaign Manager UI-only). Requires the Ads add-on.
API key authentication - use your Zernio API key as a Bearer token
In: header
length <= 200Deprecated (Meta legacy shape): use platformSpecificData.questions.
1 <= itemsuriDeprecated: use platformSpecificData.privacyPolicyLinkText.
length <= 70Deprecated: use platformSpecificData.followUpActionUrl.
uriDeprecated: use platformSpecificData.locale.
Deprecated: use platformSpecificData.thankYouTitle.
Deprecated: use platformSpecificData.thankYouBody.
Deprecated: use platformSpecificData.thankYouButtonText.
Deprecated: use platformSpecificData.thankYouButtonType.
Deprecated: use platformSpecificData.thankYouWebsiteUrl.
uriDeprecated: use platformSpecificData.isOptimizedForQuality.
Form content; the shape is selected by the accountId's platform. Unknown fields are a 400 (strict-parsed).
Response Body
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.leadgen.createLeadForm({ body: { accountId: 'account_abc123', name: 'Example', privacyPolicyUrl: 'https://example.com', },});console.log(data);{
"status": "success",
"form": {
"id": "string",
"name": "string"
}
}{
"error": "string",
"type": "invalid_request_error",
"code": "string",
"param": "string",
"platform": "string",
"platformError": {},
"details": {}
}{
"error": "Unauthorized"
}List submitted leads GET
Returns submitted Lead Gen leads for your team, newest-first, with keyset pagination on `cursor`. For Meta (default) leads are served from the persisted cache, ingested in real time from the `leadgen` webhook. When `accountId` is a LinkedIn ads account, leads are fetched live from LinkedIn's `leadFormResponses` (LinkedIn has no webhook and enforces 90-day retention, so nothing is persisted) and `adAccountId` is required. Reading LinkedIn responses needs the `r_marketing_leadgen_automation` permission; accounts connected before it was added must reconnect. Requires the Ads add-on.
Create a test lead POST
Submits a test lead against the form (POST /{form-id}/test_leads) to exercise retrieval without waiting for real ad impressions. Meta allows one test lead per form at a time.