Skip to content

Query Reference

Entities are queried via GET /api/{db}/entity using URL query parameters. The same filter syntax is used in menu query parameters and in reference_query on reference property definitions.

Filters

Filters follow the pattern propertyName.type=value. The type must match the property's data type.

FilterExampleDescription
prop.string=value_type.string=invoiceExact string match
prop.string.regex=/pattern/flagsname.string.regex=/acme/iRegular expression match
prop.string.in=a,b,cstatus.string.in=active,pendingMatch any of the listed values
prop.string.exists=true|falseemail.string.exists=trueCheck whether a string property has a value
prop.reference=idowner.reference=abc123Exact reference match
prop.reference.in=id1,id2owner.reference.in=abc,defMatch any of the listed entity IDs
prop.reference.exists=true|falsephoto.reference.exists=trueCheck whether a reference property has a value
prop.number=nbudget.number=1000Exact number match
prop.number.gt=nbudget.number.gt=500Greater than
prop.number.gte=nbudget.number.gte=500Greater than or equal
prop.number.lt=nbudget.number.lt=1000Less than
prop.number.lte=nbudget.number.lte=1000Less than or equal
prop.number.ne=nbudget.number.ne=0Not equal
prop.number.in=a,b,cquantity.number.in=10,20,30Match any of the listed numbers
prop.number.exists=true|falseprice.number.exists=trueCheck whether a number property has a value
prop.boolean=true|falseactive.boolean=trueBoolean match
prop.boolean.in=true,falseactive.boolean.in=true,falseMatch any of the listed booleans
prop.boolean.exists=true|falseactive.boolean.exists=trueCheck whether a boolean property has a value
prop.date=YYYY-MM-DDdue_date.date=2025-01-01Exact date match
prop.date.gt=datedue_date.date.gt=2025-01-01Greater than
prop.date.gte=datedue_date.date.gte=2025-01-01Greater than or equal
prop.date.lt=datedue_date.date.lt=2025-12-31Less than
prop.date.lte=datedue_date.date.lte=2025-12-31Less than or equal
prop.date.in=d1,d2event_date.date.in=2025-01-01,2025-02-01Match any of the listed dates
prop.date.exists=true|falsedue_date.date.exists=trueCheck whether a date property has a value
prop.datetime=ISO8601created_at.datetime=2025-01-28T08:21:25ZExact datetime match
prop.datetime.gt=ISO8601created_at.datetime.gt=2025-01-01T00:00:00ZGreater than
prop.datetime.gte=ISO8601created_at.datetime.gte=2025-01-01T00:00:00ZGreater than or equal
prop.datetime.lt=ISO8601created_at.datetime.lt=2025-12-31T00:00:00ZLess than
prop.datetime.lte=ISO8601created_at.datetime.lte=2025-12-31T00:00:00ZLess than or equal
prop.datetime.in=d1,d2created_at.datetime.in=2025-01-01T00:00:00Z,...Match any of the listed datetimes
prop.datetime.exists=true|falsecreated_at.datetime.exists=trueCheck whether a datetime property has a value
prop.filesize=nattachment.filesize=1024Exact file size match (bytes)
prop.filesize.gt=nattachment.filesize.gt=1000000File size greater than
prop.filesize.gte=nattachment.filesize.gte=1000000File size greater than or equal
prop.filesize.lt=nattachment.filesize.lt=5000000File size less than
prop.filesize.lte=nattachment.filesize.lte=5000000File size less than or equal
prop.filesize.exists=true|falsephoto.filesize.exists=trueCheck whether a file property has a value

Multiple filters are combined with & and all must match (AND logic). There is no built-in OR between different filter keys — use .in to match multiple values for the same property:

?_type.string=project&status.string=active&owner.reference=USER_ID

Sorting

Prefix the sort field with - for descending order.

ParameterExampleDescription
sort=prop.typesort=name.stringSort ascending
sort=-prop.typesort=-date.dateSort descending
sort=a,-bsort=status.string,-date.dateMulti-field sort

Pagination

ParameterExampleDescription
limit=nlimit=50Max results to return (default: 100)
skip=nskip=100Results to skip — use with limit for paging
bash
# Page 1
GET /api/{db}/entity?limit=100&skip=0

# Page 2
GET /api/{db}/entity?limit=100&skip=100
bash
GET /api/{db}/entity?q=acme+corp

Searches across all properties that have search enabled on their definition.

TIP

Enable search on properties users naturally search by (name, title, code). Without it, q= will not find values in that field.

INFO

Authenticated requests search the full private index (which includes domain-shared and public entities). Unauthenticated requests search only the public index. There is no separate domain search index — domain-shared entities appear in authenticated searches because their searchable values are included in the private index.

Field Selection

Return only specific properties to reduce response size:

bash
GET /api/{db}/entity?props=name,status,_created

Common Patterns

bash
# All entities of a type
?_type.string=invoice

TIP

_type.string filters by the entity type's name property (e.g. invoice), not its display label. If your entity type's name and label differ, always use the name value here.

bash
# Children of a parent
?_parent.reference=PARENT_ID

# Check if property exists
?photo.reference.exists=true

# Case-insensitive name search
?name.string.regex=/john/i

# Date range
?due_date.date.gte=2025-01-01&due_date.date.lte=2025-12-31

# Multiple statuses
?status.string.in=active,pending,review