Skip to main content

APIKey

A project API key. The secret itself is returned only when the key is created.
  • id string — The key’s id.
  • project_id string — The project the key belongs to.
  • name string — Display name.
  • prefix string — The key’s visible prefix, to recognise it without the secret.
  • scopes string[] — Scope strings the key holds. See the scopes and permissions guide.
  • broadcast_prefix string — Namespace credentials from this key may use; each credential picks a path beneath it.
  • mode "pub" | "sub" — Whether credentials from this key publish or subscribe.
  • expires_at string | null — When the key stops working; null when it does not expire.
  • revoked_at string | null — When the key was revoked; null while it is active.
  • created_at string — When the key was created.
  • last_used_at string | null — When the key was last used; null if never.
  • request_count_30d number — Requests made with the key in the last 30 days.

APIKeyIPAllowlist

A CIDR range an API key may be used from.
  • id string — The entry’s id.
  • api_key_id string — The API key the entry applies to.
  • cidr string — Allowed range, e.g. 203.0.113.0/24.
  • label string — Display label.
  • created_at string — When the entry was created.

APIKeyUsage

Per-period breakdown of API key usage.
  • project_id string — The project the key belongs to.
  • api_key_id string — The key the usage belongs to.
  • metric string — The metric queried.
  • granularity "hour" | "day" — Bucket size of periods.
  • periods { period: string; status_category: "success" | "client_error" | "server_error" | "unknown"; count: number; total_latency_ms: number }[] — One entry per bucket and response category, oldest first.

AUDIT_RESOURCE_TYPES

Resource types the audit log can be filtered by.

AuditEntry

One entry of a workspace’s audit log.
  • id number — The entry’s id; higher ids are newer.
  • tenant_id string — The workspace the event happened in.
  • project_id? string — Present only for project-scoped events; omitted for tenant-level ones.
  • actor_type string — Who acted: user, identity or api_key.
  • actor_id string — The acting principal’s id.
  • actor_name? string — Display name for user and identity actors; absent when unknown.
  • action string — What happened, e.g. project.create.
  • resource Record<string, unknown> — The resource acted on (its type and id, and any identifying fields).
  • metadata Record<string, unknown> — Action-specific detail.
  • created_at string — When the event happened.

AuditWebhook

A workspace’s audit webhook, as read back. The secret is never returned.
  • url string — Where audit events are posted; empty when no webhook is configured.
  • has_secret boolean — Whether a signing secret is set.

AuditWebhookConfig

Settings for a workspace’s audit webhook.
  • url string — Where audit events are posted.
  • secret string — Secret used to sign each delivery.

BillingPeriod

A billing period.
  • start string — Start of the period.
  • end string — End of the period.

BillingSummary

Current-period billing snapshot for a project. All byte values are in bytes. Per-product quotas and overage rates live in products. Percentages are omitted — compute them client-side against whichever denominator applies.
  • plan BillingSummaryPlan — The workspace’s plan.
  • period BillingPeriod — The current billing period.
  • computed_at string — Server timestamp marking when the usage figures were read. Usage queries include the not-yet-rolled-up usage_events tail, so this can be fresher than the last worker tick. Show as an “as of” / “updated” stamp.
  • usage BillingSummaryUsage — Usage this period.
  • cost BillingSummaryCost — Cost this period.
  • products? Record<string, ProductUsage> — Per-product usage, keyed by SKU key.
Types: BillingSummaryPlan, BillingPeriod, BillingSummaryUsage, BillingSummaryCost, ProductUsage

BillingSummaryCost

The cost section of a BillingSummary.
  • current_usd number — Metered cost so far this period, in USD (excludes the subscription price).
  • overage_bytes number — Bytes beyond the included quota.
  • overage_usd number — Cost of the overage, in USD.

BillingSummaryPlan

The plan section of a BillingSummary.
  • name string — The workspace’s plan name.

BillingSummaryUsage

The usage section of a BillingSummary.
  • total_bytes number — Tenant-wide byte total across all active SKUs.
  • project_bytes number — This project’s contribution.

BudgetAlert

