Batch delete account flag state
curl --request POST \
--url 'https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=' \
--header 'Content-Type: application/json' \
--data '
{
"portalIds": [
123
]
}
'import requests
url = "https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey="
payload = { "portalIds": [123] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({portalIds: [123]})
};
fetch('https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=', 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/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'portalIds' => [
123
]
]),
CURLOPT_HTTPHEADER => [
"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/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey="
payload := strings.NewReader("{\n \"portalIds\": [\n 123\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=")
.header("Content-Type", "application/json")
.body("{\n \"portalIds\": [\n 123\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"portalIds\": [\n 123\n ]\n}"
response = http.request(request)
puts response.read_body{
"portalFlagStates": [
{
"appId": 123,
"flagName": "<string>",
"flagState": "ABSENT",
"portalId": 123
}
]
}{
"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"
}
}Portal Flag States
Batch delete account flag state
Delete an account-level flag state for multiple HubSpot accounts at once. Use this endpoint to manage flag exposure for groups of HubSpot accounts.
POST
/
feature-flags
/
2026-09
/
{appId}
/
flags
/
{flagName}
/
portals
/
batch
/
delete
Batch delete account flag state
curl --request POST \
--url 'https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=' \
--header 'Content-Type: application/json' \
--data '
{
"portalIds": [
123
]
}
'import requests
url = "https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey="
payload = { "portalIds": [123] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({portalIds: [123]})
};
fetch('https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=', 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/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'portalIds' => [
123
]
]),
CURLOPT_HTTPHEADER => [
"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/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey="
payload := strings.NewReader("{\n \"portalIds\": [\n 123\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=")
.header("Content-Type", "application/json")
.body("{\n \"portalIds\": [\n 123\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/feature-flags/2026-09/{appId}/flags/{flagName}/portals/batch/delete?hapikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"portalIds\": [\n 123\n ]\n}"
response = http.request(request)
puts response.read_body{
"portalFlagStates": [
{
"appId": 123,
"flagName": "<string>",
"flagState": "ABSENT",
"portalId": 123
}
]
}{
"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
Path Parameters
The unique identifier of the application associated with the feature flag.
The name of the feature flag to be deleted.
Body
application/json
An array of integers representing the unique identifiers of the portals for which the feature flag states are to be deleted.
Response
successful operation
An array of portal flag state responses, each representing the state of a feature flag for a specific portal.
Show child attributes
Show child attributes
Last modified on September 9, 2026
Was this page helpful?