API keys
An API key is a long-lived secret that:- Identifies your organisation (the partner).
- Can be scoped to a single venue, or left platform-wide.
- Carries a set of scopes that gate which endpoints it can call.
- Can be revoked or regenerated at any time.
Generating your key from the admin dashboard
Each organisation has one active API key, managed self-service from the Saoma admin dashboard.Open the API key page
Sign in to the admin dashboard, open the user menu in the top-right corner
and click Clé API (visible only to users with the
admin role).Generate a key (first time only)
If no key has been issued for your organisation yet, the page shows a
Generate a key button. Click it to create one. The full cleartext key is
displayed once in a dialog — copy it immediately.
Reveal an existing key
Once a key exists, the page shows its public prefix masked with dots
(e.g.
sk_live_ab12cd34_••••••••••••••••••••••••). Click the eye icon to
reveal the full value, or Copy to copy it to your clipboard. You can do
this as many times as needed.Regenerate when needed
Click Regenerate to revoke the current key and issue a new one in a
single step. A confirmation dialog warns you that the previous key stops
working immediately. See Rotation and revocation
for the recommended rollout.
Need a different scope or a venue-restricted key for a specific integration?
Contact your Saoma account manager — those keys are still provisioned
manually for now.
Using your key
Send the key on every request, using either of these headers:Authorization: Bearer takes precedence.
Example
Key format
API keys follow the patternsk_live_{id}_{secret} where:
skstands for secret key,livefor the production environment.idis a short hex identifier (used for lookup and display).secretis a long hex random string — the part you must keep confidential.
Rotation and revocation
Rotation is self-service from the Clé API page. Because Regenerate revokes the active key the moment the new one is issued, plan a brief switchover:- Open the Clé API page and click Regenerate.
- Copy the new key from the confirmation dialog.
- Deploy it to your servers (environment variable, secret manager, …).
- Confirm traffic is flowing on the new key — the old one is already rejected.
401
{ "error": "Invalid or revoked API key" }.
Scopes
Each API key is tagged with one or more scopes. Calls to an endpoint whose scope your key lacks return403 with
{ "error": "Insufficient scope", "missing": ["…"] }.
| Scope | Status | Grants |
|---|---|---|
venues:read | Available | GET /v1/venues, GET /v1/venues/{venue_id} |
treatments:read | Available | GET /v1/venues/{venue_id}/treatments |
customers:read | Available | GET /v1/venues/{venue_id}/customers |
bookings:read | Available | GET /v1/venues/{venue_id}/customers/{customer_id}/bookings |
availability:read | Coming soon | Real-time availability endpoint (not yet released) |
bookings:write | Coming soon | Create / cancel bookings (not yet released) |