curl --request PATCH \
--url https://api.hubapi.com/marketing/forms/2026-09-beta/{formId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"archived": true,
"fieldGroups": [
{
"fields": [
{
"dependentFields": [
{
"dependentCondition": {
"rangeEnd": "<string>",
"rangeStart": "<string>",
"value": "<string>",
"values": [
"<string>"
]
},
"dependentField": "<unknown>"
}
],
"fieldType": "email",
"hidden": true,
"label": "<string>",
"name": "<string>",
"objectTypeId": "<string>",
"required": true,
"validation": {
"blockedEmailDomains": [
"<string>"
],
"useDefaultBlockList": true
},
"defaultValue": "<string>",
"description": "<string>",
"placeholder": "<string>"
}
],
"richText": "<string>"
}
],
"legalConsentOptions": {
"type": "none"
},
"name": "<string>"
}
'import requests
url = "https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}"
payload = {
"archived": True,
"fieldGroups": [
{
"fields": [
{
"dependentFields": [
{
"dependentCondition": {
"rangeEnd": "<string>",
"rangeStart": "<string>",
"value": "<string>",
"values": ["<string>"]
},
"dependentField": "<unknown>"
}
],
"fieldType": "email",
"hidden": True,
"label": "<string>",
"name": "<string>",
"objectTypeId": "<string>",
"required": True,
"validation": {
"blockedEmailDomains": ["<string>"],
"useDefaultBlockList": True
},
"defaultValue": "<string>",
"description": "<string>",
"placeholder": "<string>"
}
],
"richText": "<string>"
}
],
"legalConsentOptions": { "type": "none" },
"name": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
archived: true,
fieldGroups: [
{
fields: [
{
dependentFields: [
{
dependentCondition: {
rangeEnd: '<string>',
rangeStart: '<string>',
value: '<string>',
values: ['<string>']
},
dependentField: '<unknown>'
}
],
fieldType: 'email',
hidden: true,
label: '<string>',
name: '<string>',
objectTypeId: '<string>',
required: true,
validation: {blockedEmailDomains: ['<string>'], useDefaultBlockList: true},
defaultValue: '<string>',
description: '<string>',
placeholder: '<string>'
}
],
richText: '<string>'
}
],
legalConsentOptions: {type: 'none'},
name: '<string>'
})
};
fetch('https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'archived' => true,
'fieldGroups' => [
[
'fields' => [
[
'dependentFields' => [
[
'dependentCondition' => [
'rangeEnd' => '<string>',
'rangeStart' => '<string>',
'value' => '<string>',
'values' => [
'<string>'
]
],
'dependentField' => '<unknown>'
]
],
'fieldType' => 'email',
'hidden' => true,
'label' => '<string>',
'name' => '<string>',
'objectTypeId' => '<string>',
'required' => true,
'validation' => [
'blockedEmailDomains' => [
'<string>'
],
'useDefaultBlockList' => true
],
'defaultValue' => '<string>',
'description' => '<string>',
'placeholder' => '<string>'
]
],
'richText' => '<string>'
]
],
'legalConsentOptions' => [
'type' => 'none'
],
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}"
payload := strings.NewReader("{\n \"archived\": true,\n \"fieldGroups\": [\n {\n \"fields\": [\n {\n \"dependentFields\": [\n {\n \"dependentCondition\": {\n \"rangeEnd\": \"<string>\",\n \"rangeStart\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n },\n \"dependentField\": \"<unknown>\"\n }\n ],\n \"fieldType\": \"email\",\n \"hidden\": true,\n \"label\": \"<string>\",\n \"name\": \"<string>\",\n \"objectTypeId\": \"<string>\",\n \"required\": true,\n \"validation\": {\n \"blockedEmailDomains\": [\n \"<string>\"\n ],\n \"useDefaultBlockList\": true\n },\n \"defaultValue\": \"<string>\",\n \"description\": \"<string>\",\n \"placeholder\": \"<string>\"\n }\n ],\n \"richText\": \"<string>\"\n }\n ],\n \"legalConsentOptions\": {\n \"type\": \"none\"\n },\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"archived\": true,\n \"fieldGroups\": [\n {\n \"fields\": [\n {\n \"dependentFields\": [\n {\n \"dependentCondition\": {\n \"rangeEnd\": \"<string>\",\n \"rangeStart\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n },\n \"dependentField\": \"<unknown>\"\n }\n ],\n \"fieldType\": \"email\",\n \"hidden\": true,\n \"label\": \"<string>\",\n \"name\": \"<string>\",\n \"objectTypeId\": \"<string>\",\n \"required\": true,\n \"validation\": {\n \"blockedEmailDomains\": [\n \"<string>\"\n ],\n \"useDefaultBlockList\": true\n },\n \"defaultValue\": \"<string>\",\n \"description\": \"<string>\",\n \"placeholder\": \"<string>\"\n }\n ],\n \"richText\": \"<string>\"\n }\n ],\n \"legalConsentOptions\": {\n \"type\": \"none\"\n },\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"archived\": true,\n \"fieldGroups\": [\n {\n \"fields\": [\n {\n \"dependentFields\": [\n {\n \"dependentCondition\": {\n \"rangeEnd\": \"<string>\",\n \"rangeStart\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n },\n \"dependentField\": \"<unknown>\"\n }\n ],\n \"fieldType\": \"email\",\n \"hidden\": true,\n \"label\": \"<string>\",\n \"name\": \"<string>\",\n \"objectTypeId\": \"<string>\",\n \"required\": true,\n \"validation\": {\n \"blockedEmailDomains\": [\n \"<string>\"\n ],\n \"useDefaultBlockList\": true\n },\n \"defaultValue\": \"<string>\",\n \"description\": \"<string>\",\n \"placeholder\": \"<string>\"\n }\n ],\n \"richText\": \"<string>\"\n }\n ],\n \"legalConsentOptions\": {\n \"type\": \"none\"\n },\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"archived": true,
"configuration": {
"allowLinkToResetKnownValues": true,
"archivable": true,
"cloneable": true,
"createNewContactForNewEmail": true,
"editable": true,
"lifecycleStages": [
{
"objectTypeId": "<string>",
"value": "<string>"
}
],
"notifyContactOwner": true,
"notifyRecipients": [
"<string>"
],
"postSubmitAction": {
"value": "<string>"
},
"prePopulateKnownValues": true,
"recaptchaEnabled": true
},
"createdAt": "2023-11-07T05:31:56Z",
"displayOptions": {
"renderRawHtml": true,
"style": {
"backgroundWidth": "<string>",
"fontFamily": "<string>",
"helpTextColor": "<string>",
"helpTextSize": "<string>",
"labelTextColor": "<string>",
"labelTextSize": "<string>",
"legalConsentTextColor": "<string>",
"legalConsentTextSize": "<string>",
"submitColor": "<string>",
"submitFontColor": "<string>",
"submitSize": "<string>"
},
"submitButtonText": "<string>",
"cssClass": "<string>"
},
"fieldGroups": [
{
"fields": [
{
"dependentFields": [
{
"dependentCondition": {
"rangeEnd": "<string>",
"rangeStart": "<string>",
"value": "<string>",
"values": [
"<string>"
]
},
"dependentField": "<unknown>"
}
],
"fieldType": "email",
"hidden": true,
"label": "<string>",
"name": "<string>",
"objectTypeId": "<string>",
"required": true,
"validation": {
"blockedEmailDomains": [
"<string>"
],
"useDefaultBlockList": true
},
"defaultValue": "<string>",
"description": "<string>",
"placeholder": "<string>"
}
],
"richText": "<string>"
}
],
"formType": "hubspot",
"id": "<string>",
"legalConsentOptions": {
"type": "none"
},
"name": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Partially update a form definition
Update an existing form in your HubSpot account by specifying the form ID. This operation allows you to modify the form’s properties, such as its name, field groups, configuration, display options, legal consent options, and archived status. This is useful for keeping forms up to date with your current marketing strategies or compliance requirements.
curl --request PATCH \
--url https://api.hubapi.com/marketing/forms/2026-09-beta/{formId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"archived": true,
"fieldGroups": [
{
"fields": [
{
"dependentFields": [
{
"dependentCondition": {
"rangeEnd": "<string>",
"rangeStart": "<string>",
"value": "<string>",
"values": [
"<string>"
]
},
"dependentField": "<unknown>"
}
],
"fieldType": "email",
"hidden": true,
"label": "<string>",
"name": "<string>",
"objectTypeId": "<string>",
"required": true,
"validation": {
"blockedEmailDomains": [
"<string>"
],
"useDefaultBlockList": true
},
"defaultValue": "<string>",
"description": "<string>",
"placeholder": "<string>"
}
],
"richText": "<string>"
}
],
"legalConsentOptions": {
"type": "none"
},
"name": "<string>"
}
'import requests
url = "https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}"
payload = {
"archived": True,
"fieldGroups": [
{
"fields": [
{
"dependentFields": [
{
"dependentCondition": {
"rangeEnd": "<string>",
"rangeStart": "<string>",
"value": "<string>",
"values": ["<string>"]
},
"dependentField": "<unknown>"
}
],
"fieldType": "email",
"hidden": True,
"label": "<string>",
"name": "<string>",
"objectTypeId": "<string>",
"required": True,
"validation": {
"blockedEmailDomains": ["<string>"],
"useDefaultBlockList": True
},
"defaultValue": "<string>",
"description": "<string>",
"placeholder": "<string>"
}
],
"richText": "<string>"
}
],
"legalConsentOptions": { "type": "none" },
"name": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
archived: true,
fieldGroups: [
{
fields: [
{
dependentFields: [
{
dependentCondition: {
rangeEnd: '<string>',
rangeStart: '<string>',
value: '<string>',
values: ['<string>']
},
dependentField: '<unknown>'
}
],
fieldType: 'email',
hidden: true,
label: '<string>',
name: '<string>',
objectTypeId: '<string>',
required: true,
validation: {blockedEmailDomains: ['<string>'], useDefaultBlockList: true},
defaultValue: '<string>',
description: '<string>',
placeholder: '<string>'
}
],
richText: '<string>'
}
],
legalConsentOptions: {type: 'none'},
name: '<string>'
})
};
fetch('https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'archived' => true,
'fieldGroups' => [
[
'fields' => [
[
'dependentFields' => [
[
'dependentCondition' => [
'rangeEnd' => '<string>',
'rangeStart' => '<string>',
'value' => '<string>',
'values' => [
'<string>'
]
],
'dependentField' => '<unknown>'
]
],
'fieldType' => 'email',
'hidden' => true,
'label' => '<string>',
'name' => '<string>',
'objectTypeId' => '<string>',
'required' => true,
'validation' => [
'blockedEmailDomains' => [
'<string>'
],
'useDefaultBlockList' => true
],
'defaultValue' => '<string>',
'description' => '<string>',
'placeholder' => '<string>'
]
],
'richText' => '<string>'
]
],
'legalConsentOptions' => [
'type' => 'none'
],
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}"
payload := strings.NewReader("{\n \"archived\": true,\n \"fieldGroups\": [\n {\n \"fields\": [\n {\n \"dependentFields\": [\n {\n \"dependentCondition\": {\n \"rangeEnd\": \"<string>\",\n \"rangeStart\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n },\n \"dependentField\": \"<unknown>\"\n }\n ],\n \"fieldType\": \"email\",\n \"hidden\": true,\n \"label\": \"<string>\",\n \"name\": \"<string>\",\n \"objectTypeId\": \"<string>\",\n \"required\": true,\n \"validation\": {\n \"blockedEmailDomains\": [\n \"<string>\"\n ],\n \"useDefaultBlockList\": true\n },\n \"defaultValue\": \"<string>\",\n \"description\": \"<string>\",\n \"placeholder\": \"<string>\"\n }\n ],\n \"richText\": \"<string>\"\n }\n ],\n \"legalConsentOptions\": {\n \"type\": \"none\"\n },\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"archived\": true,\n \"fieldGroups\": [\n {\n \"fields\": [\n {\n \"dependentFields\": [\n {\n \"dependentCondition\": {\n \"rangeEnd\": \"<string>\",\n \"rangeStart\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n },\n \"dependentField\": \"<unknown>\"\n }\n ],\n \"fieldType\": \"email\",\n \"hidden\": true,\n \"label\": \"<string>\",\n \"name\": \"<string>\",\n \"objectTypeId\": \"<string>\",\n \"required\": true,\n \"validation\": {\n \"blockedEmailDomains\": [\n \"<string>\"\n ],\n \"useDefaultBlockList\": true\n },\n \"defaultValue\": \"<string>\",\n \"description\": \"<string>\",\n \"placeholder\": \"<string>\"\n }\n ],\n \"richText\": \"<string>\"\n }\n ],\n \"legalConsentOptions\": {\n \"type\": \"none\"\n },\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/marketing/forms/2026-09-beta/{formId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"archived\": true,\n \"fieldGroups\": [\n {\n \"fields\": [\n {\n \"dependentFields\": [\n {\n \"dependentCondition\": {\n \"rangeEnd\": \"<string>\",\n \"rangeStart\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n },\n \"dependentField\": \"<unknown>\"\n }\n ],\n \"fieldType\": \"email\",\n \"hidden\": true,\n \"label\": \"<string>\",\n \"name\": \"<string>\",\n \"objectTypeId\": \"<string>\",\n \"required\": true,\n \"validation\": {\n \"blockedEmailDomains\": [\n \"<string>\"\n ],\n \"useDefaultBlockList\": true\n },\n \"defaultValue\": \"<string>\",\n \"description\": \"<string>\",\n \"placeholder\": \"<string>\"\n }\n ],\n \"richText\": \"<string>\"\n }\n ],\n \"legalConsentOptions\": {\n \"type\": \"none\"\n },\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"archived": true,
"configuration": {
"allowLinkToResetKnownValues": true,
"archivable": true,
"cloneable": true,
"createNewContactForNewEmail": true,
"editable": true,
"lifecycleStages": [
{
"objectTypeId": "<string>",
"value": "<string>"
}
],
"notifyContactOwner": true,
"notifyRecipients": [
"<string>"
],
"postSubmitAction": {
"value": "<string>"
},
"prePopulateKnownValues": true,
"recaptchaEnabled": true
},
"createdAt": "2023-11-07T05:31:56Z",
"displayOptions": {
"renderRawHtml": true,
"style": {
"backgroundWidth": "<string>",
"fontFamily": "<string>",
"helpTextColor": "<string>",
"helpTextSize": "<string>",
"labelTextColor": "<string>",
"labelTextSize": "<string>",
"legalConsentTextColor": "<string>",
"legalConsentTextSize": "<string>",
"submitColor": "<string>",
"submitFontColor": "<string>",
"submitSize": "<string>"
},
"submitButtonText": "<string>",
"cssClass": "<string>"
},
"fieldGroups": [
{
"fields": [
{
"dependentFields": [
{
"dependentCondition": {
"rangeEnd": "<string>",
"rangeStart": "<string>",
"value": "<string>",
"values": [
"<string>"
]
},
"dependentField": "<unknown>"
}
],
"fieldType": "email",
"hidden": true,
"label": "<string>",
"name": "<string>",
"objectTypeId": "<string>",
"required": true,
"validation": {
"blockedEmailDomains": [
"<string>"
],
"useDefaultBlockList": true
},
"defaultValue": "<string>",
"description": "<string>",
"placeholder": "<string>"
}
],
"richText": "<string>"
}
],
"formType": "hubspot",
"id": "<string>",
"legalConsentOptions": {
"type": "none"
},
"name": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
The ID of the form to update.
Body
Whether this form is archived.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The fields in the form, grouped in rows.
Show child attributes
Show child attributes
Configuration for legal consent and data processing compliance options. Supports types: none, legitimate_interest, explicit_consent_to_process, implicit_consent_to_process.
- none
- legitimate_interest
- explicit_consent_to_process
- implicit_consent_to_process
Show child attributes
Show child attributes
The name of the form. Expected to be unique for a hub.
Response
successful operation
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
hubspot - none
- legitimate_interest
- explicit_consent_to_process
- implicit_consent_to_process
Show child attributes
Show child attributes
Was this page helpful?