Skip to main content
GET
Founder-only cross-tenant funnel metrics
A cross-tenant funnel snapshot for whoever operates the Recurso instance: how many workspaces exist, how many signed up in the last 7 and 30 days, how many have activated (created at least one customer), how many trials expire in the next 7 days, tenant counts by billing_status and plan_tier, the 15 most recent signups, and a money-free dry-run of what each tenant would be charged for Recurso Cloud this month. This is the only cross-tenant surface in the API and it sits deliberately outside tenant authentication. It is gated by the FOUNDER_TOKEN environment variable: the request must carry that value as a bearer token, and when the variable is unset the route answers 404 as if it did not exist, so no tenant login or API key can ever reach it. For per-tenant reporting use Analytics; for process-level telemetry use Get Prometheus Metrics.
The spec entry for this operation does not declare security: [], so the playground on this page inherits the document-level bearerAuth scheme and shows a tenant-API-key box. Ignore it: the handler compares the header against FOUNDER_TOKEN only, and a tenant API key is rejected with 401.

Example Request

Response

Returned bare — no data envelope. Money fields are minor units in cloud_charge_currency. Array fields are Go nil slices when there is nothing to list, so they serialise as null, not [] — see the Fields table and the note below.

Fields

The cloud-charge section is best-effort. If the preview query fails the funnel metrics are still returned with 200, and the charge fields are left at their zero values — "cloud_charges": null, "cloud_charge_total_minor": 0, "cloud_charge_currency": "" — rather than the whole response failing. A successful query with no readings for the month also yields "cloud_charges": null (the repository returns no rows), but with cloud_charge_currency populated. Treat null and [] the same when consuming this field.

Errors

Only the 500 carries the standard envelope — see Errors. The 401 and 404 are intentionally bodiless so the route’s existence is not confirmed to unauthenticated callers.

Authorizations

Authorization
string
header
required

Tenant API key obtained from POST /auth/register or POST /v1/developer/keys.

Response

Cross-tenant platform metrics.

The response is of type object.