Skip to content
nsin docs

Outstanding recommendations across every domain

GET
/recommendations/overview
curl --request GET \
--url https://api.nsin.ir/recommendations/overview \
--header 'Authorization: Bearer <token>'

The account-wide checklist: one entry per domain you can see that has at least one outstanding item (warn, not dismissed by you). Domains with nothing outstanding are omitted — summary.domains still counts them.

This endpoint never computes a checklist while you wait. It reads the per-domain cache the other endpoints fill and, for domains with nothing cached yet, starts a few background computes per call and reports them in pending; poll while computing is true and the list fills in. The assembled answer is then cached per caller for 5 minutes, so one request covers the whole account however many domains it has.

Outstanding items per domain.

Media type application/json
object
data
Array<object>
object
domain_id
integer
domain
string
items

Outstanding items only, worst severity first.

Array<object>
object
key

Stable identifier — pass it to the dismiss endpoints. New checks are added over time, so treat this as an open set rather than a closed enum.

string
Allowed values: cache_off slow_response errors_5xx images_not_webp ssl_expiring ssl_upload_expired no_robots no_sitemap no_https_redirect no_records apex_unreachable www_unreachable www_redirect_bypassed proxy_none proxy_off ai_markdown bot_cache_off origin_protocol origin_ip_allowlist gateway_quota traffic_quota uptime_sms external_dns_unreachable external_dns_use_cname
status

ok is a passing check; warn needs action.

string
Allowed values: ok warn
severity

Also decides dismissal: low can be hidden for good, medium for 7 days, high not at all.

string
Allowed values: high medium low
category

plan covers what a subscription buys — the gateway and traffic allowances, and entitlements such as uptime alerts by SMS.

string
Allowed values: speed seo reachability security plan
title
string
detail
string
stats

Supporting figures behind the finding.

object
key
additional properties
any
action

Where to go to act on the recommendation. Either feature (a screen in the panel) or url (a page outside it), never both.

object
label
string
feature

Logical target, e.g. cache.

string
url

Absolute link to a page outside the panel — the published edge IP list, a documentation page — for a fix that is not a panel screen.

string format: uri
query

Parameters that pre-filter the target view.

object
key
additional properties
string
dismissed

Dismissed by the calling user. Dismissals are per user, not per domain.

boolean
dismissible

Whether this item may be dismissed at all. False for every passing check and for every high warning — dismissing one of those is refused with 409, and has no effect even if a row exists.

boolean
dismissed_until

Present only while a time-limited (medium) dismissal is in force: when the item comes back. A low dismissal never expires, so it has no date.

string format: date-time
passing

Checks that passed (or were dismissed) on this domain.

integer
checked_at

When this domain’s checklist was last computed.

string format: date-time
summary
object
domains

Domains looked at.

integer
affected

Domains with at least one outstanding item.

integer
issues
integer
high
integer
medium
integer
low
integer
pending

Domains whose checklist has not been computed yet.

integer
computing

True while pending is above zero. The list is incomplete: the domains still being checked may hold items that are not in data yet, so this is “still looking”, not “all clear”.

boolean
generated_at
string format: date-time
Example
{
"data": [
{
"items": [
{
"key": "cache_off",
"status": "ok",
"severity": "high",
"category": "speed"
}
]
}
]
}

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"
}