# Accessing the Form API

**URL:** <https://community.hubspot.com/t/accessing-the-form-api/133556>\
**Category:** APIs & Integrations\
**Tags:** webhooks\
**Created:** [May 29, 2025, 3:05pm UTC](https://community.hubspot.com/t/accessing-the-form-api/133556 "2025-05-29T15:05:44Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Austin\_Calendly](https://avatars.discourse-cdn.com/v4/letter/a/4af34b/32.png) [@Austin\_Calendly](https://community.hubspot.com/u/Austin_Calendly)\
**Post date:** [May 29, 2025, 3:05pm UTC](https://community.hubspot.com/t/accessing-the-form-api/133556/1 "2025-05-29T15:05:44Z")

</div>

Hey everyone!

I work on the Developer Support team here at Calendly, and we are trying to find some details around API functionality with the new multi-step form builder. Ideally a documentation page showing the request/response framework for listing existing forms, and receiving form submissions via webhook.

We are building out our integration with the new form builder and having a tough time getting some of the details we need so any help would be great!

---

<div class="post-metadata">

**Author:** ![BrandonWoodruff](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/brandonwoodruff/32/61045_2.png) [@BrandonWoodruff](https://community.hubspot.com/u/BrandonWoodruff)\
**Post date:** [June 3, 2025, 1:28pm UTC](https://community.hubspot.com/t/accessing-the-form-api/133556/2 "2025-06-03T13:28:02Z")

</div>

Hey Austin,

Based on your needs, I would suggest the documentation linked [HERE.](https://developers.hubspot.com/docs/reference/api/marketing/forms/v2)

Here are some example calls from that documentation:

## 1. **List All Forms**

Get all forms from the account — handy for syncing form names, IDs, and fields with your external system.

### Endpoint:

GET /forms/v2/forms

### Options:

- formTypes=ALL to include non-marketing forms.
- limit and offset for pagination.
- **Auth Required: Private App or OAuth**
- **Scope: forms**

## 

## 2. **Get Details for a Specific Form**

### Endpoint:

GET /forms/v2/forms/:form\_guid

Returns all field groups, field metadata, etc.

## 3. **Get All Fields from a Form**

### Endpoint:

GET /forms/v2/fields/:form\_guid

Returns an array of all fields with validation, types, labels, etc. Use this to build out dynamic form mappings in your app.

## 

## 4. **Submit Form Data (Authenticated v3 Preferred)**

### Recommended Endpoint:

POST [https://api.hsforms.com/submissions/v3/integration/submit/:portalId/:formGuid](https://api.hsforms.com/submissions/v3/integration/submit/:portalId/:formGuid)

This version supports:

- GDPR consent
- Cross-origin requests
- Higher rate limits
- JSON body (simpler dev experience)

Let me know if you have any other questions. Hope this helps!

* * *

✔ Was I able to help answer your question? Help the community by **marking it as a solution.**

| ![](https://d2qpr2jzcazej7.cloudfront.net/original/3X/d/3/d314478a36473977ed45320812b9331d25e0d3c4.jpeg) | **[Brandon Woodruff](https://www.linkedin.com/in/brandon-woody-woodruff/)**  
Senior Software Developer @ [Pearagon](https://www.pearagon.com/)Still have questions? Reach out at [brandon@pearagon.com](mailto:brandon@pearagon.com)  
 |

* * *

---

<div class="post-metadata">

**Author:** ![RubenBurdin](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/rubenburdin/32/75212_2.png) [@RubenBurdin](https://community.hubspot.com/u/RubenBurdin)\
**Post date:** [September 17, 2025, 2:35pm UTC](https://community.hubspot.com/t/accessing-the-form-api/133556/3 "2025-09-17T14:35:34Z")

</div>

Hi [@Austin\_Calendly](https://community.hubspot.com/t5/user/viewprofilepage/user-id/948013) ,

The tricky part with the new form builder is that HubSpot hasn’t yet exposed a “multi-step form” API that’s distinct from the existing Forms API.

What you’ll use is the same /forms/v2/forms and /forms/v2/fields/:form\_guid endpoints to list and inspect form definitions, and the submissions go through the v3 endpoint you already saw: [https://api.hsforms.com/submissions/v3/integration/submit/:portalId/:formGuid](https://api.hsforms.com/submissions/v3/integration/submit/:portalId/:formGuid). That’s the only endpoint that supports JSON payloads, GDPR consent, and higher limits

([Accounts Dashboard | HubSpot](https://developers.hubspot.com/docs/api-reference/marketing-forms-v3/guide) )

([Accounts Dashboard | HubSpot](https://developers.hubspot.com/docs/api-reference/legacy/forms-v2/forms/get-forms-v2-forms) )

For receiving submissions in real time, webhooks are the supported path. You can subscribe to the form\_submission event under a private app or app subscription, and HubSpot will post the entire submission payload to your URL, including form GUID, page URI, and field values

([Accounts Dashboard | HubSpot](https://developers.hubspot.com/docs/api-reference/webhooks-webhooks-v3/guide) )

That way you don’t need to poll for new entries, and you can trigger workflows downstream right away.

If the multi-step experience is what’s giving you trouble, the key detail is that HubSpot stores those as a single submission record once completed. You won’t get a webhook for each “step,” only at the final submit, so your integration should be built with that in mind.

Where this often gets painful is when you want those submissions to flow into other databases or CRMs in both directions. That’s exactly the type of “dirty plumbing” Stacksync abstracts away. Instead of juggling APIs, webhooks, and retry logic, it maintains a real-time, two-way sync across HubSpot and external systems like SQL, Salesforce, or Snowflake.

It also catches field-level changes and propagates them instantly, so your forms data doesn’t drift over time. That way you can focus on the app logic instead of managing the sync infrastructure.

Hope this helps.
