Skip to main content
Most of the application is built on server actions rather than a public REST API, so the HTTP surface is deliberately small: webhooks, streams, health and auth.

GET /api/health

The uptime probe. Unauthenticated on purpose — a monitor has no session, and anything it cannot reach it records as an outage, so a signed-in health check would report a permanent one. Nothing here is account data. It reports whether the deployment can currently reach its own dependencies. Response
degraded stays 200 on purpose: the site is still serving, and turning every component red would state something untrue. To alert on the signal engine specifically, point a second monitor at this URL with a body check on checks.signalEngine.status.The response is sent no-store. A CDN holding a 200 in front of a dead origin makes a status page lie.

POST /api/deposit/ipn

The payment processor callback. See Webhooks — it has its own page because the signature verification is the security boundary of the whole deposit path.

GET /api/deposit/stream

Server-sent events for deposit state transitions. Authenticated; scoped to the current user.

GET /api/signal-engine/stream

Server-sent events for live signals. Authenticated, and requires an active signal plan.

GET|POST /api/auth/[...nextauth]

Auth.js handlers — sign-in, callback, session, CSRF, sign-out. Excluded from the proxy matcher so the auth flow is never intercepted by its own middleware.

GET /api/avatar

Serves the signed-in user’s avatar.

POST /api/assistant

Backs the in-app assistant. Answers from the indexed knowledge base rather than general knowledge.

GET /ref/{code}

Stores a referral code in a cookie for 30 days, then redirects to the site. See Referral Hub. Codes are eight characters from an alphabet excluding 0, o, 1, l and i. Anything that could not be one of ours is rejected before it reaches a query.

GET /blog/feed.xml

RSS feed for the blog.

Programmatic access

API access is listed as an Elite plan feature. There is no public REST API for account operations today — the dashboard uses server actions, which are not a stable external contract.
Do not build integrations against server action endpoints. They are internal, unversioned, and change without notice.