My Entitlements
Resolved feature flags for the calling account. Driven by the plan-entitlements system (migration 142+) — every feature on the platform is gated by a named entitlement key, and this endpoint returns the union of plan-level grants plus any per-account overrides.
Use this on app load to decide which UI affordances to show. The flat {feature_key, enabled} shape makes it cheap to Set<string> the enabled keys client-side and check membership with O(1). Calls from admin accounts always return every entitlement as enabled: true (matches the entitled() short-circuit in the server).
The list always carries every entitlement key. An account with no plan gets every key with enabled: false — treat that as "everything gated" and direct the user to billing.
Response (200 OK)
{feature_key, enabled} pairs. Each entitlement appears at most once.team). Omitted on the admin all-enabled list.custom_domains. -1 means unlimited. Omitted for an on/off feature. The same number is in plan_limits on /account/plan.{feature_key, label, expires_at}, soonest first. Empty when nothing is ending. These features also appear in items as enabled: true until expires_at. See Downgrade grace. Not sent on the admin all-enabled list.{feature_key, label, paused, total, limit} — how many of the total are paused, and the plan's count (limit, omitted when the feature has no cap). [] when nothing is paused. Not sent on the admin all-enabled list.{suspended, kind, since} — kind is unpaid, usage, admin, abuse or other (omitted when not suspended). The same object as on /account, readable here by every member. Not sent on the admin all-enabled list.null when nothing is owed; otherwise the date the account will be suspended (suspend_at) and, for a caller with billing access, which invoice is unpaid and how much is owed. The same object as on /account, where every field is described, except that it never carries the invoice's payment link (hosted_invoice_url): pay from Billing → Invoices in the dashboard. Not sent on the admin all-enabled list.Deprecated: until the sunset each item also carries the legacy integer plan_id. Don't use it; read plan.
Entitlement key catalog
The keys below are the stable identifiers checked by the dashboard and api-server. New keys are added by migration as features ship — treat unknown keys as enabled: false. A feature that carries a count (for example custom_domains, firewall_policies, sso) has its effective cap in plan_limits on /account/plan; the key names are listed on /plans.
Domains & certificates
myapp.ngris.com) instead of an ephemeral random one.dev.example.com) with managed DNS + ACME issuance.plan_limits.max_dedicated_ips).Traffic management
redirect.webhook.jwt-validation.plan_limits.max_custom_error_pages).Authentication & access
plan_limits.max_members on /account/plan (active members plus pending invitations, the owner included; -1 means unlimited). On downgrade to a plan without this key, non-owner memberships are suspended.Observability
/traffic/logs*). Without it those endpoints return 403./traffic/security-analytics). Returns 403 without it./traffic/alerts) with email / webhook channels.