Documentation

SDK Reference

Complete method-by-method DecisionsLayer SDK documentation for production integrations.

SDK reference

The Node SDK is an API integration layer. It validates payloads, sends HTTP requests, applies timeouts and retries, propagates correlation IDs, and returns structured API responses. It does not run rules, policies, models, or optimization locally.

Package. Install @decisionslayer/ingestion-ts. The name is ingestion-oriented for compatibility; the client covers ingestion, workspace, analytics, observability, alerts, intelligence, and optimization APIs.

Create a client

Use API keys for machine ingestion and read paths. Use bearer sessions for authenticated workspace administration flows.

client.jssdk
import { createDecisionIngestionClient } from "@decisionslayer/ingestion-ts";

const apiClient = createDecisionIngestionClient({
  baseUrl: "https://api.decisionslayer.com",
  apiKey: process.env.DL_API_KEY,
  timeoutMs: 5000,
});

const userClient = createDecisionIngestionClient({
  baseUrl: "https://api.decisionslayer.com",
  accessToken: process.env.DL_ACCESS_TOKEN,
  tenantId: process.env.DL_TENANT_ID,
  timeoutMs: 5000,
});
Key Type Required Values / format Description
baseUrl string Yes https://api.decisionslayer.com or private deployment URL API origin.
apiKey string No dl_live_... or dl_test_... Server-side API key for machine calls.
accessToken string No JWT access token Bearer token for user/workspace administration.
tenantId string No Tenant/workspace ID Required with bearer workspace calls.
timeoutMs number No Default 5000 Request timeout in milliseconds.

Health

SDKapiClient.health.get()

Checks service reachability.

Auth. None.

Returns. Health status object.

Health.jssdk
const health = await apiClient.health.get();

Auth

SDKuserClient.auth.signup(body)

Creates a user and initial workspace.

Auth. None.

Key Type Required Values / format Description
name string Yes 1-120 chars User display name.
email string Yes Valid email Login email.
password string Yes Minimum policy length and complexity User password.
workspace_name string Yes 1-120 chars Initial workspace name.

Returns. User, workspace, and session tokens.

Signup.jssdk
const signup = await userClient.auth.signup({ name, email, password, workspace_name });
SDKuserClient.auth.login(body)

Creates an authenticated user session.

Auth. None.

Key Type Required Values / format Description
email string Yes Valid email Login email.
password string Yes Password User password.

Returns. Access token, refresh token, user, and workspace context.

Login.jssdk
const login = await userClient.auth.login({ email, password });
SDKuserClient.auth.refresh(body)

Refreshes an access token.

Auth. None.

Key Type Required Values / format Description
refresh_token string Yes Refresh token from login Long-lived refresh credential.

Returns. New token pair.

Refresh token.jssdk
const refreshed = await userClient.auth.refresh({ refresh_token });
SDKuserClient.auth.logout()

Ends the current session.

Auth. Bearer.

Returns. Empty success response.

Logout.jssdk
await userClient.auth.logout();
SDKuserClient.auth.me()

Returns the current user profile.

Auth. Bearer plus tenant context when available.

Returns. User profile object.

Current user.jssdk
const profile = await userClient.auth.me();
SDKuserClient.auth.updateMe(body)

Updates the current user profile.

Auth. Bearer.

Key Type Required Values / format Description
name string No 1-120 chars Display name.

Returns. Updated profile.

Update current user.jssdk
const profile = await userClient.auth.updateMe({ name: "Ada L." });
SDKuserClient.auth.workspaces()

Lists workspaces available to the current user.

Auth. Bearer.

Returns. Workspace list.

Workspaces.jssdk
const workspaces = await userClient.auth.workspaces();
SDKuserClient.auth.forgotPassword(body)

Starts password reset.

Auth. None.

Key Type Required Values / format Description
email string Yes Valid email Account email.

Returns. Accepted reset request.

Forgot password.jssdk
await userClient.auth.forgotPassword({ email });
SDKuserClient.auth.resetPassword(body)

Completes password reset.

Auth. None.

Key Type Required Values / format Description
token string Yes Reset token Token from email.
password string Yes New password Replacement password.

Returns. Updated password confirmation.

Reset password.jssdk
await userClient.auth.resetPassword({ token, password });
SDKuserClient.auth.verifyEmail(body)

Verifies a user email address.

Auth. None.

Key Type Required Values / format Description
token string Yes Email verification token Token from email.

Returns. Verification confirmation.

Verify email.jssdk
await userClient.auth.verifyEmail({ token });
SDKuserClient.auth.acceptInvitation(body)

Accepts a workspace invitation.

Auth. None.

Key Type Required Values / format Description
token string Yes Invitation token Invitation token.
name string Yes 1-120 chars User display name.
password string Yes Password New account password.

Returns. Accepted invitation and session.

Accept invitation.jssdk
const accepted = await userClient.auth.acceptInvitation({ token, name, password });

Decisions

SDKapiClient.decisions.log(body)

Writes one append-only decision event. Replays with the same external_decision_id are idempotent.

Auth. API key.

