Skip to content
Select themeSelect language

Public config endpoint for frontend bootstrap before authentication.

GET
/config
curl --request GET \
--url https://example.com/config

Frontend bootstrap configuration (auth methods, URLs, edition)

Media typeapplication/json
object
api_url
required
string
apps_base_domain
required
string | null
auth
required
object
edition
required
string
methods
required
Array<string>
registration_open
required
boolean
auth_provider
required
string
auth_proxy_logout_url
required
string | null
oidc_enabled
required
boolean
sso
required
object
auto_redirect
required
string | null
telegram_bot_username
required
string | null
ws_url
required
string
Examplegenerated
{
"api_url": "example",
"apps_base_domain": "example",
"auth": {
"edition": "example",
"methods": [
"example"
],
"registration_open": true
},
"auth_provider": "example",
"auth_proxy_logout_url": "example",
"oidc_enabled": true,
"sso": {
"auto_redirect": "example"
},
"telegram_bot_username": "example",
"ws_url": "example"
}

Structured server error

Media typeapplication/json

The canonical JSON body of every error response — the single source of truth the frontend binds to. Every AppError serializes as this exact shape, and the generated OpenAPI component ApiErrorBody (with its ErrorCode enum) is what the frontend error schema is generated from, so there is no hand-written error schema on either end.

object
code
required

Machine-readable, stable error code.

string
Allowed values: not_found unauthorized forbidden bad_request unprocessable precondition_failed conflict method_not_allowed rate_limited quota_exceeded database_error docker_error vault_error internal_error
details
One of:
null
error
required

Human-readable message (the server’s English text; the client may localize by code).

string
Example
{
"code": "not_found"
}