*Workflows › Reference › Functions*

# Functions

> The functions of the expression language, by category.

## Arithmetic

| Name | Signature |
| --- | --- |
| Absolute | `abs(anyNumberExpression)` |
| Add | `add(...anyNumberExpression)` |
| Ceiling | `ceil(anyNumberExpression)` |
| Divide | `divide(anyNumberExpression, anyNumberExpression)` |
| Floor | `floor(anyNumberExpression)` |
| Modulo | `mod(anyNumberExpression, anyNumberExpression)` |
| Multiply | `multiply(...anyNumberExpression)` |
| Power | `pow(anyNumberExpression, anyNumberExpression)` |
| Round | `round(anyNumberExpression, anyNumberExpression)` |
| Subtract | `subtract(anyNumberExpression, anyNumberExpression)` |
| Truncate | `trunc(anyNumberExpression, anyNumberExpression)` |

## Boolean

| Name | Signature |
| --- | --- |
| And | `and(...anyBooleanExpression)` |
| Not | `not(anyBooleanExpression)` |
| Or | `or(...anyBooleanExpression)` |

## Comparison

| Name | Signature |
| --- | --- |
| Equal | `eq(anyExpression, anyExpression)` |
| Greater than | `gt(anyNumberExpression, anyNumberExpression)` |
| Greater or equal | `gte(anyNumberExpression, anyNumberExpression)` |
| Less than | `lt(anyNumberExpression, anyNumberExpression)` |
| Less or equal | `lte(anyNumberExpression, anyNumberExpression)` |
| Not equal | `ne(anyExpression, anyExpression)` |
| Starts with | `startsWith(anyStringExpression, anyStringExpression)` |
| Ends with | `endsWith(anyStringExpression, anyStringExpression)` |
| Contains | `contains(anyStringExpression, anyStringExpression)` |

## String

| Name | Signature |
| --- | --- |
| Concat | `concat(...anyStringExpression)` |
| Trim start | `ltrim(anyStringExpression)` |
| Trim end | `rtrim(anyStringExpression)` |
| Split | `split(anyStringExpression, anyStringExpression)` |
| Length | `strLen(anyStringExpression)` |
| Substring | `substring(anyStringExpression, anyNumberExpression, anyNumberExpression)` |
| Lowercase | `toLower(anyStringExpression)` |
| Uppercase | `toUpper(anyStringExpression)` |
| Trim | `trim(anyStringExpression)` |

## Date

| Name | Signature |
| --- | --- |
| Add days | `addDays(dateValueExpression, anyNumberExpression)` |
| Subtract days | `subtractDays(dateValueExpression, anyNumberExpression)` |
| Days between | `dateDiff(dateValueExpression, dateValueExpression)` |
| Format date | `formatDate(dateValueExpression, anyStringExpression)` |

## Array

| Name | Signature |
| --- | --- |
| Filter | `filter({ input: anyArrayExpression, as: textExpression, cond: anyBooleanExpression })` |
| First | `first(anyArrayExpression)` |
| Last | `last(anyArrayExpression)` |
| Length | `length(anyArrayExpression)` |
| Max | `max(anyArrayExpression)` |
| Min | `min(anyArrayExpression)` |
| Pop | `pop(anyArrayExpression)` |
| Shift | `shift(anyArrayExpression)` |
| Reverse | `reverseArray(anyArrayExpression)` |
| Array to object | `arrayToObject(anyArrayExpression)` |
| Concat arrays | `concatArrays(...anyArrayExpression)` |
| Every | `every({ input: anyArrayExpression, as: textExpression, cond: anyBooleanExpression })` |
| Some | `some({ input: anyArrayExpression, as: textExpression, cond: anyBooleanExpression })` |
| Find | `find({ input: anyArrayExpression, as: textExpression, cond: anyBooleanExpression })` |
| Find index | `findIndex({ input: anyArrayExpression, as: textExpression, cond: anyBooleanExpression })` |
| Map | `map({ input: anyArrayExpression, as: textExpression, in: anyExpression })` |
| Reduce | `reduce({ input: anyArrayExpression, initialValue: anyExpression, in: anyExpression })` |
| First N | `firstN({ n: anyNumberExpression, input: anyArrayExpression })` |
| Last N | `lastN({ n: anyNumberExpression, input: anyArrayExpression })` |
| Max N | `maxN({ n: anyNumberExpression, input: anyArrayExpression })` |
| Min N | `minN({ n: anyNumberExpression, input: anyArrayExpression })` |
| Element at | `arrayElemAt(anyArrayExpression, anyNumberExpression)` |
| Index of | `indexOfArray(anyArrayExpression, anyExpression)` |
| In | `in(anyExpression, anyArrayExpression)` |
| Push | `push(anyArrayExpression, anyExpression)` |
| Unshift | `unshift(anyArrayExpression, anyExpression)` |
| Slice | `slice(anyArrayExpression, anyNumberExpression, anyNumberExpression)` |
| Sort | `sortArray({ input: anyArrayExpression, sortBy: anyNumberExpression })` |
| Splice | `splice({ input: anyArrayExpression, start: anyNumberExpression, deleteCount: anyNumberExpression, items: anyArrayExpression })` |

## Conditional

| Name | Signature |
| --- | --- |
| Condition | `cond({ if: anyBooleanExpression, then: anyExpression, else: anyExpression })` |
| Switch | `switch({ branches: { type: "array", data: { type: "object", data: { case: anyBooleanExpression, then: anyExpression } }[] }, default: anyExpression })` |

## Object

| Name | Signature |
| --- | --- |
| Get value | `getValue({ input: anyObjectExpression, key: anyStringExpression })` |
| Set value | `setValue({ input: anyObjectExpression, key: anyStringExpression, value: anyExpression })` |
| Merge objects | `mergeObjects(...anyObjectExpression)` |
| Object to array | `objectToArray(anyObjectExpression)` |

---

Canonical URL: https://docs.filmo.io/workflows/reference/functions  
Last updated: 2026-10-25