Blue Reacher
Lead forms31 / 46

Lead forms

Hosted lead forms: their public page and embed snippet, fields and settings, and the submissions they received.

Hosted lead forms: their public page and embed snippet, fields and settings, and the submissions they received.

Every route takes Authorization: Bearer <ACCESS_TOKEN> unless the auth line says otherwise. Ids are numbers. Errors use the shape on the errors page.

RouteScopeWhat it does
GET /v1/lead-formslead_forms.readThe hosted lead forms of a workspace, newest first.
GET /v1/lead-forms/{id}lead_forms.readOne lead form with its fields and settings.
POST /v1/lead-formslead_forms.writeCreate a hosted lead form.
PATCH /v1/lead-forms/{id}lead_forms.writeChange a form's name, text, fields, settings or active state.
DELETE /v1/lead-forms/{id}lead_forms.writeDelete a form; its page stops answering at once.
GET /v1/lead-forms/{id}/submissionslead_forms.readWhat was submitted on a form, newest first.

List lead forms

GET https://api.bluereacher.com/v1/lead-forms

Auth: Bearer access token. Scope: lead_forms.read.

The hosted lead forms of a workspace, newest first.

Each form has a public_url (the hosted page) and an embed_snippet for a website. A submission creates or updates the contact the form's fields map to and can start automations.

Parameters

NameInTypeRequiredDescription
workspace_idquerynumberyesA workspace of the installer.
searchquerystringnoPart of a name.
pagequerynumbernoDefault 1.
limitquerynumberno1–100, default 25.

Request

curl -X GET "https://api.bluereacher.com/v1/lead-forms?workspace_id=7&page=1&limit=25" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": [
    {
      "id": 31,
      "workspace_id": 7,
      "name": "Website quote form",
      "slug": "f3a9c1d2e4b5f607",
      "title": "Get a quote",
      "description": "Tell us about your project.",
      "fields": [
        {
          "key": "first_name",
          "type": "text",
          "label": "First name",
          "required": true
        },
        {
          "key": "email",
          "type": "email",
          "label": "Email",
          "required": true
        },
        {
          "key": "phone_number",
          "type": "phone",
          "label": "Mobile",
          "required": false
        },
        {
          "key": "lead_source",
          "type": "select",
          "label": "How did you hear about us?",
          "options": [
            "Web",
            "Referral",
            "Event"
          ],
          "custom_field_id": 41
        },
        {
          "key": "sms_consent",
          "type": "sms_consent",
          "label": "Text me updates",
          "consent_text": "By ticking this box you agree to receive messages from Acme. Reply STOP to opt out."
        }
      ],
      "settings": {
        "submit_button_text": "Get a quote",
        "thank_you_message": "Thanks — we will be in touch today.",
        "redirect_url": null,
        "tags": [
          "web-lead"
        ],
        "allowed_domains": [
          "acme.example"
        ],
        "daily_limit": 500,
        "style": {
          "primary_color": "#2563eb",
          "button_text_color": "#ffffff",
          "background_color": "#ffffff",
          "page_background": "#f8fafc",
          "text_color": "#0f172a",
          "border_radius": 8,
          "font_family": "system"
        }
      },
      "is_active": true,
      "submission_count": 128,
      "created_at": "2026-10-01T00:00:00.000Z",
      "updated_at": "2026-11-01T00:00:00.000Z",
      "public_url": "https://api.bluereacher.com/f/f3a9c1d2e4b5f607",
      "embed_snippet": "<script src=\"https://api.bluereacher.com/embed/forms.js\" data-form=\"f3a9c1d2e4b5f607\" async></script>"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 1,
    "total_pages": 1
  }
}
StatusWhenMessage
200OK
400No workspace_idworkspace_id is required.
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): lead_forms.read. This integration was granted: …
404Workspace does not exist or is not the installer's (same response for both)Workspace not found or not accessible to this token

Get lead form

GET https://api.bluereacher.com/v1/lead-forms/{id}

Auth: Bearer access token. Scope: lead_forms.read.

One lead form with its fields and settings.

Parameters

NameInTypeRequiredDescription
idpathnumberyesThe form id.

Request

