Create or replace an offering for a bookable
Creates or fully replaces one offering of a bookable, keyed by your own offeringExternalId so re-sending replaces rather than duplicates. The price is stored server-side and is the only amount the checkout charges. The bookable must already exist in your project
JWTAuthorizationBearer <JWT>Bearer JWT. Required on every endpoint except /health
type*stringCustomer-defined entity type, e.g. "listing" or "doctor"
^[a-z][a-z0-9_]{0,63}$externalId*stringThe entity's id in the customer's database
1 <= length <= 255offeringExternalId*stringYour own id for the offering; re-sending it replaces that offering
1 <= length <= 255application/json- body
Upsert body for an offering; price is stored and charged server-side
name*string1 <= length <= 200priceAmount*integerPrice in minor units (e.g. cents)
0 <= valuecurrency?stringISO 4217 currency code
"BRL"durationMin*integer1 <= valueavailability?array<>[]status?string"active""active""archived"sortOrder?integerThe stored offering
application/json- response
A named option a bookable can be booked for, with its own server-held price, duration and weekly availability
id*stringStable offering id a booking link and checkout reference
name*stringpriceAmount*integerPrice in minor units (e.g. cents); always server-held
currency*stringISO 4217 currency code
durationMin*integerDuration in minutes
availability?array<>Weekly recurring availability windows
curl -X PUT 'https://api.slotr.dev/v1/bookables/string/string/offerings/string' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"priceAmount": 0,
"durationMin": 1
}'{
"id": "string",
"name": "string",
"priceAmount": 0,
"currency": "string",
"durationMin": 0,
"availability": [
{
"dayOfWeek": 0,
"startTime": "string",
"endTime": "string"
}
]
}Index (create or replace) many bookables in one call POST
Indexes up to 500 bookables — creating or replacing each — for initial sync or bulk updates. Not atomic: each item succeeds or fails on its own and the response reports the outcome per input index
Search bookables by attribute filters POST
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