Skip to content

Get license status

GET
/license
curl --request GET \
--url https://shoehorn.example.com/api/v1/license

Returns the active license for the calling tenant. Beta tenants also get beta_ends_at, beta_grace_ends_at, and is_read_only populated when applicable.

Current license info

Media type application/json
object
edition
required
string
Allowed values: free beta standard airgapped
type
string
Allowed values: selfhosted saas partner
clusters

Per-license cluster-limit override (0 = use tier default)

integer
licensee
string
issued_at
string format: date-time
expires_at
string format: date-time
nullable
activated_at
string format: date-time
nullable
key_prefix
string
resource_limits
required
object
clusters
required

0 = unlimited

integer
nodes
required

0 = unlimited

integer
resource_usage
Array<object>
object
resource
string
Allowed values: clusters nodes
used
integer
limit

0 = unlimited

integer
percent
integer
warnings
Array<object>
object
type
string
Allowed values: expired expiring_soon resource_high resource_exceeded
message
string
level
string
Allowed values: warning error
is_expired
required
boolean
is_valid
required
boolean
has_license
required
boolean
beta_ends_at

For Beta licenses: when the 6-month free period ends. Floored at 2026-11-10 for legacy Beta licenses so existing customers don’t flip read-only the day per-cluster pricing took over.

string format: date-time
nullable
beta_grace_ends_at

For Beta licenses: when the 30-day post-end grace expires. Set only after the first license-status read past beta_ends_at has marked the grace start. After this timestamp the auto-disconnect job runs.

string format: date-time
nullable
is_read_only
required

True while a Beta tenant is inside the 30-day grace window. UI mutations return 423 BETA_ENDED_READ_ONLY. Catalog reads and agent traffic stay live; license activation also keeps working so the tenant can switch to Standard without restoring writes first.

boolean
Example
{
"edition": "free",
"type": "selfhosted",
"resource_usage": [
{
"resource": "clusters"
}
],
"warnings": [
{
"type": "expired",
"level": "warning"
}
]
}