curl -X GET "https://api.bluereacher.com/v1/lead-forms/31" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": {
    "id": 31,
    "workspace_id": 7,
    "name": "Website quote form",
    "slug": "f3a9c1d2e4b5f607",
    "title": "Get a quote",
    "description": "Tell us about your project.",
    "fields": [
      {
        "key": "first_name",
        "type": "text",
        "label": "First name",
        "required": true
      },
      {
        "key": "email",
        "type": "email",
        "label": "Email",
        "required": true
      },
      {
        "key": "phone_number",
        "type": "phone",
        "label": "Mobile",
        "required": false
      },
      {
        "key": "lead_source",
        "type": "select",
        "label": "How did you hear about us?",
        "options": [
          "Web",
          "Referral",
          "Event"
        ],
        "custom_field_id": 41
      },
      {
        "key": "sms_consent",
        "type": "sms_consent",
        "label": "Text me updates",
        "consent_text": "By ticking this box you agree to receive messages from Acme. Reply STOP to opt out."
      }
    ],
    "settings": {
      "submit_button_text": "Get a quote",
      "thank_you_message": "Thanks — we will be in touch today.",
      "redirect_url": null,
      "tags": [
        "web-lead"
      ],
      "allowed_domains": [
        "acme.example"
      ],
      "daily_limit": 500,
      "style": {
        "primary_color": "#2563eb",
        "button_text_color": "#ffffff",
        "background_color": "#ffffff",
        "page_background": "#f8fafc",
        "text_color": "#0f172a",
        "border_radius": 8,
        "font_family": "system"
      }
    },
    "is_active": true,
    "submission_count": 128,
    "created_at": "2026-10-01T00:00:00.000Z",
    "updated_at": "2026-11-01T00:00:00.000Z",
    "public_url": "https://api.bluereacher.com/f/f3a9c1d2e4b5f607",
    "embed_snippet": "<script src=\"https://api.bluereacher.com/embed/forms.js\" data-form=\"f3a9c1d2e4b5f607\" async></script>"
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): lead_forms.read. This integration was granted: …
404Form does not exist or is not the installer's (same response for both)Form not found or not accessible to this token

Create lead form

POST https://api.bluereacher.com/v1/lead-forms

Auth: Bearer access token. Scope: lead_forms.write.

Create a hosted lead form.

Checked with the dashboard's own rules: at least one field, every key a contact column or an existing custom field of the workspace, and an email or phone_number field so the submitter can be reached. The form is live at its public_url at once (is_active defaults to true).

Parameters

NameInTypeRequiredDescription
workspace_idbodynumberyesA workspace of the installer.
namebodystringyesInternal name (up to 191 characters).
fieldsbodyarray<object>yes1–30 fields, each { key, type, label, required?, placeholder?, options?, custom_field_id?, consent_text? }. type: text, email, phone, textarea, select, checkbox, url, date, number, sms_consent. key is a contact column (first_name, last_name, email, phone_number, company_name, website, address, city, state, country) or a workspace custom field's key with its custom_field_id; the form needs an email or phone_number field. sms_consent is the opt-in checkbox (key sms_consent, consent_text up to 1000 characters).
titlebodystringnoHeading on the hosted page.
descriptionbodystringnoText under the heading (up to 5000 characters).
settingsbodyobjectnosubmit_button_text, thank_you_message, redirect_url (https), tags (added to the contact, up to 20), allowed_domains (where it may be embedded, up to 20), daily_limit, style { primary_color, button_text_color, background_color, page_background, text_color (hex), border_radius 0–32, font_family system|serif|mono }.
is_activebodybooleannoDefault true. An inactive form's page answers 404.

Request

curl -X POST "https://api.bluereacher.com/v1/lead-forms" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
  "workspace_id": 7,
  "name": "Website quote form",
  "title": "Get a quote",
  "fields": [
    {
      "key": "first_name",
      "type": "text",
      "label": "First name",
      "required": true
    },
    {
      "key": "email",
      "type": "email",
      "label": "Email",
      "required": true
    },
    {
      "key": "phone_number",
      "type": "phone",
      "label": "Mobile",
      "required": false
    }
  ],
  "settings": {
    "submit_button_text": "Get a quote",
    "tags": [
      "web-lead"
    ]
  }
}'

Responses

A 201 reply (Created):

