My Plan & Limits
GET
/v1/account/plan
The plan record for the caller's active account, plus a canonical limits object holding the account's effective limits. Plans and limits are an account property: the values reflect the account the request operates in (the one an API key is scoped to, or the account you last switched to), not a per-user setting.
The plan's own attributes (id, name, slug, pricing, allowed protocols/regions, default domain, dedicated-port allowances, …) are returned flat at the top level — the same record as /plans. The limits object is the authoritative part: its numbers are effective — plan defaults with any active per-account admin override applied on top, exactly the ceilings the edge enforces. An expired override falls back to the plan default automatically. 0 on any limit means unlimited.
The top-level max_bandwidth and max_requests are overlaid with the same effective values for convenience; the per-second rate-limit ceilings appear only under limits. This endpoint returns limits, not consumption — pair it with /account/usage for current-period usage, and /account/entitlements for which features are enabled.
Response (200 OK) — selected top-level fields
Numeric plan ID. Useful for cross-referencing with billing.
Plan slug (free, pro, team, …).
Display name ("Pro", "Team").
Plan price for a single seat. 0 for free plans.
Comma-separated protocols permitted (e.g. "http,tcp"). Empty string = all protocols.
Comma-separated region slugs permitted. Empty string = all regions.
The active account's effective limits (plan defaults with active admin overrides applied). 0 on any field = unlimited. Fields below. This is the canonical limits block.
Other plan fields (
default_domain_id,
default_domain_name,
max_custom_domains,
allow_dedicated_ports,
max_dedicated_ports, …) are included flat — see
/plans for the full schema.
limits object (effective)
Maximum endpoints the account may have.
Maximum concurrent tunnels (connected agents).
Maximum concurrent client connections across the account.
Monthly bandwidth quota in bytes (in + out). Resets each billing period. Overridable.
Monthly request quota (count). Resets each billing period. Overridable.
Sustained account-wide request rate, requests per second. Overridable.
Token-bucket burst size allowed above the sustained rate. Overridable.
Per-endpoint sustained request rate, requests per second. Overridable.
Maximum in-flight requests at any instant across the account. Overridable.
Errors
No active account on the request context.
The active account's plan record is missing, or the account was deleted mid-request.
Database error resolving the effective limits.
curl "https://api.ngris.com/v1/account/plan" \
-H "X-API-KEY: <your_api_key>"
from ngris import Ngris
client = Ngris(api_key="<your_api_key>")
plan = client.account.get_plan()
print(plan["limits"]["max_endpoints"])
{
"id": 3,
"name": "Pro",
"slug": "pro",
"price_monthly": 29,
"price_yearly": 290,
"allowed_protocols": "http,tcp",
"allowed_regions": "",
"max_custom_domains": 10,
"allow_dedicated_ports": true,
"max_dedicated_ports": 5,
"max_bandwidth": 107374182400,
"max_requests": 50000,
"limits": {
"max_endpoints": 20,
"max_tunnels": 10,
"max_connections": 5000,
"max_bandwidth": 107374182400,
"max_requests": 50000,
"rate_limit_rps": 100,
"rate_limit_burst": 200,
"rate_limit_per_endpoint_rps": 50,
"max_concurrent_requests": 500
}
}