A budget or usage-cap alert that fired for a project.
  • id string — The alert’s id.
  • project_id string — The project the alert fired for.
  • alert_type string — What fired, e.g. budget_threshold.
  • threshold number — The threshold that was crossed.
  • fired_at string — When the alert fired.
  • resolved_at? string — When the condition cleared; absent while it is still active.

CheckoutSession

Stripe Checkout redirect response.
  • client_secret string — client_secret of an Elements-mode Checkout Session. The browser mounts the Payment Element with it; there is no hosted page to redirect to.
  • publishable_key string — Publishable key, returned so the SPA needs no build-time Stripe config.

CheckoutSessionOptions

Options for BillingResource.createCheckoutSession.
  • plan_name? string — Plan to subscribe to: "Pro" or "Team", case-sensitive ("pro" is rejected). Empty lets the caller pick on the Payment Element.
  • tenantId? string — Scopes the request to a tenant. Session (cookie) callers carry no tenant of their own — both the scope check and the handler read it from the query string. API-key callers already carry a tenant and can omit it.

ComponentStatus

Deprecated. No endpoint returns this type; it will be removed.
Status of one system component.
  • name string — Component name.
  • status "operational" | "degraded" | "outage" — Component status.
  • metrics? Record<string, number> — Component-specific metrics.

ConnectionLimit

The project’s concurrent-connection cap. limit is what the server enforces right now (override ?? plan default); override is the explicit per-project value, null when the plan default applies; plan_default is the owning tenant’s plan value, for display.
  • limit number — The cap enforced now.
  • override number | null — The project’s own cap; null when the plan default applies.
  • plan_default number — The owning workspace’s plan cap.

CreatedPersonalToken

A newly created personal access token; value is shown only once. Extends PersonalToken.
  • value string — The token secret. It cannot be retrieved again.

CreateProjectParams

Parameters for ProjectsResource.create.
  • name string — Display name.
  • environment? ProjectEnvironment — Defaults to prod, which needs a plan with the managed relay network (402 on Free). dev is for your own relay; one per tenant.
  • tenant_id? string — Tenant the project is created in. Session (cookie) callers carry no tenant, and the server creates the project in the identity’s tenant — resolved from this query parameter. Omit only for identities that already carry a tenant (API keys); session callers that omit it get a 403.
Types: ProjectEnvironment

DeviceCodeResponse

Start of the OAuth device flow (RFC 8628), used by the CLI to sign in.
  • device_code string — Code the client polls with. Keep it private.
  • user_code string — Short code the user enters at verification_uri.
  • verification_uri string — Page where the user approves the sign-in.
  • expires_in number — Seconds until the codes expire.
  • interval number — Minimum seconds to wait between polls.

IAM_ROLE_IDS

Every built-in IAM role id the server can emit (in Session.role, TenantMembership.role_id, Invitation.role_id, …), in the server’s builtinRoleList order. Compare against these ids — never bare strings like “admin”: no server role ever equals one (that exact mismatch made the Tenants page unreachable for everyone). internal/auth’s TestSDKExportsEveryBuiltinRole and the dashboard’s roles.test.ts both fail if this list drifts from the Go list.

IAMBinding

A role granted to a principal at a scope.
  • id string — The binding’s id.
  • principal_type string — user or identity.
  • principal_id string — The user’s or identity’s id.
  • principal_name? string — A user’s or identity’s name; absent when the principal no longer exists.
  • principal_email? string — A user’s email; absent for identities.
  • role_id string — The role granted. See IAM_ROLE_IDS.
  • scope_type string — tenant, project or platform.
  • scope_id string — The workspace’s or project’s id; the nil UUID for platform scope.

IAMRole

A built-in IAM role and the permissions it grants.
  • id string — The role’s id, e.g. roles/tenant.admin.
  • name string — Display name.
  • permissions string[] — Permission strings the role grants; * means all.

IAMRoleID

One of the built-in IAM role ids in IAM_ROLE_IDS.

Identity

A machine identity: a non-human principal for services and CI.
  • id string — The identity’s id.
  • project_id string — The project the identity belongs to.
  • name string — Display name.
  • owner_user_id string — The user who created the identity.
  • created_at string — When the identity was created.

IdentityToken

