Scope requirements
Scope requirements
What’s new in 2026-09-beta
In the2026-09-beta version of the Segments (Lists) API, a new search endpoint (/crm/lists/2026-09-beta/all) was added that sorts results by segment ID in ascending order. Pagination for this endpoint uses a cursor (after), so you can page through all segments by making additional calls with the cursor.
Learn more about reading segments.
Read all segments
To read all segments, sorted by ID, make aPOST request to /crm/lists/2026-09-beta/all.
To retrieve all segments, add an empty request body. To retrieve specific segments, you can include the following optional filters.
Segments are returned in ascending ID order. By default, the following properties are returned for each segment if there are values:
For example, to retrieve active contact segments (five per page) with their descriptions, your request body would look like:
after string, your request body would look like:
Validation errors
You may run into the following validation errors when using the/crm/lists/2026-09-beta/all endpoint.
Create segments
To create a segment, make aPOST request to /crm/lists/2026-09-beta/.
In the request body, you must include the following fields: name, objectTypeId, and processingType. The filterBranch parameter is optional, and can be included to create branching logic for DYNAMIC and SNAPSHOT type segments. Learn more about configuring segment filters and branches.
Processing types
There are threeprocessingType values for segments: MANUAL, DYNAMIC, and SNAPSHOT.
MANUAL: records can only be added to or removed from the segment via manual actions by the user or API call. There is no segment processing or segment membership management done in the background by HubSpot’s systems. This type of segment is helpful for when you need a set group of records that won’t change unless manually updated.DYNAMIC: filters are used to determine which records become segment members. This type of segment is processed in the background by HubSpot to ensure that the segment only contains records that match the filters. Whenever a record changes, it is reevaluated against the filters and is either added or removed. This type of segment is helpful for when you want to keep a running group that you expect to change over time.SNAPSHOT: filters are specified at the time of segment creation. After initial processing is completed, records can only be added to or removed from the segment by manual actions. This type of segment is helpful for when you want to create a group of records based on specific criteria, but don’t want that segment to change automatically after initial processing.
Example
For example, the following request body would create a new static segment of contacts:listId (the ILS list ID) will be generated. This ID is used for future updates and modifications. The following is an example response with the ILS list ID highlighted:
Update segments
Update segment names
To update a segment’s name, make aPUT request to /crm/lists/2026-09-beta/{listId}/update-list-name with the listName query parameter. If the segment with the provided ILS list ID exists, then its name will be updated to the provided listName. The listName must be unique amongst all other public segments in the account.
You can also include a query parameter of includeFilters=true to return segment filter definitions in the response.
For example, to change a segment’s name (with the ILS ID 612) to “January Event Contacts Segment” and return filters, the request URL would be: /crm/lists/2026-09-beta/612/update-list-name?listName=January%20Event%20Contacts%20Segment&includeFilters=true. Expand the section below to review an example of the expected response.
Update a segment filter branch
To update aDYNAMIC segment’s filter branches, make a PUT request to /crm/lists/2026-09-beta/{listId}/update-list-filters. In the request body, include the updated filter branch definition. This definition will replace the existing definition, so make sure to include any filters you want to keep from the previous definition. Once the filter branch is updated, the segment will begin processing its new memberships.
For example, your segment includes a filter based on contact’s Likelihood to close (hs_predictivecontactscore_v2) that you want to keep. To add filters to include contacts with a value for email who also opted into certain email subscriptions, your request body would look like:
Delete and restore a segment
To delete a segment, make aDELETE request to /crm/lists/2026-09-beta/{listId}.
Once deleted, segments can be restored within 90 days of deletion by making a PUT request to /crm/lists/2026-09-beta/{listId}/restore. Segments deleted more than 90 days ago cannot be restored.