---
title: "Process a single decision"
method: POST
path: "/zephr/decision-engine"
tags: ["SDK Feature Decision Engine"]
---

# Process a single decision

`POST /zephr/decision-engine`

Processes a single SDK feature decision. An SDK feature rule can be configured in the console, and allows a custom decision to be made using a range of inputs to drive the behaviour of a website or app. SDK features can output any one of several data types as configured in the console.
  - String: The output can be any string.
  - Number: The output can be any numerical value
  - Enum: The output can be one of a list of strings as configured in the developer panel for the rule. This is used for short output strings.
  - Component: The output can be one of a list of strings as configured in the developer panel for the rule. This is used for long output strings, such as HTML or JSON.
  - JSON: The output can be any JSON object. JSON schema validation can optionally be enforced when creating JSON outputs in the console.
  - Transformation: The output will be a JSON array of transformations to be applied to content on a webpage or in an app. This allows the configuration of the same types of outcomes that can be built with an HTML feature rule, such as hiding content and displaying a payment form.


SDK features permit business decisions to drive access or behaviour to be made in an app that is not using HTML content. SDK decisions are relevant for both anonymous and authenticated sessions. If no session is provided via the request then an anonymous session will not be created.

Invoking an SDK decision may cause side effects as configured in the rule, such as invoking webhooks or recording trial usages. When `dryRunMode` is enabled in the request, trial usages will not be recorded.

## Query parameters

- `raw` boolean, required

## Request body

- object
  - `sdkFeatureSlug` string, required — Feature SDK slug as configured in the console.
  - `session` string — Zephr Session ID, required for trials and for user-based decisions.
  - `foreign_keys` object — A map where the key is a foreign system and the value is an ID used to identify the user in that system.
  - `ip` string — Client IP address, defaults to request IP.
  - `userAgent` string — Client user agent.
  - `path` string — Request path representing the content being consumed for trials.
  - `contentId` string — Content ID, used to perform requests to a 3rd party API for additional content information used in making a decision. The endpoint and path format for content ID requests can be configured in the console.
  - `jwt` string — A Json Web Token, may include identity or product holding claims.
  - `giftToken` string — Enables a decision to be made in the rule based on whether access should be granted as the user has gift access.
  - `dryRunMode` boolean — If the decision should be run without recording trial usage.

## Response `200`

OK. The output of the SDK feature rule, which may be wrapped with metadata according to the `raw` query parameter value.

- FeatureDecisionResponse
  - `sdkFeatureSlug` string, required — The slug of the SDK feature which has been evaluated.
  - `outputType` 'ENUM' | 'STRING' | 'NUMBER' | 'JSON' | 'TRANSFORMATION' | 'COMPONENT' — Feature output type. Present if there were no errors.
  - `outputValue` string — Feature output value. Present if there were no errors. - For the 'JSON_COMPONENT' output type, the response will be stringified JSON. - For the 'TRANSFORMATION' output type, the response will contain a stringified JSON array of transformations to be applied, including ENABLE_CONTENT, CUSTOM_COMPONENT, TEMPLATE_COMPONENT and FORM.
  - `error` string — The error message explaining why this decision failed to resolve. Present only if there was an error.

---

[API](https://skmtc.net/zuora/apis/public-api-reference.md) · [All operations](https://skmtc.net/zuora/apis/public-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zuora/public-api-reference/revisions/0400dd83950b/schema)
