Inspector API documentation

Connect domain reputation and analysis results to your application. Start with one domain lookup, then choose the endpoint for the evidence you need.

Keep your API key on your server. Examples below use a placeholder; never put a real key in public source code.

Your first domain lookup

Send JSON with both apikey and domain in the request body. A GET request or a form-encoded body will not perform a domain check.

Domain Intelligence API

POST a JSON object containing your API key and a domain or subdomain. Use a domain name without a URL path.

3 credits per successful check, including Unknown results. API errors do not consume credits.

curl -X POST 'https://inspector.gridinsoft.com/api/v1/domain/check' \
  -H 'Content-Type: application/json' \
  -d '{"apikey":"YOUR_PRIVATE_APIKEY","domain":"example.com"}'

Response fields

FieldMeaning
subject, domainThe normalized domain that was checked.
verdictA category such as Safe, Phishing, Adware Distributor or Unknown. Do not assume there are only three possible verdict strings.
data_availableBoolean. False means there is no usable assessment; it does not mean safe.
score, reputationAliases for the available reputation score (0–100, higher is better), or null. This is not a probability or confidence percentage.
categoryAvailable category identifier, or null. Zero is a valid category (Adult Content), not a missing value.
tagsAvailable category or behavior tags, or null.
dateDate of the available analysis, or null. It is not necessarily the time of this request.
fingerprintAvailable fingerprint value, or null.
whitelistedWhether the available assessment marks the domain as whitelisted.
reportAvailable report reference, or null.

Example: a classified domain

Illustrative response using a reserved example domain. This is a format example, not a finding about a real website.

{
  "subject": "download.example",
  "domain": "download.example",
  "verdict": "Unwanted Application Distributor",
  "data_available": true,
  "score": 15,
  "reputation": 15,
  "category": 8,
  "tags": null,
  "date": "2026-09-27 12:00:00",
  "fingerprint": null,
  "whitelisted": false,
  "report": null
}

Example: no analysis record

{
  "subject": "unknown.example",
  "domain": "unknown.example",
  "verdict": "Unknown",
  "data_available": false,
  "score": null,
  "reputation": null,
  "category": null,
  "tags": null,
  "date": null,
  "fingerprint": null,
  "whitelisted": false,
  "report": null
}

Handle Unknown separately from Safe. Optional context may be null even when a verdict is available. A missing verdict does not guarantee that a new analysis will be completed during the lookup.

Errors and timing

Handle HTTP 400 (invalid input), 401 (authentication), 405 (method), 429 (insufficient credits), and 5xx errors. Response times vary; use timeouts and bounded retries for transient errors. Check your credit balance before retrying a 429 response.

Choose an endpoint

ProductMethod and endpointInputCreditsReference
Domain reputationPOST /api/v1/domain/checkJSON: apikey, domain3Fields and examples
URL analysisPOST /api/v1/url/scanJSON: apikey, url10URL documentation
File analysisPOST /api/v1/file/checkMultipart form: apikey, file5File documentation
Email validationPOST /api/v1/email/checkJSON: apikey, email2Email documentation
Domain searchGET or POST /api/v1/domain/searchQuery parameters or form fields: apikey and q, or supported filters5Search documentation

Charges apply to completed checks and searches, including Unknown domain results. HTTP API errors do not consume credits. Endpoints share your account balance.

URL Analysis reference

How to use?

You need to use the HTTP POST method, sending your data in the form of a JSON object within the body of the request.

POST https://inspector.gridinsoft.com/api/v1/url/scan

Each successful scan costs 10 credits. API errors do not consume credits.

Request:

Field Type Description
apikey String Your unique API key that authenticates requests to our services.
url String A full HTTP or HTTPS URL, including its path when relevant

Example:

You can use various tools or libraries to make this POST request. Here’s how you might typically do it using curl, a command-line tool:

curl -X POST 'https://inspector.gridinsoft.com/api/v1/url/scan' \
    -H 'Content-Type: application/json' \
    -d '{
    "apikey": "YOUR_PRIVATE_APIKEY",
    "url": "https://example.com/path"
    }'

Response:

The JSON response has metadata, security and analysis blocks. Individual fields can be null or empty when information could not be obtained; a missing finding is not a guarantee of safety.

Field Type Description
url String The input URL that was analyzed.
metadata Object Basic information about the page, including title, description, language, and categories.
security Object Critical security indicators:
  • verdict: Available assessment object from Gridinsoft, or null.
  • effective_url: Final destination after all redirects.
  • redirect_chain: Available redirect information.
  • antiviruses_detection: Aggregated detection stats from multiple engines.
  • dns_records: Available DNS records; not a complete DNS history.
  • certificate: Detailed SSL/TLS info (SANs, validity, issuer).
  • jarm & reputation: Advanced technical fingerprints and scores.
analysis Object Additional captured analysis. Available for paid users only; this block is null on the free plan. Individual artifacts may be absent.
  • screenshots: Visual captures (PC & Mobile).
  • network_requests: Captured network request data, when available.
  • cookies & console_logs: Browser environment details.
  • urls_in_html: Available links extracted from the page source.

Response example

Illustrative excerpt using example.com; fields not shown are omitted for readability.

