Skip to main content
PUT
/
crm
/
v3
/
lists
/
{listId}
/
memberships
/
remove
Remove Records from a List
curl --request PUT \
  --url https://api.hubapi.com/crm/v3/lists/{listId}/memberships/remove \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '[
  "<string>"
]'
import requests

url = "https://api.hubapi.com/crm/v3/lists/{listId}/memberships/remove"

payload = ["<string>"]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify(['<string>'])
};

fetch('https://api.hubapi.com/crm/v3/lists/{listId}/memberships/remove', 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/v3/lists/{listId}/memberships/remove",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'<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/crm/v3/lists/{listId}/memberships/remove"

payload := strings.NewReader("[\n \"<string>\"\n]")

req, _ := http.NewRequest("PUT", 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.put("https://api.hubapi.com/crm/v3/lists/{listId}/memberships/remove")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n \"<string>\"\n]")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.hubapi.com/crm/v3/lists/{listId}/memberships/remove")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n \"<string>\"\n]"

response = http.request(request)
puts response.read_body
{
  "recordIdsMissing": [
    "<string>"
  ],
  "recordIdsRemoved": [
    "<string>"
  ],
  "recordsIdsAdded": [
    "<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

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

listId
string
required

The ILS ID of the MANUAL or SNAPSHOT list.

Body

application/json

Response

successful operation

The IDs of the records that were added, removed, and/or found to be missing as a result of the membership update request.

recordIdsMissing
string[]
required

The IDs of the records that were missing (e.g. did not exist in the portal) and so were not added or removed.

recordIdsRemoved
string[]
required

The IDs of the records that were removed from the list.

recordsIdsAdded
string[]
required
Last modified on March 30, 2026