HTTP API
Query Routes
Configure reusable form and category listing routes with nested AND/OR predicates.
query_routes lets you define reusable, named listing routes for forms and categories.
Config
'http' => [
'query_routes' => [
'forms' => [
'legacy_or_busy' => [
'where' => [
'any' => [
['field' => 'created_at', 'op' => 'lt', 'value' => '2026-01-01T00:00:00Z'],
['field' => 'responses_count', 'op' => 'gt', 'value' => 100],
],
],
],
],
'categories' => [
'active_non_system' => [
'where' => [
'all' => [
['field' => 'is_active', 'op' => 'eq', 'value' => true],
['field' => 'is_system', 'op' => 'eq', 'value' => false],
],
],
],
],
],
],
Endpoints
GET /form-routes/{routeKey}GET /category-routes/{routeKey}
Both endpoints are available on non-scoped and scoped route groups.
Predicate DSL
all: AND groupany: OR group- nesting is supported
Condition format:
{ "field": "created_at", "op": "lt", "value": "2026-01-01T00:00:00Z" }
Operators
eq,neqgt,gte,lt,ltein,not_incontains,starts_with,ends_withis_null,not_nullbetween
Aggregate fields
- forms:
responses_count - categories:
forms_count
Aggregate fields support numeric operators: eq, neq, gt, gte, lt, lte.
Form field note
For forms:
categorytargets the stored category key/reference on form revisionscategory_slugtargets the linked category slug