Skip to main content
PUT
Alpha This endpoint is in alpha: the request shape may still change without a deprecation cycle. Replaces the routes of one routing form and returns the routing form in the shape that Get a Routing Form returns.

The write covers the whole list

routes holds the complete route list. This endpoint is not an append and not a patch.
  • An entry that carries an id updates that stored route in place.
  • An entry without an id creates a route.
  • A stored route that the body leaves out is deleted.
Read the routes first and send them back with your changes. Send the whole list every time. routes must be present. A body without it answers 422, so a mistyped key never deletes every route. Array position sets the route order. The routing form reads the routes in that order and takes the first route whose conditions hold.

The fallback

fallback is optional. It is the destination that takes every submission that matches no route. If the body names no fallback, the routing form keeps its stored fallback destination. Replacing the route list never moves where an unmatched submission goes.
The fallback decides where every unmatched submission goes. A body that restates it slightly differently redirects that traffic, and nothing in the response says so. Leave fallback out unless you mean to change it.

The rule tree

A route carries rules, the condition tree that selects it. A group holds child nodes under all for AND, or under any for OR. A child is a group or a condition.
A condition names its question with inputId, the same key that the read endpoints return. The operator is one of equals, does_not_equal, is_any_of, is_not_any_of, contains, does_not_contain, starts_with, ends_with, greater_than, greater_than_or_equal, less_than, less_than_or_equal, is_empty or is_not_empty. equals and does_not_equal take exactly one value. The list operators take 1 to 500 values. The ordering operators take exactly one numeric value and match only a numeric answer. is_empty and is_not_empty take none.

Destinations

type takes EVENT_TYPE, TEAM_PAGE, URL or CUSTOM_PAGE. Each type reads its own fields: eventTypeId, teamId, customUrl with submissionParamsForwarding, or headline with body.
A route points at an event type or a team of your own organization. A route that points anywhere else answers 400, and the whole write is refused. A rule that names a question of another routing form answers 400 as well.
The id is a UUID. A malformed id answers 404, not 422. A routing form outside your workspace answers 404 as well.

Authorizations

Authorization
string
header
required

Path Parameters

id
string<uuid>
required

UUID of the routing form.

Body

application/json

The body that replaces the routes of a routing form.

routes
object[]
required

The complete route list. Array position sets the route order, and the routing form takes the first route whose conditions hold.

fallback
object

The fallback destination of a routing form. It takes every submission that matches no route, so it carries no rules.

Response

OK

success
boolean
Example:

true

status
integer
Example:

200

routingForm
object

A routing form with its questions and its routes, as returned when you fetch one routing form.

Last modified on September 9, 2026