Join the waitlist
Indexing

Index (create or replace) many bookables in one call

POST
/v1/index

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

Authorization

JWT
headerAuthorizationBearer <JWT>

Bearer JWT. Required on every endpoint except /health

Request Body

Either a single bookable, or a { batch: [...] } of up to 500. Both return the same per-item results

application/json
  1. body

One bookable to create or replace, keyed by type + externalId

type*EntityType

Customer-defined entity type. Lowercase, created on first use, bound to one role per project

Match^[a-z][a-z0-9_]{0,63}$
externalId*string
Length1 <= length <= 255
name*string
Length1 <= length <= 200
status?string
Default"active"
Value in"active""archived"
attributes?

Free-form JSON describing the entity. Indexed and filterable. Keys match ^[A-Za-z][A-Za-z0-9_]{0,63}$; ≤ 32 KB serialized; nesting depth ≤ 4

Response Body

Per-item results

application/json
  1. response
results*array<>
meta*
Example Request
curl -X POST 'https://api.slotr.dev/v1/index' \  -H 'Content-Type: application/json' \  -d '{  "type": "string",  "externalId": "string",  "name": "string"}'
Example Response
{  "results": [    {      "index": 0,      "status": "created",      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "error": {        "code": "invalid_request",        "message": "string",        "details": {          "fields": [            {              "path": "string",              "message": "string"            }          ]        }      }    }  ],  "meta": {    "created": 0,    "updated": 0,    "failed": 0  }}