Slatis Public API v1 is open for beta testers Register on the waitlist →
Slatis

Introduction

Slatis is a scheduling platform. Book meetings, route them to the right person automatically, and track real capacity in one place. The public API and SDK give developers programmatic access to the entire platform.

Our platform handles the full scheduling layer: book meetings, route them to the right person automatically, and track your team's real capacity in one place. Not just open slots on a calendar.

The public API gives you programmatic access to every part of the platform. Embed booking flows, react to confirmations in real time, query live availability, or pull scheduling data into your own systems.

Base URL

https://api.slatis.com/v1

All paths in this reference are appended to this base URL. For local development, point the SDK to your local server:

const slatis = new Slatis({
  apiKey: 'sk_test_xxx',
  baseUrl: 'http://localhost:3000/api/public/v1',
})

Authentication

All requests require an API key in the Authorization header or X-API-Key:

# Authorization header (preferred)
curl https://api.slatis.com/v1/bookings \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx"
 
# Alternative
curl https://api.slatis.com/v1/bookings \
  -H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxx"

Two key types are supported:

TypePrefixUse case
Secret keysk_live_* / sk_test_*Server-to-server. Full scope access including write operations.
Public keypk_live_* / pk_test_*Client-side (browser). Safe for bookings, availability, and event type reads.

Never expose a secret key (sk_*) in client-side code or public repositories. Use public keys (pk_*) for browser contexts.

Request headers

PropTypeDefault
Authorization
string
-
X-API-Key
string
-
Idempotency-Key
string
-
X-Request-Id
string
-
Content-Type
string
"application/json"

Tracing requests

Every response echoes back a X-Request-Id header. If you provide your own value in the request, the same value is returned. If you omit it, Slatis generates one automatically.

curl https://api.slatis.com/v1/bookings/bkg_01xyz \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "X-Request-Id: my-trace-abc123"
HTTP/2 200
X-Request-Id: my-trace-abc123

Use this ID to correlate your application logs with Slatis server-side logs when filing a support request or debugging a production incident. All audit log entries are indexed by this ID.

Slatis support can look up any request by its X-Request-Id value. Include it when reporting unexpected behavior.

Rate limits

Limits are per API key, based on key environment:

EnvironmentLimit
Live (*_live_*)1,000 requests / minute
Test (*_test_*)100 requests / minute

Every authenticated response includes rate limit headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987
X-RateLimit-Reset: 1746100860
Retry-After: 30   ← only on 429 responses

Body size limit

POST, PATCH, and PUT requests are limited to 256 KB. Requests exceeding this return 413 Payload Too Large.

Response format

All responses use a consistent envelope with a named top-level resource key:

{ "success": true, "booking": { ... } }
{ "success": true, "slots": [...], "totalSlots": 12 }
{ "success": false, "error": { "code": "not_found", "message": "Booking not found" } }

Error codes

StatusCodeMeaning
400validation_errorRequest data is invalid
401unauthorizedMissing or invalid API key
403forbiddenKey lacks the required scope or origin not allowed
404not_foundResource not found
409conflictInvalid state transition or duplicate
413payload_too_largeBody exceeds 256 KB
429rate_limit_exceededRate limit reached
500internal_errorUnexpected server error

On this page