Vapi · Schema

LiquidCondition

Artificial IntelligenceVoiceAgentsReal-TimeCPaaS

Properties

Name Type Description
type string This is the type discriminator for liquid condition
liquid string This is the Liquid template that must return exactly "true" or "false" as a string. The template is evaluated and the entire output must be either "true" or "false" - nothing else. Available variables
View JSON Schema on GitHub

JSON Schema

vapi-liquidcondition-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/LiquidCondition",
  "title": "LiquidCondition",
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "description": "This is the type discriminator for liquid condition",
      "example": "liquid",
      "enum": [
        "liquid"
      ]
    },
    "liquid": {
      "type": "string",
      "description": "This is the Liquid template that must return exactly \"true\" or \"false\" as a string.\nThe template is evaluated and the entire output must be either \"true\" or \"false\" - nothing else.\n\nAvailable variables:\n- `messages`: Array of recent messages in OpenAI chat completions format (ChatCompletionMessageParam[])\n  Each message has properties like: role ('user', 'assistant', 'system'), content (string), etc.\n- `now`: Current timestamp in milliseconds (built-in Liquid variable)\n- Any assistant variable values (e.g., `userName`, `accountStatus`)\n\nUseful Liquid filters for messages:\n- `messages | last: 5` - Get the 5 most recent messages\n- `messages | where: 'role', 'user'` - Filter to only user messages\n- `messages | reverse` - Reverse the order of messages",
      "examples": [
        "{% if messages.last.content contains goodbye %}true{% else %}false{% endif %}",
        "{% assign userMessages = messages | where: role, user %}{% if userMessages.size > 3 %}true{% else %}false{% endif %}"
      ]
    }
  },
  "required": [
    "type",
    "liquid"
  ]
}