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.
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.