Key Type Required Values / format Description
external_decision_id string No Unique per tenant when supplied Your stable decision identifier. Used for idempotent replay detection.
decision_type string Yes Workspace taxonomy such as transaction_review, kyc_check, claim_review Groups decisions for analytics and configuration.
subject.type string Yes Customer-defined type such as transaction, customer, claim, listing The entity class the decision is about.
subject.id string Yes Stable subject identifier The entity identifier in your system.
decision.action string Yes Workspace configured action such as allow, approve, deny, reject, review, escalate The action taken by the decision system.
decision.status string Yes draft, pending, final, superseded Lifecycle status for the decision record.
actors[] array<object> No type, id, version, role Models, rules, services, or people involved in the decision.
evidence[] array<object> No type, key, name, value, weight, source Signals, scores, rules, policy references, or provider results that influenced the decision.
context object No JSON object Operational context such as channel, region, queue, source system, or experiment.
inputs object No JSON object Input values used by the decision system.
metadata object No JSON object Additional customer-defined metadata.
occurred_at string Yes ISO 8601 timestamp When the decision happened.

Returns. Decision ID, status, idempotency metadata.

Log decision.jssdk
const decision = await apiClient.decisions.log(decisionPayload);
SDKapiClient.decisions.logBatch(items)

Writes multiple decision events in one request.

Auth. API key.

Key Type Required Values / format Description
items[] array<object> Yes Decision payload objects Each item follows the decision schema.

Returns. Batch result with per-record status.

Log decision batch.jssdk
const batch = await apiClient.decisions.logBatch([decisionPayload]);
SDKapiClient.decisions.get(decisionId)

Fetches one decision by platform ID.

Auth. API key.

Key Type Required Values / format Description
decisionId string Yes Decision UUID Platform decision ID.

Returns. Decision detail.

Get decision.jssdk
const detail = await apiClient.decisions.get(decision.id);
SDKapiClient.decisions.list(filters)

Searches decisions by taxonomy, subject, actor, time range, and pagination.

Auth. API key.

Key Type Required Values / format Description
decision_type string No Workspace decision type Filter by decision type.
subject_type string No Subject type Filter by subject type.
subject_id string No Subject ID Filter by subject ID.
actor_id string No Actor ID Filter by actor.
from string No ISO 8601 Start time.
to string No ISO 8601 End time.
page_size number No 1-100 Page size.
cursor string No Opaque cursor Pagination cursor.

Returns. Decision list and next cursor.

List decisions.jssdk
const list = await apiClient.decisions.list({ decision_type: "transaction_review", page_size: 25 });
SDKapiClient.decisions.timeline(subjectType, subjectId)

Returns all decisions and outcomes for a subject.

Auth. API key.

Key Type Required Values / format Description
subjectType string Yes Subject type Subject type.
subjectId string Yes Subject ID Subject ID.

Returns. Timeline records.

Subject timeline.jssdk
const timeline = await apiClient.decisions.timeline("transaction", "txn_123");
SDKapiClient.outcomes.log(decisionId, body)

Attaches one outcome to a decision.

Auth. API key.

Key Type Required Values / format Description
decisionId string Yes Decision UUID Platform decision ID.
outcome_type string Yes Workspace taxonomy such as review_result, fraud_resolution, conversion, chargeback The kind of downstream result being attached.
outcome_value string Yes Customer-defined value such as approved, rejected, true_positive, false_positive, converted The observed result value.
payload object No JSON object Supporting details about the outcome.
metadata object No JSON object Additional outcome metadata.
occurred_at string No ISO 8601 timestamp When the outcome happened. Defaults to server receive time if omitted.

Returns. Outcome record.

Log outcome.jssdk
const outcome = await apiClient.outcomes.log(decision.id, outcomePayload);
SDKapiClient.outcomes.logBatch(items)

Attaches outcomes to multiple decisions.

Auth. API key.

Key Type Required Values / format Description
items[].decisionId string Yes Decision UUID Target decision.
items[].event object Yes Outcome payload Outcome fields.

Returns. Batch result with per-record status.

Log outcome batch.jssdk
const batch = await apiClient.outcomes.logBatch([{ decisionId, event: outcomePayload }]);

Workspace

SDKuserClient.workspace.labelSuggestions(filters)

Returns label suggestions for workspace configuration and decision metadata.

Auth. Bearer.

Key Type Required Values / format Description
q string No Search text Search query.

Returns. Suggested labels.

Label suggestions.jssdk
const labels = await userClient.workspace.labelSuggestions({ q: "review" });
SDKuserClient.workspace.getSettings()

Returns workspace settings.

Auth. Bearer.

Returns. Workspace settings.

Get settings.jssdk
const settings = await userClient.workspace.getSettings();
SDKuserClient.workspace.updateSettings(body)

Updates workspace settings.

Auth. Bearer.

Key Type Required Values / format Description
workspace_name string No 1-120 characters Human-readable workspace name.
default_timezone string No IANA timezone such as UTC, America/New_York, Asia/Kathmandu Default timezone used for reporting windows.
data_retention_days number No Plan-dependent positive integer Retention period for workspace records.

Returns. Updated settings.

Update settings.jssdk
const settings = await userClient.workspace.updateSettings({ default_timezone: "UTC" });
SDKuserClient.workspace.listMembers()

