Plan summary per domain
GET
/features
const url = 'https://api.nsin.ir/features';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.nsin.ir/features \ --header 'Authorization: Bearer <token>'One row per domain you own (shared domains are not included), with the
plan it is on, the subscription status and when it expires — a cheap
overview. For what a domain’s plan actually allows use
GET /domains/{domain}/features.
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”Per-domain plan summary.
Media type application/json
object
domains
Array<object>
object
id
integer
name
string
plan_slug
string
plan_name
string
status
string
expires_at
string format: date-time
Example generated
{ "domains": [ { "id": 1, "name": "example", "plan_slug": "example", "plan_name": "example", "status": "example", "expires_at": "2026-04-15T12:00:00Z" } ]}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"}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"}