curl --request PATCH \
--url https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"approvalStage": {},
"noBackwardsMovementRule": {},
"noSkippingStagesRule": {},
"objectCreationRule": {}
}
'import requests
url = "https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}"
payload = {
"approvalStage": {},
"noBackwardsMovementRule": {},
"noSkippingStagesRule": {},
"objectCreationRule": {}
}
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({
approvalStage: {},
noBackwardsMovementRule: {},
noSkippingStagesRule: {},
objectCreationRule: {}
})
};
fetch('https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}', 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/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}",
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([
'approvalStage' => [
],
'noBackwardsMovementRule' => [
],
'noSkippingStagesRule' => [
],
'objectCreationRule' => [
]
]),
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/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}"
payload := strings.NewReader("{\n \"approvalStage\": {},\n \"noBackwardsMovementRule\": {},\n \"noSkippingStagesRule\": {},\n \"objectCreationRule\": {}\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/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"approvalStage\": {},\n \"noBackwardsMovementRule\": {},\n \"noSkippingStagesRule\": {},\n \"objectCreationRule\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}")
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 \"approvalStage\": {},\n \"noBackwardsMovementRule\": {},\n \"noSkippingStagesRule\": {},\n \"objectCreationRule\": {}\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"governanceValidationRules": {
"noBackwardsMovementRule": {
"enabledForAllStages": true,
"pipelineStageIds": [
"<string>"
]
},
"noSkippingStagesRule": {
"enabledForAllStages": true,
"pipelineStageIds": [
"<string>"
]
},
"objectCreationRule": {
"pipelineStageIds": [
"<string>"
]
}
},
"id": "<string>",
"objectTypeId": "<string>",
"pipelineId": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"approvalStage": {
"approverUserIds": [
"<string>"
],
"pipelineStageId": "<string>",
"approvalComment": "<string>",
"conditionalApprovalFilterBranch": {
"filterBranchOperator": "<string>",
"filterBranchType": "OR",
"filterBranches": [
{
"filterBranchOperator": "<string>",
"filterBranchType": "AND",
"filterBranches": [
{
"filterBranchOperator": "<string>",
"filterBranchType": "NOT_ALL",
"filterBranches": [
{
"filterBranchOperator": "<string>",
"filterBranchType": "NOT_ANY",
"filterBranches": [
"<unknown>"
],
"filters": [
"<unknown>"
]
}
],
"filters": [
{
"filterType": "PROPERTY",
"operation": "<unknown>",
"property": "<string>"
}
]
}
],
"filters": [
{
"filterType": "PROPERTY",
"operation": {
"includeObjectsWithNoValueSet": true,
"operationType": "BOOL",
"operator": "<string>",
"value": true
},
"property": "<string>"
}
]
}
],
"filters": [
{
"filterType": "PROPERTY",
"operation": {
"includeObjectsWithNoValueSet": true,
"operationType": "BOOL",
"operator": "<string>",
"value": true
},
"property": "<string>"
}
]
}
}
}{
"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"
}
}Update rules (Partial)
Update the rules for a specific pipeline within a given object type in HubSpot. This operation allows you to modify governance validation rules and approval stages for the specified pipeline. It is useful for maintaining or altering the workflow rules associated with your pipelines.
curl --request PATCH \
--url https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"approvalStage": {},
"noBackwardsMovementRule": {},
"noSkippingStagesRule": {},
"objectCreationRule": {}
}
'import requests
url = "https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}"
payload = {
"approvalStage": {},
"noBackwardsMovementRule": {},
"noSkippingStagesRule": {},
"objectCreationRule": {}
}
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({
approvalStage: {},
noBackwardsMovementRule: {},
noSkippingStagesRule: {},
objectCreationRule: {}
})
};
fetch('https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}', 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/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}",
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([
'approvalStage' => [
],
'noBackwardsMovementRule' => [
],
'noSkippingStagesRule' => [
],
'objectCreationRule' => [
]
]),
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/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}"
payload := strings.NewReader("{\n \"approvalStage\": {},\n \"noBackwardsMovementRule\": {},\n \"noSkippingStagesRule\": {},\n \"objectCreationRule\": {}\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/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"approvalStage\": {},\n \"noBackwardsMovementRule\": {},\n \"noSkippingStagesRule\": {},\n \"objectCreationRule\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/pipelines-rules/2026-09-beta/{objectTypeId}/{pipelineId}")
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 \"approvalStage\": {},\n \"noBackwardsMovementRule\": {},\n \"noSkippingStagesRule\": {},\n \"objectCreationRule\": {}\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"governanceValidationRules": {
"noBackwardsMovementRule": {
"enabledForAllStages": true,
"pipelineStageIds": [
"<string>"
]
},
"noSkippingStagesRule": {
"enabledForAllStages": true,
"pipelineStageIds": [
"<string>"
]
},
"objectCreationRule": {
"pipelineStageIds": [
"<string>"
]
}
},
"id": "<string>",
"objectTypeId": "<string>",
"pipelineId": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"approvalStage": {
"approverUserIds": [
"<string>"
],
"pipelineStageId": "<string>",
"approvalComment": "<string>",
"conditionalApprovalFilterBranch": {
"filterBranchOperator": "<string>",
"filterBranchType": "OR",
"filterBranches": [
{
"filterBranchOperator": "<string>",
"filterBranchType": "AND",
"filterBranches": [
{
"filterBranchOperator": "<string>",
"filterBranchType": "NOT_ALL",
"filterBranches": [
{
"filterBranchOperator": "<string>",
"filterBranchType": "NOT_ANY",
"filterBranches": [
"<unknown>"
],
"filters": [
"<unknown>"
]
}
],
"filters": [
{
"filterType": "PROPERTY",
"operation": "<unknown>",
"property": "<string>"
}
]
}
],
"filters": [
{
"filterType": "PROPERTY",
"operation": {
"includeObjectsWithNoValueSet": true,
"operationType": "BOOL",
"operator": "<string>",
"value": true
},
"property": "<string>"
}
]
}
],
"filters": [
{
"filterType": "PROPERTY",
"operation": {
"includeObjectsWithNoValueSet": true,
"operationType": "BOOL",
"operator": "<string>",
"value": true
},
"property": "<string>"
}
]
}
}
}{
"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 unique identifier of the object type for which the pipeline rules are being updated.
The unique identifier of the pipeline whose rules are being updated.
Body
A rule that defines the approval process for a specific pipeline stage. It is defined using the PublicApprovalStageRuleRequest schema.
A rule that prevents moving backwards in the pipeline stages. It is defined using the PublicSequenceValidationRule schema.
A rule that prevents skipping stages in the pipeline. It is defined using the PublicSequenceValidationRule schema.
A rule that specifies conditions for object creation within the pipeline. It is defined using the PublicObjectCreationRule schema.
Response
successful operation
The date and time when the pipeline rule was created.
Show child attributes
Show child attributes
The unique identifier for the pipeline rule.
The identifier for the type of object the pipeline rule is associated with.
The unique identifier for the pipeline to which the rule applies.
The date and time when the pipeline rule was last updated.
Show child attributes
Show child attributes
Was this page helpful?