Skip to content
nsin docs

Get the domain's effective plan entitlements

GET
/domains/{domain}/features
curl --request GET \
--url https://api.nsin.ir/domains/example.com/features \
--header 'Authorization: Bearer <token>'

What this domain’s plan actually allows — the resolved values after any per-subscription overrides, so this is the authority on whether a feature is available.

A limit of null means unlimited. Use this before calling a gated endpoint rather than inferring capability from the plan name. Readable by shared members.

domain
required
string

The domain name (for example example.com) — not a numeric id.

Example
example.com

Effective entitlements.

Media type application/json

The domain’s effective entitlements, after per-subscription overrides. A null limit means unlimited.

object
plan_id

The plan in force. Absent without an active plan.

integer
plan_name

Its display name.

string
plan_slug

Its stable identifier.

string
has_active_plan

Whether the domain has an active (or grace) plan at all. Without one, plan-gated features answer 402.

boolean
max_records

Null means unlimited.

integer
max_traffic_gb

Null means unlimited.

integer
max_rules_per_set

Rules allowed per rule type. Null means unlimited.

integer
max_gateway_requests_30d

Requests this domain’s gateway records may serve in a rolling 30-day window. Null means unlimited. See the gateway list endpoint for usage against it.

integer | null
max_gateway_gb_30d

Egress, in GB, this domain’s gateway records may serve in a rolling 30-day window. Null means unlimited.

integer | null
max_cache_cap_mb

Ceiling for the domain’s cache_cap_mb — the largest response body cached.

integer
max_cache_disk_gb

Ceiling for the domain’s cache_l2_max_gb — the size of its cache pool.

integer
max_cache_ttl_days

Ceiling for the domain’s cache_l2_ttl_days — how long a cached entry may live.

integer
disabled_rule_types

Rule types this plan does not include, by rule type string (for example origin_pool, origin_route, optimize). A DENY list: any type not listed is available. A rule of a listed type can still be created and edited, but it is saved switched off and cannot be switched on; rules of a type the plan stops including are switched off (not deleted) when the plan changes.

Array<string>
gateways_enabled

Gates the Gateways feature.

boolean
logs_enabled

Gates the raw-log and top-N analytics endpoints.

boolean
monitoring_enabled

Gates most analytics sections.

boolean
rules_enabled

Whether the plan includes edge rules at all. When false, every rule type is locked the way disabled_rule_types describes.

boolean
cache_purge_enabled

Gates the cache purge endpoints.

boolean
bot_cache_enabled

Gates the domain’s bot cache (bot_cache_enabled on Domain).

boolean
email_routing_enabled

Gates Email Routing (the /email-routing endpoints).

boolean
max_email_rules

Custom email addresses this domain may hold. Null means unlimited.

integer | null
max_email_forwards_per_day

Messages this domain may forward per UTC day. Null means unlimited. Past it, the mail hosts defer (SMTP 452) until the day rolls over.

integer | null
email_sending_enabled

Gates sending mail from the domain’s addresses (the email routing send endpoint).

boolean
max_email_sends_per_day

Recipients this domain may send to per UTC day. Null means unlimited.

integer | null
max_custom_rules

Custom (expression) firewall rules this domain may hold. Null means unlimited, 0 that the plan has no custom rules. After a downgrade the extra rules are kept, but no more can be created or switched on. The current count is domain_usage[].custom_rule_count.

integer | null
under_attack_allowed

The domain may switch on Under Attack Mode (PUT /domains/{domain}/under-attack). On for every plan unless support switches it off.

boolean
custom_ssl_enabled

Gates custom certificate upload.

boolean
ws_enabled

WebSocket support.

boolean
host_header_edit_enabled

Gates the Host-header override on records (host_header).

boolean
uptime_sms_enabled

Whether uptime outage/recovery alerts may be delivered by SMS. When false they still go out by email and to the panel — uptime monitoring itself is not gated.

boolean
dedicated_support_enabled

Direct support when true; ticket support when false.

boolean
shield_enabled

Whether the plan includes the default NSIN Shield WAF rule (see GET /domains/{domain}/rules/waf/shield/status).

boolean
gateway_requests_30d

Requests the domain’s gateways served in the rolling 30-day window. Present when the plan includes gateways, or while the domain is blocked by the gateway quota.

integer format: int64
gateway_bytes_30d

Egress bytes of the gateways over the same window — a meter, not a separate charge.

integer format: int64
gateway_quota_exceeded

The gateway allowance is spent; the gateway hostnames answer 429.

boolean
gateway_quota_reason

Which gateway allowance ran out.

string
Allowed values: requests bytes
gateway_quota_counted_at

When the gateway usage was last counted.

string format: date-time
domain_usage

Current usage against the limits above.

Array<object>
object
key
additional properties
any
plan_term_id
integer
billing_duration_days
integer
quota_reset_days
integer
quota_period_start
string format: date-time
quota_period_end
string format: date-time
Example
{
"gateway_quota_reason": "requests"
}

Missing domain.

Media type application/json

The single error shape used by every endpoint.

object
error
required

Human-readable description of what went wrong.

string
Example
{
"error": "read-only API key"
}

Missing, malformed, revoked or expired API key. (A valid key whose account has been deactivated gets 403 account is inactive instead.)

Media type application/json

The single error shape used by every endpoint.

object
error
required

Human-readable description of what went wrong.

string
Examples
Example invalidKey
{
"error": "invalid API key"
}

No such domain, or it is not visible to this account. Domains you cannot access are reported as not found rather than forbidden.

Media type application/json

The single error shape used by every endpoint.

object
error
required

Human-readable description of what went wrong.

string
Example
{
"error": "read-only API key"
}

The key exceeded its request budget (300 requests per minute by default).

Media type application/json

The single error shape used by every endpoint.

object
error
required

Human-readable description of what went wrong.

string
Examples
Example limited
{
"error": "rate limit exceeded"
}