{
  "success": true,
  "data": {
    "id": 31,
    "workspace_id": 7,
    "name": "Website quote form",
    "slug": "f3a9c1d2e4b5f607",
    "title": "Get a quote",
    "description": "Tell us about your project.",
    "fields": [
      {
        "key": "first_name",
        "type": "text",
        "label": "First name",
        "required": true
      },
      {
        "key": "email",
        "type": "email",
        "label": "Email",
        "required": true
      },
      {
        "key": "phone_number",
        "type": "phone",
        "label": "Mobile",
        "required": false
      },
      {
        "key": "lead_source",
        "type": "select",
        "label": "How did you hear about us?",
        "options": [
          "Web",
          "Referral",
          "Event"
        ],
        "custom_field_id": 41
      },
      {
        "key": "sms_consent",
        "type": "sms_consent",
        "label": "Text me updates",
        "consent_text": "By ticking this box you agree to receive messages from Acme. Reply STOP to opt out."
      }
    ],
    "settings": {
      "submit_button_text": "Get a quote",
      "thank_you_message": "Thanks — we will be in touch today.",
      "redirect_url": null,
      "tags": [
        "web-lead"
      ],
      "allowed_domains": [
        "acme.example"
      ],
      "daily_limit": 500,
      "style": {
        "primary_color": "#2563eb",
        "button_text_color": "#ffffff",
        "background_color": "#ffffff",
        "page_background": "#f8fafc",
        "text_color": "#0f172a",
        "border_radius": 8,
        "font_family": "system"
      }
    },
    "is_active": true,
    "submission_count": 0,
    "created_at": "2026-10-01T00:00:00.000Z",
    "updated_at": "2026-11-01T00:00:00.000Z",
    "public_url": "https://api.bluereacher.com/f/f3a9c1d2e4b5f607",
    "embed_snippet": "<script src=\"https://api.bluereacher.com/embed/forms.js\" data-form=\"f3a9c1d2e4b5f607\" async></script>"
  }
}
StatusWhenMessage
201Created
400A rule failed (Joi message or field rule)Form must include an email or phone number field
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): lead_forms.write. This integration was granted: …
404Workspace does not exist or is not the installer's (same response for both)Workspace not found or not accessible to this token

Update lead form

PATCH https://api.bluereacher.com/v1/lead-forms/{id}

Auth: Bearer access token. Scope: lead_forms.write.

Change a form's name, text, fields, settings or active state.

Send only what changes. fields replaces the whole list and is checked like on create. Past submissions keep their own payloads.

Parameters

NameInTypeRequiredDescription
idpathnumberyesThe form id.
namebodystringnoInternal name.
titlebodystringnoHeading.
descriptionbodystringnoText under the heading.
fieldsbodyarray<object>no1–30 fields, each { key, type, label, required?, placeholder?, options?, custom_field_id?, consent_text? }. type: text, email, phone, textarea, select, checkbox, url, date, number, sms_consent. key is a contact column (first_name, last_name, email, phone_number, company_name, website, address, city, state, country) or a workspace custom field's key with its custom_field_id; the form needs an email or phone_number field. sms_consent is the opt-in checkbox (key sms_consent, consent_text up to 1000 characters).
settingsbodyobjectnosubmit_button_text, thank_you_message, redirect_url (https), tags (added to the contact, up to 20), allowed_domains (where it may be embedded, up to 20), daily_limit, style { primary_color, button_text_color, background_color, page_background, text_color (hex), border_radius 0–32, font_family system|serif|mono }.
is_activebodybooleannofalse takes the page offline (404) without deleting the form.

Request

curl -X PATCH "https://api.bluereacher.com/v1/lead-forms/31" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
  "is_active": false
}'

Responses

A 200 reply (OK):