A newly created identity token; value is shown only once.
  • id string — The token’s id.
  • value string — The token secret. It cannot be retrieved again.
  • created_at string — When the token was created.
  • expires_at? string — When the token expires; absent when it does not.
  • scopes string[] — Scope strings the token holds.

IdentityTokenMetadata

An identity token as listed: everything but the secret.
  • id string — The token’s id.
  • created_at string — When the token was created.
  • expires_at? string — When the token expires; absent when it does not.
  • scopes string[] — Scope strings the token holds.

Invitation

A pending invitation to join a workspace.
  • id string — The invitation’s id.
  • tenant_id string — The workspace the invitee will join.
  • email string — The address the invitation was sent to.
  • role_id string — The IAM role id the invitee receives on accepting. See IAM_ROLE_IDS.
  • expires_at string — When the invitation stops being accepted.
  • created_at string — When the invitation was created.

InvitationData

Response of verifying an invitation token.
  • invitation Invitation — The invitation the token belongs to.
Types: Invitation

Invoice

A Stripe invoice for a workspace. Fields are Stripe’s own values, passed through: money in the currency’s minor unit, times in Unix seconds.
  • id string — Stripe’s invoice id.
  • amount_due number — Amount due in the currency’s minor unit (cents for USD).
  • currency string — Currency code, e.g. usd.
  • status "paid" | "open" | "void" | "uncollectible" — Stripe’s invoice status.
  • period_start number — Start of the billed period, in Unix seconds.
  • period_end number — End of the billed period, in Unix seconds.
  • pdf_url string — Link to the invoice PDF.
  • created_at number — When Stripe created the invoice, in Unix seconds.

IPAllowlist

A CIDR range an identity may call the API from.
  • id string — The entry’s id.
  • identity_id string — The identity the entry applies to.
  • cidr string — Allowed range, e.g. 203.0.113.0/24.
  • label string — Display label.
  • created_at string — When the entry was created.

IssueCredentialParams

Parameters for CredentialsResource.issue.
  • scopes string[] — Scope strings the credential grants, within the API key’s own scopes.
  • ttl_seconds number — Lifetime in seconds, clamped to the project’s max_credential_ttl (900 s unless set) and never above 3600 s. Mint a credential when you connect rather than caching one for its whole lifetime.
  • path? string — Broadcast path relative to the API key’s prefix, e.g. “room/42”. Omit for the whole prefix.

IssuedCredential

A relay credential: a signed token for connecting to relays.
  • token string — The signed credential (a JWT) to present to a relay.
  • expires_at string — When the credential expires.
  • jti string — The credential’s unique id; revoke it by this id.
  • relays? RelayEndpoint[] — Relays the credential can connect to, nearest first. Absent for dev projects.
  • fallback? string[] — Relay URLs to try if none in relays answers.
Types: RelayEndpoint

IssueForProjectParams

Parameters for CredentialsResource.issueForProject.
  • api_key_id string — The project API key whose authority the credential is minted under.
  • scopes string[] — Scope strings the credential grants, within the API key’s own scopes.
  • ttl_seconds number — Lifetime in seconds; see IssueCredentialParams.ttl_seconds.
  • path? string — Broadcast path relative to the API key’s prefix. Omit for the whole prefix.

JSONWebKey

One Ed25519 public key that verifies relay credentials.
  • kty "OKP" — Key type: always OKP (RFC 8037).
  • crv "Ed25519" — Curve: always Ed25519.
  • x string — The public key, base64url-encoded.
  • kid string — Key id; matches the kid header of credentials it signed.
  • alg "EdDSA" — Algorithm: always EdDSA.
  • use "sig" — Key use: always sig.

JSONWebKeySet

The public key set published at /v1/credentials/jwks, active key first.
  • keys JSONWebKey[] — The keys, active key first.
Types: JSONWebKey

ListAuditParams

Filters for listing audit log entries. All are optional.
  • action? string — Only entries with this action, e.g. project.create.
  • actorId? string — Only entries by this actor.
  • resourceType? string — Only entries about this resource type. See AUDIT_RESOURCE_TYPES.
  • start? string — Only entries at or after this time (RFC 3339).
  • end? string — Only entries before this time (RFC 3339).
  • limit? number — Maximum number of entries to return.