Lists workspace users.

Auth. Bearer.

Returns. Member list.

List members.jssdk
const members = await userClient.workspace.listMembers();
SDKuserClient.workspace.updateMemberRole(userId, body)

Changes a member role.

Auth. Bearer.

Key Type Required Values / format Description
userId string Yes User UUID Member ID.
role_id string Yes Role UUID New role.

Returns. Updated membership.

Update member role.jssdk
await userClient.workspace.updateMemberRole(userId, { role_id });
SDKuserClient.workspace.deactivateMember(userId)

Deactivates a workspace member.

Auth. Bearer.

Key Type Required Values / format Description
userId string Yes User UUID Member ID.

Returns. Deactivation confirmation.

Deactivate member.jssdk
await userClient.workspace.deactivateMember(userId);
SDKuserClient.workspace.listInvitations()

Lists workspace invitations.

Auth. Bearer.

Returns. Invitation list.

List invitations.jssdk
const invitations = await userClient.workspace.listInvitations();
SDKuserClient.workspace.createInvitation(body)

Invites a user to the workspace.

Auth. Bearer.

Key Type Required Values / format Description
email string Yes Valid email Invitee email.
role_id string Yes Role UUID Assigned role.

Returns. Invitation record.

Create invitation.jssdk
const invite = await userClient.workspace.createInvitation({ email, role_id });
SDKuserClient.workspace.resendInvitation(invitationId)

Resends an invitation email.

Auth. Bearer.

Key Type Required Values / format Description
invitationId string Yes Invitation UUID Invitation ID.

Returns. Invitation record.

Resend invitation.jssdk
await userClient.workspace.resendInvitation(invitationId);
SDKuserClient.workspace.revokeInvitation(invitationId)

Revokes an invitation.

Auth. Bearer.

Key Type Required Values / format Description
invitationId string Yes Invitation UUID Invitation ID.

Returns. Revocation confirmation.

Revoke invitation.jssdk
await userClient.workspace.revokeInvitation(invitationId);
SDKuserClient.workspace.listRoles()

Lists workspace roles.

Auth. Bearer.

Returns. Role list.

List roles.jssdk
const roles = await userClient.workspace.listRoles();
SDKuserClient.workspace.createRole(body)

Creates a workspace role.

Auth. Bearer.

Key Type Required Values / format Description
name string Yes 1-120 chars Role name.
permissions array<string> Yes decisions:read, decisions:write, analytics:read, alerts:write, workspace:admin, optimization:read, optimization:write Granted permissions.

Returns. Role record.

Create role.jssdk
const role = await userClient.workspace.createRole({ name, permissions });
SDKuserClient.workspace.updateRole(roleId, body)

Updates a role.

Auth. Bearer.

Key Type Required Values / format Description
roleId string Yes Role UUID Role ID.
name string No 1-120 chars Role name.
permissions array<string> No Permission strings Granted permissions.

Returns. Updated role.

Update role.jssdk
const role = await userClient.workspace.updateRole(roleId, { permissions });
SDKuserClient.workspace.deleteRole(roleId)

Deletes a role.

Auth. Bearer.

Key Type Required Values / format Description
roleId string Yes Role UUID Role ID.

Returns. Deletion confirmation.

Delete role.jssdk
await userClient.workspace.deleteRole(roleId);
SDKuserClient.workspace.listApiKeys()

Lists workspace API keys without secret values.

Auth. Bearer.

Returns. API key metadata list.

List API keys.jssdk
const keys = await userClient.workspace.listApiKeys();
SDKuserClient.workspace.createApiKey(body)

Creates an API key.

Auth. Bearer.

Key Type Required Values / format Description
name string Yes 1-120 chars Key label.
scopes array<string> Yes decisions:write, decisions:read, analytics:read, observability:read, intelligence:read Allowed scopes.

Returns. API key metadata and one-time secret.

Create API key.jssdk
const apiKey = await userClient.workspace.createApiKey({ name, scopes });
SDKuserClient.workspace.rotateApiKey(apiKeyId)

Rotates an API key secret.

Auth. Bearer.

Key Type Required Values / format Description
apiKeyId string Yes API key UUID Key ID.

Returns. New one-time secret.

Rotate API key.jssdk
const rotated = await userClient.workspace.rotateApiKey(apiKeyId);
SDKuserClient.workspace.revokeApiKey(apiKeyId)

Revokes an API key.

Auth. Bearer.

Key Type Required Values / format Description
apiKeyId string Yes API key UUID Key ID.

Returns. Revocation confirmation.

Revoke API key.jssdk
await userClient.workspace.revokeApiKey(apiKeyId);
SDKuserClient.workspace.listAudit(filters)

Lists workspace audit events.

Auth. Bearer.

Key Type Required Values / format Description
actor_id string No User or API key ID Filter by actor.
event_type string No Audit event type Filter by event.
from/to string No ISO 8601 Time range.

Returns. Audit event list.

Workspace audit.jssdk
const audit = await userClient.workspace.listAudit();

Decision config

SDKuserClient.workspace.getDecisionConfig()

