Create a flow function

POST /api/v1/flow-functions

Authentication

AuthorizationBearer

Pass a JWT access token or an API key (prefixed with tif_live_) as a Bearer token.

Request

This endpoint expects an object.
descriptionstringRequired

Description of what the function does (1-1000 characters)

namestringRequired

Display name (1-255 characters)

requestobjectRequired

Structured HTTP request: method, url, pathParams, queryParams, body. See [RequestSchema] for shape.

paramBindingsobject or nullOptional

Per-parameter source bindings keyed by flat param name. Optional — defaults to empty {} (all parameters are LLM-extracted). Keys must match a property name in request.pathParams, request.queryParams, or request.body. Values:

  • { "source": "llm" } — LLM extracts from conversation
  • { "source": "call_context", "contextKey": "caller.contact_id", "onNull": "reject" }
  • { "source": "static", "value": "2026-01" }
timeoutMsintegerOptional

Timeout in milliseconds (100-30000)

webhookHeadersobject or nullOptional

Headers to send with the webhook (encrypted at rest). Write-only.

Response

Flow function created
accountIdstringformat: "uuid"
Account that owns this function
createdAtdatetime
Creation timestamp
descriptionstring
Description of what the function does
hasWebhookHeadersboolean

Whether encrypted headers are configured (never exposes actual headers)

idstringformat: "uuid"
Unique identifier
isActiveboolean
Whether the function is active
namestring
Display name
paramBindingsobject

Per-parameter source bindings keyed by flat param name. Empty object {} means all params are LLM-extracted. See CreateFlowFunctionRequest.param_bindings.

requestobject

Structured HTTP request shape (method, url, pathParams, queryParams, body)

slugstring

URL-safe slug

timeoutMsinteger
Timeout in milliseconds
updatedAtdatetime
Last update timestamp

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
409
Conflict Error
429
Too Many Requests Error
500
Internal Server Error