Skip to content

Deployment availability

TEBHOS runs as a single deployment at https://tebhos.com. Every route in this reference is registered on it; there are no routes that exist on one kind of deployment and not on another.

What can vary is whether a capability behind a route is switched on. The unauthenticated instance discovery document publishes this in its features object, so a client can read it before it holds any credential.

Instance features

curl https://tebhos.com/api/v1/.well-known/tebhos
{
  "features": {
    "voice_enabled": true,
    "presigned_attachment_uploads": true,
    "emails_enabled": true,
    "sms_enabled": false,
    "stripe_enabled": true,
    "payment_provider": "polar",
    "self_hosted": true
  }
}
Field Type Description
voice_enabled boolean Whether a voice server is configured. Voice channels, calls and screen sharing need it
presigned_attachment_uploads boolean Whether attachment upload URLs point to object storage (true) or to the API itself (false). The upload flow is the same either way
emails_enabled boolean Whether an email provider is configured, so verification, password reset and email change messages can be delivered
sms_enabled boolean Whether an SMS provider is configured. Phone verification and SMS two-factor authentication are usable only when it is true
stripe_enabled boolean Kept under this name for compatibility. true when premium payments are configured. The payment provider is named by payment_provider
payment_provider string Always polar. Premium and gift purchases are processed by Polar
self_hosted boolean Always true. It does not remove any route and can be ignored for availability decisions

Routes behind a switched-off capability

The routes of a capability stay registered when its flag is false. Read the flag before offering the feature, instead of relying on the error:

  • With voice_enabled false, operations that issue voice connection credentials, such as joining a voice channel or starting a call, fail with 500 INTERNAL_SERVER_ERROR.
  • With stripe_enabled false, checkout and billing portal operations in Premium and Billing fail with 500 INTERNAL_SERVER_ERROR.
  • With sms_enabled false, hide phone verification and SMS two-factor entry points; the SMS provider cannot deliver codes.
  • With emails_enabled false, flows that wait for an emailed code or link cannot complete.

Credentials, permissions, premium state and OAuth2 scopes never change which routes exist. They only change whether a particular caller may use them.