Today the API exposes segments as dynamic lists. There is no separate
/segments endpoint. A segment is a list with type: "dynamic" and a rule tree. Static lists (explicit member add/remove) use the same endpoints with type: "static".What you’ll build
A script that creates a dynamic list with a rule tree, then verifies membership in the Spotzee app.Prerequisites
You’ll need ask_ project key with write access. See Authentication.
Walkthrough
1
Decide what membership means
A segment is a boolean rule that yields true or false for any contact. Common shapes:
- Attribute filter:
data.plan = "professional" - Behavioural filter: contacts who triggered
order_placedin the last 30 days - Combined:
plan = "professional"AND triggeredorder_placedin the last 30 days
2
Build the rule tree
Spotzee rules are a tree of nodes. The root is a Refer to the RuleNode, RuleType, RuleGroup, and RuleFrequency schemas in the API reference for the exact enum values.
wrapper node that combines its children with and / or; leaves are typed comparisons against a contact field (group: "user") or event payload (group: "event").Every node carries:Example: contacts on the Professional plan who triggered
order_placed at least once in the last 30 days.3
Create the list
POST /lists with type: "dynamic":id. Save it. That’s how you’ll reference the segment from journeys, campaigns, and member-listing endpoints.4
Verify membership
A new dynamic list starts as a draft. Inspect its matching contacts in the Spotzee app, then publish the intended rule before using the segment. A contact search does not evaluate the list’s complete rule tree and is not a substitute for checking membership.
5
Update the rule
PATCH /lists/{listId} with a new rule block. The updated rule determines which contacts match when the segment is evaluated. For a draft list, include published: true when you are ready to publish it.Pitfalls to avoid
- Don’t filter on fields you haven’t populated yet. A rule on
data.planreturns zero members until at least one contact has that field. Sync your contacts first (Sync contacts), then build segments. - Don’t bury the rule in too many layers. Spotzee accepts deeply nested groups, but a rule that spans more than two
and/orlayers is hard for operators to read in the UI.
Reference
- API surface: see Main API → Lists
- Rule node schema: see RuleNode in the API reference
- Sync contacts first: see Sync contacts from your CRM
- Pagination: see Pagination
- Conceptual overview: see Segments