NotificationPolicy

A rule that routes workspace events to a notification channel.
  • id string — The policy’s id.
  • tenant_id string — The workspace the policy belongs to.
  • name string — Display name.
  • event_category string — Event type the policy matches, or all.
  • severity "info" | "warning" | "critical" — Severity of the notifications the policy sends.
  • channel "email" | "slack" | "webhook" | "discord" | "log" — Where notifications go.
  • recipient string — The channel’s destination, e.g. an email address or webhook URL.
  • enabled boolean — Whether the policy is active.
  • rate_limit? { count: number; period: string } — At most count notifications per period. period is a Go duration (30m, 1h) or a number of days (1d).
  • created_at string — When the policy was created.
  • updated_at string — When the policy was last changed.

OIDCProvider

An OIDC/SSO provider entry returned by GET /v1/auth/providers.
  • id string — Provider id, used in the login URL (/v1/auth/login/{id}).
  • label string — Name to show on the sign-in button.

PaymentMethod

A saved payment method (credit/debit card).
  • id string — Stripe’s payment method id.
  • brand string — Card brand, e.g. “Visa”, “Mastercard”, “Amex”.
  • last4 string — Last 4 digits of the card number.
  • exp_month number — Expiration month (1–12).
  • exp_year number — Expiration year (e.g. 2027).
  • billing_name string — Billing name on the card.
  • is_default boolean — Whether this is the default payment method.
  • created_at string — When this card was added.

PaymentMethodsResponse

Response of listing a workspace’s payment methods.
  • payment_methods PaymentMethod[] — The saved cards.
Types: PaymentMethod

PersonalToken

Non-secret metadata for a user’s personal access token (qumo_pat_…).
  • id string — The token’s id.
  • name string — Display name.
  • scopes string[] — Scope strings the token holds.
  • created_at string — When the token was created.
  • expires_at string — When the token expires.

Plan

A billing plan available for a workspace. Plan metadata (price, tagline, quotas, limits, feature flags) is defined server-side as constants and served via GET /v1/plans. The published price mirrors the Stripe Price used at checkout; Stripe remains authoritative for actual billing.
  • name "Free" | "Pro" | "Team" | "Enterprise" — The plan’s name. Case-sensitive wherever a plan name is sent to the server.
  • price_usd_per_month number — Published monthly subscription price in USD, for display in the plan comparison. 0 means no list price: Free, and the sales-led Enterprise, whose base price is set per contract. Mirrors the Stripe Price at checkout — not a billing source.
  • tagline string — Short marketing tagline shown on the plan card.
  • included_usage_bytes number — Bytes included per billing period, summed across every active SKU. Derived server-side from the SKU registry — the plan itself stores no quota. Per-SKU quotas and overage rates come from the billing summary’s products map.
  • overage_mode "hard_cap" | "allow_overage" — hard_cap stops usage at the quota; allow_overage bills beyond it.
  • max_concurrent_connections number — Maximum concurrent relay connections. Always finite; Number.MAX_SAFE_INTEGER-scale (math.MaxInt32) means effectively unlimited (Enterprise/custom).
  • feature_flags PlanFeatureFlags — Capabilities the plan includes.
Types: PlanFeatureFlags

PlanFeatureFlags

Feature flags the server enforces per plan. Every other capability is the same on every plan, so it has no flag.
  • relay_network boolean — Access to the managed relay network (prod projects).

PortalSession

Stripe Customer Portal redirect response.
  • url string — The portal URL to send the user to.

PricingResponse

Published bandwidth pricing.
  • bandwidth_per_gb number — Price per GB of bandwidth beyond the included quota.
  • currency string — Currency code of bandwidth_per_gb, e.g. usd.

ProductOverage

Overage details for a SKU. rate_usd_per_gb is included so clients can compute month-end cost forecasts without a separate API call: projectedBytes = usage.total_bytes × (periodDays / daysElapsed) projectedOverage = max(0, projectedBytes − quota.included_bytes) projectedCost = projectedOverage / 1e9 × rate_usd_per_gb (base subscription price is billed by Stripe, not included here)
  • billable_bytes number — Bytes beyond the included quota.
  • cost_usd number — Overage cost so far, in USD.
  • rate_usd_per_gb number — Price per GB beyond the quota, in USD.

