Skip to content

Panel API ​

The JSON API is the one the panel uses, on the admin port (127.0.0.1:9090). It is not a stable interface: it may change between versions.

Authentication: session cookie obtained with POST /api/login. Requests with a body must use Content-Type: application/json (protection against cross-origin requests).

Without login ​

RequestDescription
GET /healthz{"status":"ok"}
GET /metricsPrometheus metrics.
GET /api/sessionSession state, whether setup is needed, 2FA policy.
POST /api/setupCreates the first administrator (only if none exists).
POST /api/login, POST /api/login/2faLogin.
POST /api/logoutLogout.

With login ​

RequestScope
GET /api/panel—
GET /api/metrics?range=1h|24h|7dmetrics:read
PUT /api/settingssettings:write
PUT /api/https, PUT /api/admin-host, PUT /api/admin-allow, PUT /api/updates, POST /api/update/checksettings:write
POST /api/domains, /api/domains/check, /api/domains/test, /api/domains/redirectdomains:write
POST /api/certs/issue, /api/certs/uploaddomains:write
DELETE /api/domains/{host}domains:write
POST /api/buckets, /api/buckets/check, /api/buckets/testbuckets:write
DELETE /api/buckets/{id}buckets:write
POST /api/rules, DELETE /api/rules/{id}routes:write
POST /api/proberoutes:read
POST /api/purge, POST /api/warmroutes:write
PUT /api/rules/{id} (signed links and images on the fly), POST /api/linksroutes:write
POST /api/links/rotatesettings:write
POST /api/diagnoseroutes:read
/api/users, /api/audit, /api/policy, POST /api/backup/export, POST /api/backup/restoreusers:manage
GET/PUT /api/notifications, POST /api/notifications/testnotifications:manage
/api/me, /api/me/password, /api/me/2fa/…—

A request body cannot exceed 64 KB.

Public verification page ​

On the public port: GET /.well-known/otterroute/check?nonce=… answers with a proof the panel uses to make sure the domain reaches this node.

Rilasciato con licenza MIT o Apache-2.0, a scelta.