Returns active workspace decision configuration.

Auth. Bearer.

Returns. Configuration record and version.

Get config.jssdk
const record = await userClient.workspace.getDecisionConfig();
SDKuserClient.workspace.saveDecisionConfig(body)

Creates a new version of workspace decision configuration.

Auth. Bearer.

Key Type Required Values / format Description
config.actions.permissive array<string> No Workspace actions such as allow, approve Actions interpreted as permissive.
config.actions.restrictive array<string> No Workspace actions such as deny, reject, block Actions interpreted as restrictive.
config.actions.review array<string> No Workspace actions such as review, escalate Actions interpreted as manual or deferred review.
config.outcome_mappings object No positive, neutral, negative buckets Maps downstream outcome values into quality semantics.
config.quality_policy object No score weights and windows Controls quality score calculations.
config.observability_thresholds object No metric thresholds Controls dashboard and alert thresholds.
config.optimization_guardrails object No limits and safety constraints Controls recommendation and experiment safety bounds.
completed boolean No true, false Marks configuration onboarding as complete.
change_summary string No Free text Audit summary for the configuration change.

Returns. Saved config record.

Save config.jssdk
const saved = await userClient.workspace.saveDecisionConfig(configPayload);
SDKuserClient.workspace.getDecisionConfigDefaults()

Returns default configuration values.

Auth. Bearer.

Returns. Default config object.

Defaults.jssdk
const defaults = await userClient.workspace.getDecisionConfigDefaults();
SDKuserClient.workspace.validateDecisionConfig(body)

Validates a proposed configuration without saving it.

Auth. Bearer.

Key Type Required Values / format Description
config object Yes Decision config object Candidate config.

Returns. Validation result with errors and warnings.

Validate config.jssdk
const validation = await userClient.workspace.validateDecisionConfig({ config });
SDKuserClient.workspace.previewDecisionQuality(body)

Previews quality calculations under a proposed config.

Auth. Bearer.

Key Type Required Values / format Description
action string Yes Workspace action Action to score.
outcome_type string Yes Outcome type Outcome taxonomy.
outcome_value string Yes Outcome value Observed result.
age_hours number No Positive number Outcome age.

Returns. Quality preview.

Preview quality.jssdk
const preview = await userClient.workspace.previewDecisionQuality(body);
SDKuserClient.workspace.previewDecisionSimulation(body)

Previews optimization simulation behavior under a proposed config.

Auth. Bearer.

Key Type Required Values / format Description
recommendation_id string No Recommendation ID Recommendation being simulated.
simulation_type string Yes threshold_shift, routing_change, policy_change, holdout_replay Simulation strategy.
candidate_definition object Yes JSON object Candidate settings to evaluate.
sample_decision_ids array<string> No Decision IDs Optional explicit replay sample.

Returns. Simulation preview.

Preview simulation.jssdk
const preview = await userClient.workspace.previewDecisionSimulation(body);
SDKuserClient.workspace.getDecisionConfigCoverage()

Returns configuration coverage across observed decisions, actions, outcomes, actors, and evidence labels.

Auth. Bearer.

Returns. Coverage report.

Coverage.jssdk
const coverage = await userClient.workspace.getDecisionConfigCoverage();

Analytics

SDKapiClient.analytics.dashboard(filters)

Returns high-level decision, outcome, quality, and volume metrics.

Auth. API key.

Key Type Required Values / format Description
decision_type string No Decision type Filter by decision type.
from/to string No ISO 8601 Time range.

Returns. Dashboard metrics.

Dashboard.jssdk
const dashboard = await apiClient.analytics.dashboard();
SDKapiClient.analytics.effectiveness(filters)

Returns effectiveness metrics by decision type and outcome.

Auth. API key.

Key Type Required Values / format Description
decision_type string No Decision type Filter by decision type.

Returns. Effectiveness metrics.

Effectiveness.jssdk
const effectiveness = await apiClient.analytics.effectiveness({ decision_type });
SDKapiClient.observability.summary(filters)

Returns current observability summary metrics.

Auth. API key.

Returns. Summary metrics.

Observability summary.jssdk
const summary = await apiClient.observability.summary();
SDKapiClient.observability.evidence(filters)

Returns evidence usage and quality information.

Auth. API key.

Returns. Evidence metrics.

Evidence.jssdk
const evidence = await apiClient.observability.evidence();
SDKapiClient.observability.actors(filters)

Returns actor-level observability metrics.

Auth. API key.

Returns. Actor metrics.

Actors.jssdk
const actors = await apiClient.observability.actors();
SDKapiClient.observability.latency(filters)

Returns latency metrics for decision ingestion and processing.

Auth. API key.

Returns. Latency percentiles.

Latency.jssdk
const latency = await apiClient.observability.latency();

Alerts

SDKuserClient.anomalies.list(filters)

Lists detected anomalies.

Auth. API key or bearer depending on workspace policy.

Key Type Required Values / format Description
status string No open, acknowledged, resolved Anomaly status.

Returns. Anomaly list.

List anomalies.jssdk
const anomalies = await userClient.anomalies.list({ status: "open" });
SDKuserClient.anomalies.get(anomalyId)