ProductQuota

A SKU’s total usage against its plan-defined included quota.
  • total_bytes number — Bytes used this period.
  • included_bytes number — Bytes the plan includes for this SKU.

ProductResource

Named bandwidth metric within a product (e.g. Ingress, Egress).
  • name string — The metric’s name, e.g. Ingress.
  • value_bytes number — Bytes used this period.

ProductUsage

Usage summary for a single billable product.
  • name string — The product’s name.
  • quota ProductQuota — Usage against the included quota.
  • overage ProductOverage — Usage beyond the quota and its cost.
  • resources ProductResource[] — Usage broken down by metric.
  • percentage? number — Optional pre-calculated usage percentage against quota.
Types: ProductQuota, ProductOverage, ProductResource

Project

A project inside a workspace; API keys, identities and budgets belong to one.
  • id string — The project’s id.
  • name string — Display name.
  • tenant_id string — The workspace that owns the project.
  • environment ProjectEnvironment — Which relays the project’s credentials work on.
Types: ProjectEnvironment

ProjectBudget

A project’s monthly spend budget and usage cap.
  • project_id string — The project the budget belongs to.
  • monthly_limit number — Monthly limit in USD cents
  • usage_cap_gb number — Usage cap in GB; 0 means no cap.
  • alert_threshold_percent number — Percentage of the budget at which an alert fires.
  • currency string — Currency code of the budget, e.g. usd.
  • updated_at string — When the budget was last changed.

ProjectBudgetUpdate

Fields that may be changed on a project budget; omit a field to leave it unchanged.
  • monthly_limit? number — Monthly limit in USD cents
  • usage_cap_gb? number — Usage cap in GB; 0 means no cap.
  • alert_threshold_percent? number — Percentage of the budget at which an alert fires.
  • currency? string — Currency code of the budget, e.g. usd.

ProjectEnvironment

Where a project’s credentials work. prod uses the managed relay network (paid plans); dev uses a relay you run yourself — the managed relays reject its credentials, which are otherwise identical, so moving to prod changes only the relay you connect to.

ProjectUsage

A project’s usage of one metric over time.
  • project_id string — The project the usage belongs to.
  • metric string — The metric queried, e.g. gateway.egress_bytes.
  • granularity "hour" | "day" — Bucket size of periods.
  • periods UsagePeriod[] — The buckets, oldest first.
Types: UsagePeriod

RelayEndpoint

An active edge relay endpoint. Relays reach clients folded into the credential response (see IssuedCredential.relays); there is no standalone discovery endpoint.
  • id string — The relay’s id.
  • region string — The relay’s region.
  • location? string — Human-readable place this relay serves (“Osaka, Japan”), and what a UI should show end users in place of the host. A current control plane falls back to region when the hub has not registered a location, so it is never empty in practice - but it is optional because an older control plane omits the key entirely, and a required type would lie to consumers about that.
  • host string — Hostname to connect to.
  • port number — Port to connect to.
  • url string — Full URL to connect to.
  • rtmp_port? number — RTMP ingest port, when the relay accepts RTMP.
  • srt_port? number — SRT ingest port, when the relay accepts SRT.
  • status "healthy" | "degraded" | "unhealthy" — The relay’s current health.
  • latency_ms? number — Measured latency to the relay, when known.
  • cert_hash? string — Hash of the relay’s TLS certificate, for pinning; absent when not pinned.

Session

The caller’s console session, returned by client.auth.getSession().
  • user User — The signed-in user.
  • token string — Always empty: the session itself travels in a cookie, never in the body.
  • expires_at string — When the session expires.
  • org_id string — The active workspace’s id; empty for a workspace-less platform admin.
  • org_name string — The active workspace’s name; empty for a workspace-less platform admin.
  • role string — The caller’s IAM role id in the active workspace. See IAM_ROLE_IDS.
  • totp_enabled? boolean — Whether the user has two-factor authentication (TOTP) enabled.
  • platform_admin? boolean — True when the user holds a platform-scope roles/platform.admin binding. For a tenant-less platform admin (a pristine deployment’s first operator) org_id/org_name are empty and this flag is what makes the session usable: the console routes to tenant creation instead of a workspace.
  • onboarding_required? boolean — True while a tenant member has not completed creator onboarding (users.onboarded_at IS NULL): the console offers the first-session wizard. Always false for platform admins and for users onboarded by accepting an invitation.
