Vapi · Schema

LiquidCondition

AIVoiceAgentsRealtimeCPaaS

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"
  ]
}