Gets one anomaly.

Auth. API key or bearer.

Key Type Required Values / format Description
anomalyId string Yes Anomaly UUID Anomaly ID.

Returns. Anomaly detail.

Get anomaly.jssdk
const anomaly = await userClient.anomalies.get(anomalyId);
SDKuserClient.anomalies.acknowledge(anomalyId)

Acknowledges an anomaly.

Auth. Bearer.

Key Type Required Values / format Description
anomalyId string Yes Anomaly UUID Anomaly ID.

Returns. Updated anomaly.

Acknowledge anomaly.jssdk
await userClient.anomalies.acknowledge(anomalyId);
SDKuserClient.anomalies.resolve(anomalyId)

Resolves an anomaly.

Auth. Bearer.

Key Type Required Values / format Description
anomalyId string Yes Anomaly UUID Anomaly ID.

Returns. Updated anomaly.

Resolve anomaly.jssdk
await userClient.anomalies.resolve(anomalyId);
SDKuserClient.alerts.listRules()

Lists alert rules.

Auth. Bearer.

Returns. Alert rule list.

List alert rules.jssdk
const rules = await userClient.alerts.listRules();
SDKuserClient.alerts.createRule(body)

Creates an alert rule.

Auth. Bearer.

Key Type Required Values / format Description
name string Yes 1-120 characters Alert rule display name.
metric_name string Yes restrictive_action_rate, review_rate, anomaly_count, latency_p95, quality_score Metric evaluated by the rule.
threshold number Yes Numeric threshold Value compared against the metric.
comparison string Yes gt, gte, lt, lte, eq Comparison operator.
window string Yes 5m, 15m, 1h, 6h, 24h, 7d Rolling evaluation window.
enabled boolean No true, false Whether the rule should evaluate immediately.

Returns. Alert rule.

Create alert rule.jssdk
const rule = await userClient.alerts.createRule(alertRulePayload);
SDKuserClient.alerts.updateRule(ruleId, body)

Updates an alert rule.

Auth. Bearer.

Key Type Required Values / format Description
ruleId string Yes Alert rule UUID Rule ID.
name string No 1-120 characters Alert rule display name.
metric_name string No restrictive_action_rate, review_rate, anomaly_count, latency_p95, quality_score Metric evaluated by the rule.
threshold number No Numeric threshold Value compared against the metric.
comparison string No gt, gte, lt, lte, eq Comparison operator.
window string No 5m, 15m, 1h, 6h, 24h, 7d Rolling evaluation window.
enabled boolean No true, false Whether the rule should evaluate immediately.

Returns. Updated alert rule.

Update alert rule.jssdk
const rule = await userClient.alerts.updateRule(ruleId, { threshold: 30 });
SDKuserClient.alerts.disableRule(ruleId)

Disables an alert rule.

Auth. Bearer.

Key Type Required Values / format Description
ruleId string Yes Alert rule UUID Rule ID.

Returns. Updated alert rule.

Disable alert rule.jssdk
await userClient.alerts.disableRule(ruleId);
SDKuserClient.alerts.enableRule(ruleId)

Enables an alert rule.

Auth. Bearer.

Key Type Required Values / format Description
ruleId string Yes Alert rule UUID Rule ID.

Returns. Updated alert rule.

Enable alert rule.jssdk
await userClient.alerts.enableRule(ruleId);
SDKuserClient.alerts.listEvents(filters)

Lists alert events.

Auth. Bearer.

Key Type Required Values / format Description
status string No open, acknowledged, resolved Event status.

Returns. Alert event list.

List alert events.jssdk
const events = await userClient.alerts.listEvents({ status: "open" });
SDKuserClient.alerts.getEvent(eventId)

Gets one alert event.

Auth. Bearer.

Key Type Required Values / format Description
eventId string Yes Alert event UUID Event ID.

Returns. Alert event detail.

Get alert event.jssdk
const event = await userClient.alerts.getEvent(eventId);
SDKuserClient.alerts.acknowledgeEvent(eventId)

Acknowledges an alert event.

Auth. Bearer.

Key Type Required Values / format Description
eventId string Yes Alert event UUID Event ID.

Returns. Updated alert event.

Acknowledge alert event.jssdk
await userClient.alerts.acknowledgeEvent(eventId);
SDKuserClient.alerts.resolveEvent(eventId)

Resolves an alert event.

Auth. Bearer.

Key Type Required Values / format Description
eventId string Yes Alert event UUID Event ID.

Returns. Updated alert event.

Resolve alert event.jssdk
await userClient.alerts.resolveEvent(eventId);

Intelligence

SDKapiClient.intelligence.decisionQuality(decisionId)

Returns quality details for one decision.

Auth. API key.

Key Type Required Values / format Description
decisionId string Yes Decision UUID Decision ID.

Returns. Decision quality details.

Decision quality.jssdk
const quality = await apiClient.intelligence.decisionQuality(decisionId);
SDKapiClient.intelligence.qualitySummary(filters)

Returns quality summary metrics.

Auth. API key.

Returns. Quality summary.

Quality summary.jssdk
const summary = await apiClient.intelligence.qualitySummary();
SDKapiClient.intelligence.qualityTrends(filters)

