API Functions - Cognigy Documentation
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
CognigyScript
Use these functions to parse and evaluate CognigyScript expressions in text or conditions at run-time.
api.parseCognigyScript
Parses CognigyScript text or conditions.
Parameters
| Parameter | Type | Description |
|---|---|---|
| text | string | The text containing CognigyScript expressions. |
| condition | boolean | The CognigyScript condition to evaluate. |
Returns Promise<any>
Example
// Parse CognigyScript as text
const parsedText = api.parseCognigyScript(
"Hello {{cc.text}}, welcome!",
false
);
api.say(parsedText);
// Parse CognigyScript as a condition
const parsedCondition = api.parseCognigyScript(
"{{input.currentTime.year > 2024}}",
true
);
if (parsedCondition === "true") {
api.say("Condition is true");
} else {
api.say("Condition is false");
}
api.parseCognigyScriptCondition
Evaluates a CognigyScript expression and returns a true or false value.
CognigyScript allows you to embed expressions like {{context.value > 5}} within strings. This function extracts and evaluates such an expression, used in logic checks for Flows, conditions, or custom functions.
This function is useful for dynamically checking conditions at run-time based on session data and information from the Input, Context, or Profile objects.
Parameters
| Parameter | Type | Description |
|---|---|---|
| condition | string | The CognigyScript condition to evaluate. |
Returns Promise<string>
Example
const parseCognigyScriptCondition = api.parseCognigyScriptCondition(
"{{input.currentTime.year > 2024}}"
);
api.say(`${parseCognigyScriptCondition}`);
api.parseCognigyScriptText
Parses and renders a text string containing CognigyScript expressions. Each CognigyScript expression, for example, {{cc.userName}}, is evaluated using the current execution context.
Parameters
| Parameter | Type | Description |
|---|---|---|
| text | string | The text containing CognigyScript expressions. |
Returns Promise<string>
Example
const output = api.parseCognigyScriptText("Hello {{cc.text}}, welcome to {{cc.city}}!");
api.say(`The current state is: ${output}`);
Contact Profiles
Use these functions to activate, deactivate, delete, merge, and update Contact Profiles during a conversation.
api.activateProfile
Activates the Contact Profile.
Call this function to reactivate read and write operations on a previously deactivated Contact Profile.
Parameters None
Returns Promise<any>
Example
// Reactivate a previously deactivated Profile
api.activateProfile();
api.addContactMemory
Adds an entry to the memories array of the Profile object.
Parameters
| Parameter | Type | Description |
|---|---|---|
| memory | string | The text to add as a new entry in the memories array of the Profile object. |
Returns void
Example
api.addContactMemory("ppl");
api.deactivateProfile
Deactivates the Contact Profile. While the Contact Profile is deactivated, no data can be read from or written to the Contact Profile.
Parameters None
Returns Promise<any>
Example
// Deactivate a Contact Profile
api.deactivateProfile();
api.deleteProfile
Permanently deletes the Contact Profile from the system.
Parameters None
Returns Promise<any>
Example
// Delete the Contact Profile
api.deleteProfile();
api.mergeProfile
Merges the current Contact Profile with another one.
This function is useful for combining duplicate Contact Profiles or moving data between users.
Parameters
| Parameter | Type | Description |
|---|---|---|
| contactId | string | The ID of the Contact Profile to merge into. |
Returns Promise<any>
Example
api.mergeProfile("c-89374201a7bd5a9e4");
api.updateProfile
Updates a value in the current Contact Profile.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key of the Contact Profile field to update. |
| value | any | The value to set for the specified key. |
Returns Promise<any>
Example
// Update the 'email' field of the current Contact Profile
api.updateProfile("email", "user@example.com");
// Update a custom string field
api.updateProfile("subscriptionStatus", "active");
// Update a numeric field
api.updateProfile("loyaltyPoints", 120);
// Update a boolean field
api.updateProfile("marketingConsent", true);
Context Object
Use these functions to read, write, and reset the Context object so you can store and manipulate conversation-scoped data across Nodes.
api.addToContext
Adds a value to the Context object, either replacing an existing value or appending to it as an array.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key to add to the Context object. |
| value | any | The value to assign to the key. |
| mode | string | Determines how the value is added: - "simple" – replaces any existing value. - "array" – appends to the existing value as an array. |
Returns void
Example
// Simple mode: replaces existing value
api.addToContext("user.city", "Berlin", "simple");
// Context: { user: { city: "Berlin" } }
api.addToContext("user.city", "Munich", "simple");
// Context: { user: { city: "Munich" } }
// Array mode: appends to an array
api.addToContext("user.purchases", "book", "array");
// Context: { user: { purchases: ["book"] } }
api.addToContext("user.purchases", "laptop", "array");
api.addToContext("user.purchases", "coffee", "array");
// Context: { user: { purchases: ["book", "laptop", "coffee"] } }
api.deleteContext
Deletes the key and its value from the Context object.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key in the Context object to remove. |
Returns void
Example
api.deleteContext("user.city");
api.getContext
Retrieves data from the specified key in the Context object.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key to retrieve the data from the Context object. |
Returns any: The requested context data.
Example
api.getContext("user.profile.name");
api.getConversationTranscript
Retrieves the current conversation transcript, including the last 10 user inputs and the associated outputs from the AI Agent.
Parameters
| Parameter | Type | Description |
|---|---|---|
| mode | string | This parameter is optional. Specifies the format of the returned transcript: - "string" – returns a plain text version of the conversation. - "json" – returns a structured array of message objects. This format is used by default. |
| options | object | This parameter is optional. An object to configure the retrieved transcript data. |
| options.turnLimit | number | This parameter is optional. Limits the transcript to the most recent N conversational turns. If the parameter is omitted, the full transcript is returned. |
Returns Either the JSON array of conversation entries or the string representation. Example
// Get the transcript
const transcriptJson = api.getConversationTranscript({ turnLimit: 5 });
// Convert the JSON array to a string
const transcriptJsonPrint = JSON.stringify(transcriptJson, null, 2);
// Send it to the user
api.say(transcriptJsonPrint);
api.removeFromContext
Removes information from the Context object either by deleting a key entirely or by removing specific entries from an array stored at that key.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key in the Context object to remove information from. |
| value | any | The value to remove when using "array" mode. Ignored in "simple" mode. |
| mode | string | Determines how the removal is performed: - "simple" – removes the key entirely. - "array" – removes only matching values from an array. |
Returns void
Example
// Simple mode: remove the entire key
api.removeFromContext("user.city", null, "simple");
// Context: { user: { city: undefined } }
// Array mode: remove specific values from an array
api.addToContext("user.purchases", "book", "array");
api.addToContext("user.purchases", "laptop", "array");
api.addToContext("user.purchases", "coffee", "array");
// Remove "laptop" from the purchases array
api.removeFromContext("user.purchases", "laptop", "array");
// Context: { user: { purchases: ["book", "coffee"] } }
api.resetContext
Resets the Context object for the current conversation. All keys and values added during the conversation are removed.
Parameters None
Returns void
Example
// Remove all context data added during the conversation
api.resetContext();
api.setContext
Sets the value for a specific key in the Context object, replacing any existing value.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key in the Context object to set. |
| value | any | The value to set for the key. |
Returns void
Example
api.setContext("user.city", "Berlin");
Encoding and Decoding
Use these functions to handle string encoding and decoding, such as converting text to Base64 for safe transmission or decoding Base64 strings back to UTF-8.
api.base64Decode
Base64 decodes a given string.
Parameters
| Parameter | Type | Description |
|---|---|---|
| data | string | The string to be decoded. |
Returns string: The decoded string as UTF-8.
Example
const decoded = api.base64Decode("SGVsbG8sIFdvcmxkIQ==");
api.say(`Decoded string: ${decoded}`); // Output: "Hello, World!"
api.base64Encode
Base64 encodes a given string.
Parameters
| Parameter | Type | Description |
|---|---|---|
| data | string | The string to be encoded. |
Returns string: The base64 encoded string.
Example
const encoded = api.base64Encode("Hello, World!");
api.say(`Encoded string: ${encoded}`); // Output: "SGVsbG8sIFdvcmxkIQ=="
Execution Control
Use these functions to control Flow execution, including adding conditional Entrypoints, jumping to specific Nodes or Flows, resetting overrides, stopping execution, and simulating new inputs.
api.addConditionalEntrypoint
Adds a conditional Entrypoint for the current conversation.
If {condition} is met within the next {retentionTime} inputs, Flow execution starts at {entrypoint}.
Parameters
| Parameter | Type | Description |
|---|---|---|
| entrypoint | string | The ID of the Node to execute when the condition evaluates to true. |
| retentionTime | number | The number of times this conditional Entrypoint can trigger before it is automatically removed. |
| condition | string | A string expression evaluated. For example, input.text.includes('@') checks if the user input contains @. |
Returns void
Example
api.addConditionalEntrypoint({
entrypoint: "c40c50f3-2f51-422c-8a3e-748e7cc92ed0",
retentionTime: 2,
condition: "input.text.includes('@')"
});
api.resetNextNodes
Clears any active overrides for the next Node in the Flow. This function is useful when you’ve changed the next Node using the api.setNextNode function, and you want to return to the default Flow behavior.
Parameters None
Returns void
Example
// Imagine you previously used api.setNextNode("fallback-node") to redirect the Flow.
// Now, you want to clear that override so the Flow continues as originally defined.
api.resetNextNodes();
api.setNextNode
Sets the Node with the given nodeId to be executed immediately after the current one.
This function is used by If and Lookup Nodes to select child Nodes based on their configuration.
Parameters
| Parameter | Type | Description |
|---|---|---|
| nodeId | string | The ID of the Node to execute next. |
| newFlowId | string | The ID of the Flow containing the target Node. This parameter is optional and is required if the target Node is in a different Flow. |
Returns void
Example
// The current Node is executing inside a Flow, and you want to control which Node should be executed next based on some logic.
// In this example, the execution will jump to a Node with the nodeId "c4c5c267-55d8-44ae-a123-f351d237f496" immediately after the current Node finishes.
api.setNextNode("c4c5c267-55d8-44ae-a123-f351d237f496");
// To continue the conversation in a different Flow after the current Node, specify both the target nodeId and the flowId.
// The Node with nodeId "c4c5c267-55d8-44ae-a123-f351d237f496" must be marked as an Entrypoint in the target Flow with flowId "67f511b11acdc139f91946b8".
// Execution will jump directly to that Node after the current one finishes.
api.setNextNode("c4c5c267-55d8-44ae-a123-f351d237f496", "67f511b11acdc139f91946b8");
api.stopExecution
Stops the execution of the Flow.
Parameters None
Returns void
Example
api.stopExecution();
api.thinkV2
Restarts Flow execution with a simulated input using the provided text and data.
Parameters
| Parameter | Type | Description |
|---|---|---|
| text | string | A simulated input text |
| data | object | A simulated input data object with optional fields and additional keys |
Returns void
Example
api.thinkV2(
"Hello, how's the weather?",
{ location: "Berlin", units: "Celsius" }
);
Input and Output
Use these functions to enrich the Input object and send text or data responses to the user from a Code or Extension Node.
api.addToInput
Adds a key-value pair to the Input object.
Parameters
| Parameter | Type | Description |
|---|---|---|
| key | string | The key to add to the Input object. |
| value | string | The value to assign to the key. |
Returns void
Example
api.addToInput("username", "John Doe");
api.output / api.say
Executes a basic output to the contact, similar to the Say Node.
Parameters
| Parameter | Type | Description |
|---|---|---|
| text | string | The output text that is sent to the user. |
| data | any | The output data that is sent to the user. |
_cognigy is an internal parameter and not part of the public API. This parameter is unsupported and may change without notice.
Returns void
Example
// Send text with additional data
api.say("Hello, this is a message from the Code Node!", { customData: 123 });
// `api.output` is an alias of `api.say`
api.output("Hello, this is a message from the Code Node!", { customData: 123 });
Logging and Monitoring
Use these functions to write Project logs, send debug messages, inspect LLM token usage, track analytics steps, and configure sensitive logging behavior.
api.completeGoal
Completes the task. The information that the task has been completed is recorded and is available in Cognigy Insights and the Cognigy.AI OData endpoint.
Parameters
| Parameter | Type | Description |
|---|---|---|
| name | string | The name of the task. |
Returns Promise<void>
Example
api.completeGoal("Order Pizza");
api.emitToOpsCenter
Forwards an error to the Ops Center Error page. Automatically sets the component to Flow and the subcomponent to FlowNodeExecution.
Parameters
| Parameter | Type | Description |
|---|---|---|
| title | string | The title of the error to log. |
| projectId | string | The ID of the Project where the error occurs. |
Returns void
Example
api.emitToOpsCenter({
projectId: "6874becb018c552bc267cc51",
title: "Something went wrong",
});
api.getLLMTokenUsageForSession
Retrieves the LLM token usage information for the current session.
Parameters None
Returns
{
"llmDisplayName": string,
"providerType": string,
"modelType": string,
"usage": {
"inputTokens": number,
"outputTokens": number
}
}
Example
api.getLLMTokenUsageForSession();
api.log
Writes a message to the Project logs.
Parameters
| Parameter | Type | Description |
|---|---|---|
| level | string | The log level. Cognigy.AI includes the following log levels: - info — general information about the normal operation of a Flow.- error — information about errors that occur during Flow execution.- debug — detailed information about Flow execution for debugging purposes. |
| text | string | The message to write to the logs. |
Returns void
Example
api.log("info", "This is an informational message.");
api.log("error", "An error occurred during Flow execution.");
api.log("debug", "Debugging details for Flow execution.");
api.logDebugMessage / api.logDebugError
Sends a debug message. The message is visible only in the Interaction Panel with activated debug mode.
Parameters
| Parameter | Type | Description |
|---|---|---|
| message | string / object | The debug message to log. When logging an object, use JSON.stringify to make it readable in the Interaction Panel. |
| header | string | An optional label or header for the log message, used to categorize it in the debug panel. |
Returns void
Example
// Log a simple string
api.logDebugMessage("Flow started successfully", "Flow Info");
// Log multiple variables together
const sessionInfo = { sessionId: "abc123", timestamp: new Date().toISOString() };
const userData = { name: "Alice", age: 25 };
// Combine objects into one for logging
api.logDebugMessage(JSON.stringify({ sessionInfo, userData }, null, 2), "Session & User Info");
api.setSensitiveLoggingSettings
Configures masking of sensitive data in logs, analytics, and conversation content for the session.
Parameters
| Parameter | Type | Description |
|---|---|---|
| maskLogging | boolean | Masks sensitive information in system logs on the Logs page. Replaces fields like userId, text, and data with asterisks to protect user privacy. |
| maskAnalytics | boolean | Masks sensitive information in Input, Insights, and Analytics (inputText, inputData, userLanguageText, and user IP). Disables the Intent Trainer because input text isn’t stored. Can selectively ignore analytics using a Code Node. |
| maskIPAddress | boolean | This parameter is optional. Masks the user’s IP address in the Input object, Insights, and Analytics. IP addresses are replaced with asterisks and aren’t available via OData Analytics. |
| disableConversations | boolean | Disables logging of conversation content entirely. No conversation data will be stored. |
| disableIntentTrainer | boolean | This parameter is optional. Disables logging for the Intent Trainer, preventing user input from being stored or used for training intents. |
| traceId | string | This parameter is optional. A unique ID for tracing this API call. Helps track requests in logs and diagnostics without affecting masking or logging behavior. |
Returns void
Example
api.setSensitiveLoggingSettings({
maskLogging: true, // Mask sensitive information in conversation logs
maskAnalytics: true, // Mask sensitive information in analytics and Insights
maskIPAddress: true, // Optional: mask user IP addresses
disableConversations: true, // Disable conversation logging entirely
disableIntentTrainer: true // Disable logging for the Intent Trainer
}, "trace-12345"); // Optional trace ID for debugging
api.trackAnalyticsStep
Tracks a custom analytics step for the session. Useful for monitoring user interactions or workflow progress.
Parameters
| Parameter | Type | Description |
|---|---|---|
| stepLabel | string | The label of the analytics step to track. |
Returns void
Example
// Track that the user reached the "Checkout" step
api.trackAnalyticsStep("Checkout");
States (deprecated)
As of Cognigy.AI 2026.7.0, States are deprecated. The removal of States is planned for Cognigy.AI 2026.12.0. Before the removal, delete your States and retrain your NLU model so it no longer uses state-based Intent masking. For alternative approaches to control Intent recognition, use Intent Conditions.
Use these functions to get, set, and reset the conversation State of a Flow.
api.getState
Returns the current State of the conversation.
Parameters None
Returns string
Example
// Get the current State of the Flow
const currentState = api.getState();
// Send the State to the user
api.say(`The current state is: ${currentState}`);
api.resetState
Resets the State of the Flow to the initial State.
Parameters None
Returns Promise<string>
Example
api.resetState();
api.setState
Updates the conversation State to a specified State.
Parameters
| Parameter | Type | Description |
|---|---|---|
| state | string | The State that should be activated. |
Returns void
Example
// Set the conversation state to "awaiting_input"
ap.setState("awaiting_input");
// Verify by getting the current state
const currentState = api.getState();
api.say(`The current state is: ${currentState}`);
xApps
Use these functions to manage conversations with xApps.
api.setAppState
Updates the state of the xApp Session for the current conversation. Only works if an xApp Session was started beforehand.
Parameters
| Parameter | Type | Description |
|---|---|---|
| appTemplateId | string | The xApp template identifier. Can be a URL to a hosted xApp template, generic-html to load inline HTML with the xApp page SDK, or null to close the active xApp page. |
| appTemplateData | object | The data payload passed to the xApp page. For generic-html, this must include an html field containing the HTML to render. |
Returns void
Example
// Load an xApp template hosted at a URL
api.setAppState("https://my-xapp-template-url", {
my: "xapp-template-data",
});
// Load a generic HTML xApp page
const html = `
<html>
<body>
Hello, World!
<button type="button" onclick="SDK.submit({});">continue</button>
<script src="/sdk/app-page-sdk.js"></script>
</body>
</html>
`;
api.setAppState("generic-html", { html });
// Close the active xApp page
api.setAppState(null, {});
Other
Use these functions to manage conversation behavior, such as adding Keyphrases, handling handovers, and localization settings.
api.addLexiconKeyphrase
Adds a new Keyphrase to a Lexicon.
Parameters
| Parameter | Type | Description |
|---|---|---|
| lexiconId | string | The ID of the Lexicon to which the Keyphrase will be added. |
| keyphrase | string | The primary phrase to add to the Lexicon. |
| tags | string[] | An array of strings used to categorize or filter the Keyphrase. |
| synonyms | string[] | An array of strings representing alternative phrases that should be recognized as the same Keyphrase. |
| data | object | This parameter is optional. The custom data associated with the Keyphrase. |
Returns Promise<string>
Example
// Add a new keyphrase to the existing Lexicon
api.addLexiconKeyphrase(
"6942550bf16d8343c6f1adec",
"password reset",
["account", "security"], // tags
["reset password", "forgot password"], // synonyms
{
priority: "high",
source: "dynamic",
}
);
api.evaluateRule
Evaluates a condition based on a rule configuration that follows the left, operand, right pattern. This function works similarly to the If Node. The left value is compared with the right value using the specified operator, for example, !=, >, includes. If the condition evaluates to true, the associated logic or transition is executed.
Parameters
| Parameter | Type | Description |
|---|---|---|
| left | string | The primary value to be evaluated. |
| operand | string | The comparison operator used to evaluate the relationship between the left and right values. Supported operators: - eq – checks if values are equal. Example: 5 eq 5 → true- neq – checks if values aren’t equal. Example: 5 neq 3 → true- lt – left is less than right. Example: 3 lt 5 → true- lte – left is less than or equal. Example: 5 lte 5 → true- gt – left is greater than right. Example: 7 gt 5 → true- gte – left is greater than or equal. Example: 5 gte 5 → true- contains – left contains right. Example: "hello" contains "ell" → true- ncontains – left doesn’t contain right. Example: "hello" ncontains "xyz" → true- exists – checks if a value exists. Example: x exists → true if x is defined- nexists – checks if a value doesn’t exist. Example: x nexists → true if x is undefined- isyes – checks if a value is "yes". Example: "yes" isyes → true- isno – checks if value is "no". Example: "no" isno → true. |
| right | string | The reference value to compare against the left value. This parameter is ignored for operators that check only the state of the left value, such as exists, nexists, isyes, and isno. |
Returns Promise<boolean>
Example
api.evaluateRule({
left: "hello world",
operand: "contains",
right: "hello"
});
api.handover
Initiates a handover to a human agent or another system.
Parameters
| Parameter | Type | Description |
|---|---|---|
| text | string | The message to send to the user. |
| cancelIntent | string | The Intent that will be triggered if the user cancels the handover. |
| unavailable | string | The message shown to the user if no agent is available. |
| unsupportedChannel | string | The message shown if the current channel doesn’t support handover. |
| quickReply | string | The text for a quick reply button offered to the user. |
| chatwootInboxId | string | The ID of the Chatwoot inbox where the conversation should be routed. |
| liveAgentInboxId | string | The ID of the Live Agent inbox where the conversation should be routed. |
Returns Promise<void>
Example
api.handover({
text: "Connecting you to a human agent...",
cancelIntent: "CancelHandover",
unavailable: "No agents are available at the moment.",
unsupportedChannel: "This channel doesn't support handover.",
quickReply: "Talk to an agent",
chatwootInboxId: "chatwoot_123",
liveAgentInboxId: "liveagent_456"
});
api.setLocaleReferenceId
Sets the Reference ID to specify which Locale is used for localization. Parameters
| Parameter | Type | Description |
|---|---|---|
| localeReferenceID | string | The Locale Reference ID to set. |
Returns void
Example
api.setLocaleReferenceId("b4dc8ff5-bd05-467a-a281-2514122c4aa2");
api.setRating
Sets a rating for the conversation to prefill a rating prompt with a specific value or update it based on other actions or user inputs. Using this function, you can collect feedback at specific steps.
Parameters
| Parameter | Type | Description |
|---|---|---|
| rating | number | The rating for the conversation: -1 for negative or 1 for positive. |
| comment | string | Additional information about the rating. |
Returns void
Example
api.setRating({
rating: 1,
comment: "The conversation was helpful."
});
api.setTimezoneOffset
Sets the time zone offset from UTC for the session, allowing time-related data to be interpreted correctly. You can view the applied time zone in the Input object under input.currentTime.timezoneOffset.
Parameters
| Parameter | Type | Description |
|---|---|---|
| offset | number | The time offset in hours. |
Returns void
Example
// Set the session timezone offset to UTC+4
api.setTimezoneOffset(4);
More Information
Last modified on June 24, 2026