Bearer keys, room-scoped.
Every request authenticates with an API key sent as a bearer token. A key is a self-contained service identity: it belongs to exactly one room, acts read-only within it, and never borrows a human's permissions.
The Authorization header
Authorization: Bearer wbl-…
- Requests without the header — or with anything other than a valid
wbl-key — get401 Unauthorized. - Keys are shown in full exactly once, at creation. The stored form is a SHA-256 hash; a lost key cannot be recovered. Revoke it and mint a new one.
What a key is
- Room-scoped. A key is bound to the one room it was created in and can never act in another. If your account has several rooms, create one key per room.
- Read-only service identity. The key runs as its own principal inside the room: it reads what it needs to serve your requests (including conversation history) but cannot write tenant data.
- Not you. The key is not a member of the room and does not inherit any human's memberships or permissions. Spend bills to the room's normal funding sources.
- Individually limited. Rate limits and spend caps apply per key, so one integration cannot starve another.
Lifetime and rotation
- Keys expire after 90 days. The keys page shows each key's status and expiry.
- Revocation is instant — the next request with a revoked key gets
401 Unauthorized. - Rotate on your schedule: create the replacement, deploy it, then revoke the old key. Both can be live at once during the window.
- Every key's last-used time is tracked and visible on the keys page, so stale integrations are easy to spot before they break.
Handling keys well
- Keep keys out of source control — load from an environment variable or secret manager (the examples here use
$WEBEL_API_KEY). - Use one key per integration or environment (dev / staging / prod). Per-key spend caps then bound the blast radius of any single leak.
- Name keys for their purpose ("staging-bot", "support-agent") so an audit of the keys page reads like an inventory.
- A leaked key cannot be scoped down after the fact: revoke it immediately and mint a replacement.
Terms
Creating the first key in a room requires accepting the Webel API Terms of Service (webel.ai/terms). Acceptance happens in the app at key creation, is recorded per room, and is never asked again. API calls themselves require nothing beyond the bearer header.