Types: User

SKU

A billable product unit returned by GET /v1/skus.
  • key string — Stable key, e.g. relay.
  • name string — Display name.
  • active boolean — true = metered and billed; false = coming soon, visible in catalog only.

SKUBudget

Per-SKU spend/usage caps. A zero monthly_limit_usd or usage_cap_gb means unlimited — unset SKUs return the zero default.
  • project_id string — The project the budget belongs to.
  • sku_key string — The SKU the budget applies to, e.g. relay.
  • monthly_limit_usd number — Monthly cap in USD (not cents, unlike ProjectBudget.monthly_limit).
  • usage_cap_gb number — Usage cap for this SKU in GB; 0 means unlimited.
  • updated_at string — When the budget was last changed.

SKUBudgetUpdate

Fields that may be updated on a per-SKU budget; omit to leave unchanged.
  • monthly_limit_usd? number — Monthly cap in USD; 0 means unlimited.
  • usage_cap_gb? number — Usage cap in GB; 0 means unlimited.

SystemStatus

Deprecated. No endpoint returns this type; it will be removed.
Overall system status.
  • status "operational" | "degraded" | "outage" — Overall status.
  • components ComponentStatus[] — Per-component status.
Types: ComponentStatus

Tenant

A workspace: the top-level boundary for billing, access and projects.
  • id string — The workspace’s id.
  • name string — Display name.
  • billing_email? string | null — Where Stripe sends billing email; null or absent when unset.
  • created_at string — When the workspace was created.
  • admin_count? number — User principals bound as tenant admin; present only on list responses. 0 = orphaned (no console path back in).
  • plan_name? string — The tenant’s plan; present only on list responses. No assignment reads as Free.
  • plan_effective_at? string — When the plan was assigned (for Enterprise, when the customer was onboarded); list responses only.

TenantMembership

One org membership entry returned by GET /v1/auth/memberships.
  • tenant_id string — The workspace’s id.
  • tenant_name string — The workspace’s name.
  • role_id string — The caller’s IAM role id in that workspace. See IAM_ROLE_IDS.

TenantUsage

A workspace’s usage of one metric over time, across all its projects.
  • tenant_id string — The workspace the usage belongs to.
  • metric string — The metric queried, e.g. gateway.egress_bytes.
  • granularity "hour" | "day" — Bucket size of periods.
  • periods UsagePeriod[] — The buckets, oldest first.
Types: UsagePeriod

TokenResponse

Token issued at the end of the device flow.
  • access_token string — The access token.
  • token_type string — Token type, e.g. Bearer.
  • expires_in number — Seconds until the token expires.

TOTPSetup

Provisional TOTP secret; confirm with enable(code) before it activates.
  • secret string — The shared secret, for manual entry into an authenticator app.
  • uri string — otpauth:// URI ready for QR rendering.
  • backup_codes string[] — One-time recovery codes; shown only at setup.

UsagePeriod

One time bucket of a usage series.
  • period string — Start of the bucket.
  • value number — The metric’s total within the bucket.

User

A signed-in person, as returned inside a Session.
  • id string — The user’s id.
  • email string — The email the user signed in with.
  • name string — Display name.
  • avatar_url? string — Profile image URL from the identity provider, when it supplied one.
  • github_login? string — GitHub username, when a GitHub account is linked.

UserSession

One entry in the caller’s active-session list.
  • id string — A non-secret handle for the session (a hash of its token), used to revoke it. The session token itself is never returned.
  • ip_address? string | null — IP address the session was created from, when recorded.
  • user_agent? string | null — Browser user agent the session was created with, when recorded.
  • created_at string — When the session was created.
  • expires_at string — When the session expires.
  • current boolean — True for the session that issued the request.