{
  "url": "https://example.com/path",
  "metadata": {"title": "Example page", "description": "", "categories": [], "language": "en"},
  "security": {"effective_url": "https://example.com/path", "redirect_chain": null, "verdict": null},
  "analysis": null
}

A null verdict is unavailable evidence, not a clean verdict. The analysis block is null on a free plan. On paid plans, inspect each artifact for availability before using it.

Allow for variable response times. A full scan can take several seconds or longer; handle HTTP errors and timeouts in your client.

Back to endpoints

File Analysis reference

How to use?

You need to use the POST request with the file data and your API key. The request should be formatted as 'multipart/form-data'.

POST https://inspector.gridinsoft.com/api/v1/file/check

Each successful check costs 5 credits. API errors do not consume credits.

Request:

Field Type Description
apikey String Your unique API key that authenticates requests to our services.
file File The file to be checked, uploaded as multipart/form-data.

Example:

curl -X POST https://inspector.gridinsoft.com/api/v1/file/check \
     -H 'Content-Type: multipart/form-data' \
     -F 'apikey=YOUR_PRIVATE_APIKEY' \
     -F 'file=@/path/to/your/file'

Response:

Field Type Description
sha256 String SHA-256 hash of the file.
md5 String MD5 hash of the file.
filename String Name of the file.
size Integer Size of the file in bytes.
detection String Detection label, or Clean when no detection was returned. Clean is not a guarantee that a file is safe.
type String Available PE identification signatures, or null.
heuristic Object Contains malicious and harmless flags for this result. Available detailed criteria appear in heuristic.analysis on Premium; otherwise that field is null.
PE Object PE data in an executable (EXE) file refers to the Portable Executable format, which is a file format for executables, object code, DLLs, FON Font files, and others used in 32-bit and 64-bit versions of Windows operating systems. Available PE data is included on paid plans; it may be null when not applicable or unavailable.

Back to endpoints

Email Validation reference

How to use?

You need to use the HTTP POST method, sending your data in the form of a JSON object within the body of the request.

POST https://inspector.gridinsoft.com/api/v1/email/check

Each successful check costs 2 credits, including inconclusive results. API errors do not consume credits.

Request:

Field Type Description
apikey String Your unique API key that authenticates requests to our services.
email String The email address you want to validate.

Example:

You can use various tools or libraries to make this POST request. Here's how you might typically do it using curl, a command-line tool:

curl -X POST 'https://inspector.gridinsoft.com/api/v1/email/check' \
    -H 'Content-Type: application/json' \
    -d '{
    "apikey": "YOUR_PRIVATE_APIKEY",
    "email": "[email protected]"
    }'

Response:

Field Type Description
verdict String Validation result: "VALID", "INVALID", "NON_EXISTENT", "RISKY", or "UNKNOWN".
message String Human-readable description of the validation result.
checks Object Detailed checks; account can be null when the SMTP result is inconclusive.
checks.format Boolean Whether the email has a valid format.
checks.service Boolean Whether the domain exists and has MX records.
checks.account Boolean or null SMTP recipient result: true for accepted, false for rejected, null for inconclusive. Acceptance does not prove the mailbox exists or that delivery will succeed.
checks.disposable Boolean Whether the email domain is a known disposable/temporary email provider.
checks.spam Boolean Whether the domain is listed in spam blacklists (DNSBL).
mx_records Array List of MX servers found for the email domain.
account_statusStringaccepted, rejected or unknown when an SMTP check is performed. Can be absent for early validation failures.
details Array SMTP conversation details for debugging purposes.

Example: inconclusive mailbox check

Illustrative response excerpt. A server timeout or policy restriction must not be interpreted as a nonexistent mailbox.

{
  "verdict": "UNKNOWN",
  "account_status": "unknown",
  "checks": {
    "format": true,
    "service": true,
    "account": null,
    "disposable": false,
    "spam": false
  }
}

Catch-all servers may accept recipients that do not have individual mailboxes. Use address confirmation when proof of ownership or deliverability is required.

Back to endpoints

Handle errors without guessing

HTTP statusNext step
400Check required fields, JSON syntax and the input format. Correct the request before retrying.
401Check the API key in your account. Do not expose it in support messages.
405Use the endpoint’s documented HTTP method.
413The uploaded file exceeds the permitted size. Review the File Analysis reference.
429The account has insufficient credits for this operation. Review your balance and allowance date; repeated retries will not add credits.
500 / 502 / 504Processing failed or the analysis service was unavailable or timed out. Use bounded retries with backoff. Check your balance and history before retrying after a lost connection: a completed request might already have consumed credits.

Errors use an HTTP error status and a JSON object with error and message. An HTTP 200 with data_available: false is a completed domain lookup with an Unknown assessment, not an API error.

{"error":"Invalid API key","message":"Invalid API key"}

Completed paid operations expose X-Inspector-Credits-Remaining. Product API responses include X-Inspector-Request-ID for support correlation when they reach the application. Save that reference with your HTTP status. Gateways or a lost connection may prevent these headers from arriving.

Capacity and usage rights

Compare public API subscriptions for regular checks. For local bulk matching, see domain data feeds. Discuss a customer-facing service or confidential processing through a commercial evaluation.

API subscriptions use our standard terms. Paying for a plan does not make submissions private or remove our rights to use and publish analysis. Private processing, customer-facing services, redistribution, and other special rights require written agreement. Discuss your requirements.