Returns quality trend series.

Auth. API key.

Returns. Quality trend series.

Quality trends.jssdk
const trends = await apiClient.intelligence.qualityTrends();
SDKapiClient.intelligence.evidenceCorrelation(filters)

Returns correlations between evidence and outcomes.

Auth. API key.

Returns. Correlation metrics.

Evidence correlation.jssdk
const correlation = await apiClient.intelligence.evidenceCorrelation();
SDKapiClient.intelligence.compareActors(filters)

Compares decision actors.

Auth. API key.

Returns. Actor comparison.

Compare actors.jssdk
const comparison = await apiClient.intelligence.compareActors();
SDKapiClient.intelligence.patterns(filters)

Returns repeated decision patterns.

Auth. API key.

Returns. Pattern list.

Patterns.jssdk
const patterns = await apiClient.intelligence.patterns();
SDKuserClient.intelligence.segments()

Lists intelligence segments.

Auth. Bearer.

Returns. Segment list.

Segments.jssdk
const segments = await userClient.intelligence.segments();
SDKuserClient.intelligence.createSegment(body)

Creates a segment.

Auth. Bearer.

Key Type Required Values / format Description
name string Yes 1-120 characters Segment display name.
filter object Yes JSON filter over decision, subject, actor, context, evidence, outcome fields Criteria that define the segment.

Returns. Segment record.

Create segment.jssdk
const segment = await userClient.intelligence.createSegment(segmentPayload);
SDKuserClient.intelligence.updateSegment(segmentId, body)

Updates a segment.

Auth. Bearer.

Key Type Required Values / format Description
segmentId string Yes Segment UUID Segment ID.
name string No 1-120 characters Segment display name.
filter object No JSON filter over decision, subject, actor, context, evidence, outcome fields Criteria that define the segment.

Returns. Updated segment.

Update segment.jssdk
const segment = await userClient.intelligence.updateSegment(segmentId, { name });
SDKuserClient.intelligence.segmentDetail(segmentId)

Returns segment detail.

Auth. Bearer.

Key Type Required Values / format Description
segmentId string Yes Segment UUID Segment ID.

Returns. Segment detail.

Segment detail.jssdk
const segment = await userClient.intelligence.segmentDetail(segmentId);
SDKuserClient.intelligence.qualityDrift(filters)

Lists quality drift items.

Auth. Bearer.

Key Type Required Values / format Description
status string No open, acknowledged, resolved Drift status.

Returns. Drift list.

Quality drift.jssdk
const drift = await userClient.intelligence.qualityDrift({ status: "open" });
SDKuserClient.intelligence.qualityDriftById(driftId)

Gets one quality drift item.

Auth. Bearer.

Key Type Required Values / format Description
driftId string Yes Drift UUID Drift ID.

Returns. Drift detail.

Quality drift detail.jssdk
const drift = await userClient.intelligence.qualityDriftById(driftId);
SDKuserClient.intelligence.acknowledgeQualityDrift(driftId)

Acknowledges a quality drift item.

Auth. Bearer.

Key Type Required Values / format Description
driftId string Yes Drift UUID Drift ID.

Returns. Updated drift item.

Acknowledge drift.jssdk
await userClient.intelligence.acknowledgeQualityDrift(driftId);
SDKuserClient.intelligence.resolveQualityDrift(driftId)

Resolves a quality drift item.

Auth. Bearer.

Key Type Required Values / format Description
driftId string Yes Drift UUID Drift ID.

Returns. Updated drift item.

Resolve drift.jssdk
await userClient.intelligence.resolveQualityDrift(driftId);
SDKuserClient.intelligence.outcomeInterpretationRules()

Lists outcome interpretation rules.

Auth. Bearer.

Returns. Outcome rule list.

Outcome rules.jssdk
const rules = await userClient.intelligence.outcomeInterpretationRules();
SDKuserClient.intelligence.createOutcomeInterpretationRule(body)

Creates an outcome interpretation rule.

Auth. Bearer.

Key Type Required Values / format Description
outcome_type string Yes Outcome type Outcome taxonomy.
outcome_value string Yes Outcome value Outcome value.
interpretation_bucket string Yes positive_resolution, negative_resolution, neutral, unresolved Semantic bucket.
quality_impact string Yes strongly_positive, positive, neutral, negative, strongly_negative Quality score effect.

Returns. Outcome rule.

Create outcome rule.jssdk
const rule = await userClient.intelligence.createOutcomeInterpretationRule(rulePayload);
SDKuserClient.intelligence.updateOutcomeInterpretationRule(ruleId, body)

Updates an outcome interpretation rule.

Auth. Bearer.

Returns. Updated outcome rule.

Update outcome rule.jssdk
const rule = await userClient.intelligence.updateOutcomeInterpretationRule(ruleId, { quality_impact: "positive" });
SDKuserClient.intelligence.disableOutcomeInterpretationRule(ruleId)

Disables an outcome interpretation rule.

Auth. Bearer.

Returns. Updated outcome rule.

