Search bookables by attribute filters
Runs a structured, deterministic search over one bookable type using AND-combined attribute filters. Filtering on an attribute path no entity of the type has returns 400 with the valid paths. Prices use the money convention { amount (integer minor units), currency (ISO 4217) }; filter on price.amount
JWTAuthorizationBearer <JWT>Bearer JWT. Required on every endpoint except /health
application/json- body
type*EntityTypeCustomer-defined entity type. Lowercase, created on first use, bound to one role per project
^[a-z][a-z0-9_]{0,63}$text?|Natural-language query (e.g. "place for 2 in London under $140"). When set, a fast model translates it into attribute filters and the explicit filters/sort below may be omitted. When absent, only the structured filters run (no model call).
length <= 500filters?array<>Up to 20 filters, combined with AND
items <= 20sort?limit?integer1 <= value <= 10020cursor?string|nullintrospection?booleanWhen true, the response includes an introspection object explaining how the query was read (effective filters, pipeline trace, sort). Additive and optional; omit or send false for the normal response.
falseMatching bookables with an explanation of the query
application/json- response
data*array<>meta*explanation*Why these results — every result is traceable to these filters
introspection?Present only when the request set introspection: true. Explains how the query was read: a one-line summary, the effective filters, and the ordered pipeline steps.
curl -X POST 'https://api.slotr.dev/v1/search' \ -H 'Content-Type: application/json' \ -d '{ "type": "string"}'{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "object": "bookable", "type": "string", "externalId": "string", "name": "string", "status": "active", "attributes": {}, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "meta": { "nextCursor": "string", "tookMs": 0 }, "explanation": { "type": "string", "appliedFilters": [ "string" ], "sort": "string" }, "introspection": { "understood": "string", "inferredFilters": [ { "label": "string", "path": "string", "op": "string" } ], "trace": [ { "step": "string", "status": "ok", "detail": "string" } ] }}