{
  "success": true,
  "data": {
    "id": 31,
    "workspace_id": 7,
    "name": "Website quote form",
    "slug": "f3a9c1d2e4b5f607",
    "title": "Get a quote",
    "description": "Tell us about your project.",
    "fields": [
      {
        "key": "first_name",
        "type": "text",
        "label": "First name",
        "required": true
      },
      {
        "key": "email",
        "type": "email",
        "label": "Email",
        "required": true
      },
      {
        "key": "phone_number",
        "type": "phone",
        "label": "Mobile",
        "required": false
      },
      {
        "key": "lead_source",
        "type": "select",
        "label": "How did you hear about us?",
        "options": [
          "Web",
          "Referral",
          "Event"
        ],
        "custom_field_id": 41
      },
      {
        "key": "sms_consent",
        "type": "sms_consent",
        "label": "Text me updates",
        "consent_text": "By ticking this box you agree to receive messages from Acme. Reply STOP to opt out."
      }
    ],
    "settings": {
      "submit_button_text": "Get a quote",
      "thank_you_message": "Thanks — we will be in touch today.",
      "redirect_url": null,
      "tags": [
        "web-lead"
      ],
      "allowed_domains": [
        "acme.example"
      ],
      "daily_limit": 500,
      "style": {
        "primary_color": "#2563eb",
        "button_text_color": "#ffffff",
        "background_color": "#ffffff",
        "page_background": "#f8fafc",
        "text_color": "#0f172a",
        "border_radius": 8,
        "font_family": "system"
      }
    },
    "is_active": false,
    "submission_count": 128,
    "created_at": "2026-10-01T00:00:00.000Z",
    "updated_at": "2026-11-01T00:00:00.000Z",
    "public_url": "https://api.bluereacher.com/f/f3a9c1d2e4b5f607",
    "embed_snippet": "<script src=\"https://api.bluereacher.com/embed/forms.js\" data-form=\"f3a9c1d2e4b5f607\" async></script>"
  }
}
StatusWhenMessage
200OK
400Nothing to change, or a rule failedNo editable fields provided.
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): lead_forms.write. This integration was granted: …
404Form does not exist or is not the installer's (same response for both)Form not found or not accessible to this token

Delete lead form

DELETE https://api.bluereacher.com/v1/lead-forms/{id}

Auth: Bearer access token. Scope: lead_forms.write.

Delete a form; its page stops answering at once.

Submissions already received stay with the contacts they created.

Parameters

NameInTypeRequiredDescription
idpathnumberyesThe form id.

Request

curl -X DELETE "https://api.bluereacher.com/v1/lead-forms/31" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "message": "Form deleted",
  "data": {
    "id": 31
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): lead_forms.write. This integration was granted: …
404Form does not exist or is not the installer's (same response for both)Form not found or not accessible to this token

List submissions

GET https://api.bluereacher.com/v1/lead-forms/{id}/submissions

Auth: Bearer access token. Scope: lead_forms.read.

What was submitted on a form, newest first.

payload is the submitted values by field key; contact is the contact the submission created (is_new_contact: true) or updated.

Parameters

NameInTypeRequiredDescription
idpathnumberyesThe form id.
pagequerynumbernoDefault 1.
limitquerynumberno1–100, default 25.

Request

curl -X GET "https://api.bluereacher.com/v1/lead-forms/31/submissions?page=1&limit=25" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Responses

A 200 reply (OK):

{
  "success": true,
  "data": {
    "form": {
      "id": 31,
      "name": "Website quote form",
      "fields": [
        {
          "key": "first_name",
          "type": "text",
          "label": "First name",
          "required": true
        },
        {
          "key": "email",
          "type": "email",
          "label": "Email",
          "required": true
        },
        {
          "key": "phone_number",
          "type": "phone",
          "label": "Mobile",
          "required": false
        },
        {
          "key": "lead_source",
          "type": "select",
          "label": "How did you hear about us?",
          "options": [
            "Web",
            "Referral",
            "Event"
          ],
          "custom_field_id": 41
        },
        {
          "key": "sms_consent",
          "type": "sms_consent",
          "label": "Text me updates",
          "consent_text": "By ticking this box you agree to receive messages from Acme. Reply STOP to opt out."
        }
      ]
    },
    "submissions": [
      {
        "id": 501,
        "form_id": 31,
        "workspace_id": 7,
        "contact_id": 1234,
        "contact": {
          "id": 1234,
          "first_name": "Ann",
          "last_name": "Lee",
          "email": "ann@example.com",
          "phone_number": "+61412345678"
        },
        "is_new_contact": true,
        "payload": {
          "first_name": "Ann",
          "email": "ann@example.com",
          "phone_number": "+61412345678",
          "lead_source": "Referral",
          "sms_consent": true
        },
        "page_url": "https://acme.example/pricing",
        "referrer": "https://google.com/",
        "created_at": "2026-11-04T01:00:00.000Z"
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 128,
    "total_pages": 6
  }
}
StatusWhenMessage
200OK
401Missing or invalid tokenInvalid or expired access token.
403Missing scopeMissing scope(s): lead_forms.read. This integration was granted: …
404Form does not exist or is not the installer's (same response for both)Form not found or not accessible to this token

On this page