Disable outcome rule.jssdk
await userClient.intelligence.disableOutcomeInterpretationRule(ruleId);
SDKuserClient.intelligence.enableOutcomeInterpretationRule(ruleId)

Enables an outcome interpretation rule.

Auth. Bearer.

Returns. Updated outcome rule.

Enable outcome rule.jssdk
await userClient.intelligence.enableOutcomeInterpretationRule(ruleId);

Optimization

SDKuserClient.optimization.opportunities(filters)

Lists optimization opportunities.

Auth. Bearer.

Returns. Opportunity list.

Opportunities.jssdk
const opportunities = await userClient.optimization.opportunities();
SDKuserClient.optimization.opportunity(opportunityId)

Gets one optimization opportunity.

Auth. Bearer.

Key Type Required Values / format Description
opportunityId string Yes Opportunity UUID Opportunity ID.

Returns. Opportunity detail.

Opportunity detail.jssdk
const opportunity = await userClient.optimization.opportunity(opportunityId);
SDKuserClient.optimization.recommendations(filters)

Lists recommendations.

Auth. Bearer.

Returns. Recommendation list.

Recommendations.jssdk
const recommendations = await userClient.optimization.recommendations();
SDKuserClient.optimization.createRecommendation(body)

Creates a recommendation.

Auth. Bearer.

Key Type Required Values / format Description
opportunity_id string No Optimization opportunity ID Opportunity this recommendation responds to.
recommendation_type string Yes threshold_increase, threshold_decrease, routing_change, evidence_addition, policy_change, experiment The optimization action being proposed.
target_scope object Yes { type, key } Decision type, segment, actor, or policy area affected.
proposed_change object Yes JSON object Candidate change to test or roll out.
status string No draft, reviewing, approved, rejected, archived Review lifecycle status.

Returns. Recommendation record.

Create recommendation.jssdk
const recommendation = await userClient.optimization.createRecommendation(recommendationPayload);
SDKuserClient.optimization.recommendation(recommendationId)

Gets one recommendation.

Auth. Bearer.

Returns. Recommendation detail.

Recommendation detail.jssdk
const detail = await userClient.optimization.recommendation(recommendationId);
SDKuserClient.optimization.updateRecommendation(recommendationId, body)

Updates a recommendation.

Auth. Bearer.

Key Type Required Values / format Description
opportunity_id string No Optimization opportunity ID Opportunity this recommendation responds to.
recommendation_type string No threshold_increase, threshold_decrease, routing_change, evidence_addition, policy_change, experiment The optimization action being proposed.
target_scope object No { type, key } Decision type, segment, actor, or policy area affected.
proposed_change object No JSON object Candidate change to test or roll out.
status string No draft, reviewing, approved, rejected, archived Review lifecycle status.

Returns. Updated recommendation.

Update recommendation.jssdk
const recommendation = await userClient.optimization.updateRecommendation(id, { status: "reviewing" });
SDKuserClient.optimization.reviewRecommendation(recommendationId, body)

Adds a review note and moves a recommendation into review.

Auth. Bearer.

Key Type Required Values / format Description
review_note string No Free text Review note.

Returns. Updated recommendation.

Review recommendation.jssdk
await userClient.optimization.reviewRecommendation(id, { review_note });
SDKuserClient.optimization.approveRecommendation(recommendationId)

Approves a recommendation.

Auth. Bearer.

Returns. Updated recommendation.

Approve recommendation.jssdk
await userClient.optimization.approveRecommendation(id);
SDKuserClient.optimization.rejectRecommendation(recommendationId, body)

Rejects a recommendation.

Auth. Bearer.

Key Type Required Values / format Description
reason string No Free text Rejection reason.

Returns. Updated recommendation.

Reject recommendation.jssdk
await userClient.optimization.rejectRecommendation(id, { reason });
SDKuserClient.optimization.archiveRecommendation(recommendationId)

Archives a recommendation.

Auth. Bearer.

Returns. Updated recommendation.

Archive recommendation.jssdk
await userClient.optimization.archiveRecommendation(id);
SDKuserClient.optimization.simulations(filters)

Lists simulations.

Auth. Bearer.

Returns. Simulation list.

Simulations.jssdk
const simulations = await userClient.optimization.simulations();
SDKuserClient.optimization.createSimulation(body)

Creates a simulation.

Auth. Bearer.

Key Type Required Values / format Description
recommendation_id string No Recommendation ID Recommendation being simulated.
simulation_type string Yes threshold_shift, routing_change, policy_change, holdout_replay Simulation strategy.
candidate_definition object Yes JSON object Candidate settings to evaluate.
sample_decision_ids array<string> No Decision IDs Optional explicit replay sample.

Returns. Simulation record.

Create simulation.jssdk
const simulation = await userClient.optimization.createSimulation(simulationPayload);
SDKuserClient.optimization.simulation(simulationId)

Gets one simulation.

Auth. Bearer.

Returns. Simulation detail.

Simulation detail.jssdk
const simulation = await userClient.optimization.simulation(simulationId);
SDKuserClient.optimization.experiments(filters)

Lists experiments.

Auth. Bearer.

Returns. Experiment list.

Experiments.jssdk
const experiments = await userClient.optimization.experiments();
SDKuserClient.optimization.createExperiment(body)

