Routes

The dashboard URL map. Public pages need no account, workspace pages live under your project slug, and the relay API powers every screen — same-origin and session-authenticated.

Public pages

/signin

Sign in with Google (or email in dev mode).

/register

Create an account, then pick or create a workspace.

/pricing

Free vs Pro limits with checkout links.

/onboarding

Guided setup: project, keys, first events.

/legal/privacy

Privacy policy.

/legal/terms

Terms of service.

Workspace

Everything under /[slug] belongs to one project — slug is the URL-safe project name from creation (e.g. /acme-inc/analytics).

/[slug]

Workspace overview: KPIs, chart and top breakdowns.

/[slug]/analytics

Full analytics dashboard with filters, segments and CSV export.

/[slug]/comparison

Period-over-period deltas for every metric.

/[slug]/events

Paginated raw event log with type badges and context.

/[slug]/funnels

Funnel builder with step conversion and drop-off.

/[slug]/submissions

Submissions browser — every captured field value.

Settings

/[slug]/settings/general

Project name, slug and timezone.

/[slug]/settings/tracking

Install snippet, auto-track toggles and masked fields.

/[slug]/settings/domains

Allowed hostnames — tracking ignores everything else.

/[slug]/settings/api

Publishable and secret keys: create, reveal once, rotate, revoke.

/[slug]/settings/webhooks

Endpoints, event subscriptions and delivery logs.

/[slug]/settings/utm-templates

Named, reusable UTM parameter sets.

/[slug]/settings/appearance

Dashboard display preferences.

/[slug]/settings/billing

Usage meters, plan and invoices.

/[slug]/settings/billing/plans

Plan picker with Pro checkout.

Relay API

The dashboard never calls trepi from the browser. Screens hit these same-origin routes with the session cookie; the server forwards to the API with the project secret. Third-party integrations should use the API reference with an sk_… instead — relay routes are not a public API.

/api/auth/[...nextauth]/api/chat/api/chat/command/api/chat/context/api/checkout/api/onboarding/api/onboarding/step/api/portal/api/projects/api/projects/by-slug/api/projects/[id]/api/projects/[id]/[metric]/api/projects/[id]/api-keys/api/projects/[id]/api-keys/[keyId]/api/projects/[id]/domains/api/projects/[id]/funnels/api/projects/[id]/funnels/[fid]/api/projects/[id]/rotate-secret/api/projects/[id]/submissions/api/projects/[id]/utm-templates/api/projects/[id]/utm-templates/[tid]/api/projects/[id]/views/api/projects/[id]/views/[vid]/api/projects/[id]/webhooks/api/projects/[id]/webhooks/[webhookId]/api/projects/[id]/webhooks/[webhookId]/deliveries/api/webhooks/polar

One exception

/api/webhooks/polar is not session-guarded — it receives Polar billing webhooks and verifies their signature instead.