Kraiter
SDK Reference

Segments

SDK reference for creating and managing audience segments in Kraiter.

The kraiter.segments namespace provides methods for defining and computing dynamic audience segments. A segment is a rule-based grouping of contacts that is recomputed on demand.

Segment rules

A segment's rules are a recursive boolean expression tree, not a flat list. Each node has an operator ("and", "or", or "not") and a conditions array whose entries are either individual conditions or nested rule nodes.

An individual condition is one of:

TypeShapeDescription
property{ type: 'property', field, operator, value? }Matches against a contact property.
derived{ type: 'derived', field, operator, value? }Matches against a server-derived field.
segment{ type: 'segment', segmentId, operator }Matches on membership of another segment. operator is 'memberOf' or 'notMemberOf'.
const rules = {
  operator: 'and',
  conditions: [
    { type: 'property', field: 'plan', operator: 'equals', value: 'pro' },
    { type: 'derived', field: 'lastActiveAt', operator: 'after', value: '2025-01-01T00:00:00Z' },
  ],
};

create

Creates a new segment.

const segment = await kraiter.segments.create({
  name: 'Active Pro Users',
  description: 'Pro-plan contacts active this year',
  rules: {
    operator: 'and',
    conditions: [
      { type: 'property', field: 'plan', operator: 'equals', value: 'pro' },
      { type: 'derived', field: 'lastActiveAt', operator: 'after', value: '2025-01-01T00:00:00Z' },
    ],
  },
  enabled: true,
});

Parameters

ParameterTypeRequiredDescription
namestringYesA human-readable name for the segment.
descriptionstringNoA longer description of the segment.
rulesSegmentRulesYesThe boolean expression tree defining membership (see Segment rules).
enabledbooleanNoWhether the segment is enabled for evaluation.

Returns

Promise<Segment> — the newly created segment object.

Errors

CodeWhen
VALIDATION_ERRORThe rules tree is empty or contains invalid conditions.

get

Retrieves a segment by ID. Returns null if not found.

const segment = await kraiter.segments.get('seg_abc123');

if (segment) {
  console.log(segment.name, segment.memberCount);
}

Parameters

ParameterTypeRequiredDescription
segmentIdstringYesThe segment ID.

Returns

Promise<Segment | null> — the segment object, or null if not found.


list

Lists segments with cursor-based pagination.

const page = await kraiter.segments.list({ limit: 50 });

for (const segment of page.items) {
  console.log(segment.segmentId, segment.name);
}

Parameters

ParameterTypeRequiredDescription
limitnumberNoMaximum items per page.
cursorstringNoPagination cursor from a previous response's nextCursor.

Returns

Promise<{ items: Segment[]; nextCursor?: string }> — a page of segment objects.


update

Updates an existing segment. Only the fields you include are changed.

const updated = await kraiter.segments.update('seg_abc123', {
  name: 'Active Enterprise Users',
  rules: {
    operator: 'and',
    conditions: [
      { type: 'property', field: 'plan', operator: 'equals', value: 'enterprise' },
    ],
  },
});

Parameters

ParameterTypeRequiredDescription
segmentIdstringYesThe segment ID to update.
namestringNoUpdated segment name.
descriptionstringNoUpdated description.
rulesSegmentRulesNoUpdated rules tree.
enabledbooleanNoWhether the segment is enabled.

Returns

Promise<Segment> — the updated segment object.

Errors

CodeWhen
NOT_FOUNDNo segment exists with this ID.
VALIDATION_ERRORThe updated rules are invalid.

delete

Permanently deletes a segment.

await kraiter.segments.delete('seg_abc123');

Parameters

ParameterTypeRequiredDescription
segmentIdstringYesThe segment ID to delete.

Returns

Promise<void>

Errors

CodeWhen
NOT_FOUNDNo segment exists with this ID.

compute

Triggers a recomputation of segment membership. This evaluates the segment rules against all contacts and updates the membership list.

const result = await kraiter.segments.compute('seg_abc123');

console.log(result.processed); // contacts evaluated
console.log(result.changed);   // memberships that changed

Parameters

ParameterTypeRequiredDescription
segmentIdstringYesThe segment ID to recompute.

Returns

Promise<ComputeSegmentResult> — an object with segmentId, processed (number of contacts evaluated), and changed (number of memberships that changed).


listMembers

Lists the membership records for a segment, with cursor-based pagination. Membership is based on the last computation — call compute first if you need fresh results.

// Recompute then list
await kraiter.segments.compute('seg_abc123');

const page = await kraiter.segments.listMembers('seg_abc123');

for (const member of page.items) {
  console.log(member.contactId, member.isMember, member.computedAt);
}

Parameters

ParameterTypeRequiredDescription
segmentIdstringYesThe segment ID.
limitnumberNoMaximum items per page.
cursorstringNoPagination cursor.

Returns

Promise<{ items: SegmentMember[]; nextCursor?: string }> — a page of membership records. Each SegmentMember has contactId, isMember, computedAt, and version.