Creates an experiment.

Auth. Bearer.

Key Type Required Values / format Description
recommendation_id string No Recommendation ID Recommendation being tested.
simulation_id string No Simulation ID Simulation supporting the experiment.
name string Yes 1-120 characters Experiment name.
traffic_percentage number No 0-100 Traffic allocated to candidate behavior.
guardrails object No JSON object Quality, latency, and business constraints.

Returns. Experiment record.

Create experiment.jssdk
const experiment = await userClient.optimization.createExperiment(experimentPayload);
SDKuserClient.optimization.experiment(experimentId)

Gets one experiment.

Auth. Bearer.

Returns. Experiment detail.

Experiment detail.jssdk
const experiment = await userClient.optimization.experiment(experimentId);
SDKuserClient.optimization.updateExperiment(experimentId, body)

Updates an experiment.

Auth. Bearer.

Key Type Required Values / format Description
recommendation_id string No Recommendation ID Recommendation being tested.
simulation_id string No Simulation ID Simulation supporting the experiment.
name string No 1-120 characters Experiment name.
traffic_percentage number No 0-100 Traffic allocated to candidate behavior.
guardrails object No JSON object Quality, latency, and business constraints.

Returns. Updated experiment.

Update experiment.jssdk
const experiment = await userClient.optimization.updateExperiment(id, { name });
SDKuserClient.optimization.approveExperiment(experimentId)

Approves an experiment.

Auth. Bearer.

Returns. Updated experiment.

Approve experiment.jssdk
await userClient.optimization.approveExperiment(id);
SDKuserClient.optimization.startExperiment(experimentId)

Starts an experiment.

Auth. Bearer.

Returns. Updated experiment.

Start experiment.jssdk
await userClient.optimization.startExperiment(id);
SDKuserClient.optimization.pauseExperiment(experimentId)

Pauses an experiment.

Auth. Bearer.

Returns. Updated experiment.

Pause experiment.jssdk
await userClient.optimization.pauseExperiment(id);
SDKuserClient.optimization.stopExperiment(experimentId)

Stops an experiment.

Auth. Bearer.

Returns. Updated experiment.

Stop experiment.jssdk
await userClient.optimization.stopExperiment(id);
SDKuserClient.optimization.completeExperiment(experimentId, body)

Completes an experiment.

Auth. Bearer.

Key Type Required Values / format Description
summary string No Free text Completion summary.

Returns. Updated experiment.

Complete experiment.jssdk
await userClient.optimization.completeExperiment(id, { summary });
SDKuserClient.optimization.experimentSnapshots(experimentId)

Lists experiment snapshots.

Auth. Bearer.

Returns. Snapshot list.

Experiment snapshots.jssdk
const snapshots = await userClient.optimization.experimentSnapshots(id);
SDKuserClient.optimization.rolloutDecisions(filters)

Lists rollout decisions.

Auth. Bearer.

Returns. Rollout decision list.

Rollout decisions.jssdk
const rollouts = await userClient.optimization.rolloutDecisions();
SDKuserClient.optimization.createRolloutDecision(body)

Creates a rollout decision.

Auth. Bearer.

Key Type Required Values / format Description
experiment_id string No Experiment ID Experiment informing the rollout decision.
decision string Yes rollout, hold, rollback, continue_experiment Rollout action.
reason string No Free text Reviewer rationale.

Returns. Rollout decision record.

Create rollout decision.jssdk
const rollout = await userClient.optimization.createRolloutDecision(rolloutPayload);
SDKuserClient.optimization.rolloutDecision(rolloutDecisionId)

Gets one rollout decision.

Auth. Bearer.

Returns. Rollout decision detail.

Rollout decision detail.jssdk
const rollout = await userClient.optimization.rolloutDecision(id);
SDKuserClient.optimization.impact(filters)

Returns impact summaries.

Auth. Bearer.

Returns. Impact summary.

Impact.jssdk
const impact = await userClient.optimization.impact();
SDKuserClient.optimization.impactByEntity(entityType, entityId)

Returns impact for a recommendation, simulation, experiment, or rollout decision.

Auth. Bearer.

Key Type Required Values / format Description
entityType string Yes recommendation, simulation, experiment, rollout_decision Entity type.
entityId string Yes Entity UUID Entity ID.

Returns. Entity impact.

Entity impact.jssdk
const impact = await userClient.optimization.impactByEntity("recommendation", id);
SDKuserClient.optimization.audit(filters)

Returns optimization audit events.

Auth. Bearer.

Returns. Audit event list.

Optimization audit.jssdk
const audit = await userClient.optimization.audit();

Errors and retries

Key Type Required Values / format Description
ValidationError Error No Client-side validation Payload is missing required data or has an invalid known field.
ApiError Error No HTTP 4xx/5xx response Includes status, code, details, request ID, and correlation ID.
TransportError Error No Network failure Network or connection failure after retries.
RetryExhaustedError Error No Retry budget consumed Retries exhausted for retryable failures.

Retry behavior: 5xx and connection errors retry with jittered exponential backoff capped at 30 seconds. 4xx validation and authorization responses fail immediately.