{ "code": "0", "status": "ok", "data": { "request_id": "85cb060e-75cf-4d75-887f-c23f2fc45106", "has_result": true, "polling_interval": 0, "risk_level": 0, "risk_name": "Trusted", "risk_detail": [ { "name": "is_in_wlist", "value": "The dApp is relatively safe based on the threat intelligence." } ] }}
Synchronous endpointAssess the threat-intelligence risk of a domain or URL. Optionally add a liveness check that asks whether a visitor would see usable content.
This endpoint analyzes domains and URLs, so it does not accept chain_id.
HashDit-owned request fields are documented in snake_case. Equivalent camelCase input remains accepted for compatibility.
ISO 8601 timestamp of the availability check, or null when unavailable.
The availability result is per host, so URLs sharing a host share one availability answer. accessible asks whether a visitor would see usable content; a working server alone is not sufficient.liveness maps from liveness_detail.status: accessible → alive, not_accessible → dead, and unknown when no determination is available or the policy is evidence.
Absence is not negative. If the check could not run, liveness and liveness_detail are omitted. Treat a missing field as “no answer”, never as “not accessible”.
liveness_policy resolves one uncertainty: the check was blocked and cannot tell whether a visitor would have been. Definite observations such as 404, a sale placeholder, or a domain that does not resolve are read the same under every policy.
Policy
On a blocked check
Use when
lenient (default)
accessible
Warning users. A site that only blocks automation can still work for a person.
strict
not_accessible
Vetting submitted sites. Expect some legitimate sites to require manual review.
evidence
status is null
You want http_status without a HashDit availability verdict.
Changing this policy never changes risk_level. A bot-protected site can return the same http_status: 403 under both policies while the availability interpretation differs.
liveness_check: false is the fast path. A liveness check adds latency; a recently checked host normally answers quickly, while a new host can return unknown as the result is prepared in the background. A later request can then use the cached result.Results are cached per host. last_scanned_at describes when the availability check ran, not when the current API response was generated. Apply your own freshness threshold when needed.
All errors use the standard code, status, and detail envelope.
HTTP
Cause
Client action
400
url is missing, empty, or cannot be parsed
Correct the request; do not retry unchanged.
401 / 403
Missing or invalid API key
Fix authentication.
422
Invalid liveness_policy or an unrecognized field
Correct the request schema.
429
Rate limit exceeded
Retry with exponential backoff and jitter.
500
Internal error
Retry a bounded number of times; include request_id in support requests.
A liveness-check failure does not fail the risk request. The API can return HTTP 200 with the risk verdict intact and omit the two liveness fields.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"HashDit API Documentation","colors":{"primary":"#000000","light":"#7B93FF","dark":"#4063FF"},"logo":{"light":"https://mintcdn.com/hashdit/e2aqOz3kgheFaA6s/images/HashDitLogo.svg?fit=max\u0026auto=format\u0026n=e2aqOz3kgheFaA6s\u0026q=85\u0026s=7a9dd78fd2333ba181ff121df47e1fc1","dark":"https://mintcdn.com/hashdit/e2aqOz3kgheFaA6s/images/HashDitLogo.svg?fit=max\u0026auto=format\u0026n=e2aqOz3kgheFaA6s\u0026q=85\u0026s=7a9dd78fd2333ba181ff121df47e1fc1"},"favicon":"https://mintcdn.com/hashdit/X1tf79Epn6gAycQ4/favicon.svg?fit=max\u0026auto=format\u0026n=X1tf79Epn6gAycQ4\u0026q=85\u0026s=61edaedec3378b17c771d60c971ceebd","api":{"examples":{"prefill":true},"mdx":{"auth":{"method":"key","name":"X-API-KEY"},"server":"https://service.hashdit.io"}},"navbar":{"links":[{"href":"mailto:support@hashdit.io","label":"Support"}],"primary":{"type":"button","label":"HashDit.io","href":"https://www.hashdit.io"}},"footer":{"socials":{"website":"https://www.hashdit.io","x":"https://x.com/hashdit","github":"https://github.com/hashdit"}},"seo":{"metatags":{"canonical":"https://docs.hashdit.io/"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hashdit","hasAudioNarration":false,"actualSubdomain":"hashdit","customDomains":["docs.hashdit.io"],"gitSource":{"type":"github","owner":"matrix-devs","repo":"hashdit-docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad308e855791369b484ddd6","collectionId":"7fdcca7b-37a0-4ec4-979f-6171e5105c85","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad308e855791369b484ddd6"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6ad308e855791369b484ddd6","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Blog","count":44},{"language":"default","tag":"Latest Posts","count":44},{"language":"default","tag":"HashDit APIs","count":15},{"language":"default","tag":"Endpoints","count":13},{"language":"default","tag":"Address Poisoning Detection","count":3},{"language":"default","tag":"Address Classification","count":2},{"language":"default","tag":"Transaction Security","count":2},{"language":"default","tag":"API Documentation","count":2},{"language":"default","tag":"Address Security v2","count":1},{"language":"default","tag":"Domain Security","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"[data-tron-only-styled=true]{text-transform:uppercase}[data-new-field-styled=true],[data-tron-only-styled=true]{display:inline-flex!important;align-items:center;justify-content:center;padding:.125rem .5rem!important;border-radius:.375rem!important;font-size:.6875rem!important;font-weight:600!important;line-height:1rem!important;letter-spacing:.025em;white-space:nowrap}[data-tron-only-styled=true]{background-color:rgb(124 58 237/.12)!important;color:#7c3aed!important}.dark [data-tron-only-styled=true]{background-color:rgb(167 139 250/.18)!important;color:#c4b5fd!important}[data-new-field-styled=true]{background-color:rgb(22 163 74/.12)!important;color:#15803d!important;text-transform:lowercase}.dark [data-new-field-styled=true]{background-color:rgb(34 197 94/.18)!important;color:#86efac!important}[data-not-simulated-styled=true]{background-color:rgb(234 88 12/.12)!important;color:#ea580c!important}.dark [data-not-simulated-styled=true]{background-color:rgb(234 88 12/.18)!important;color:#fdba74!important}@media (min-width:1024px){:root{--sidebar-width:18rem;--toc-width:0rem;--column-gap:3.5rem;--edge-min:1.5rem;--cluster-left:var(--edge-min);--cluster-right:var(--edge-min);--article-width:calc(\n\t\t\t100vw - var(--sidebar-width) - var(--column-gap) - 2 * var(--edge-min)\n\t\t);--toc-left:calc(100% - var(--toc-width) - var(--edge-min))}#navbar{width:100vw!important;max-width:none!important;left:0!important;right:0!important}#navbar [class*=max-w-],#navbar [class*=px-12]{width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important}#navbar,#navbar [class*=h-16],#navbar [class*=max-w-]{padding-left:0!important;padding-right:0!important}#navbar [class*=h-12],#navbar [class*=h-16]>[class*=border-b]{padding-left:var(--cluster-left)!important;padding-right:var(--cluster-right)!important}:has(>#content-container){padding-left:0!important;padding-right:0!important;max-width:none!important;width:100%!important;gap:0!important}#content-container{width:100%!important;max-width:none!important}#sidebar{position:fixed!important;top:7rem;left:var(--cluster-left);z-index:20;box-sizing:border-box;width:var(--sidebar-width);height:calc(100vh - 7rem);padding-left:0;padding-right:0;overflow:auto}#content-area{margin-left:0!important;padding-left:0!important;padding-right:0!important;width:100%!important;max-width:none!important}#content-area>#content,#content-area>#footer,#content-area>#header,#content-area>#pagination,#content-area>.feedback-toolbar,#content-area>.mdx-content,#content-area>[id*=api-playground]{max-width:var(--article-width);width:100%;margin-left:calc(var(--cluster-left) + var(--sidebar-width) + var(--column-gap))!important;margin-right:var(--cluster-right)!important}}@media (min-width:1024px) and (max-width:1279px){:root{--edge-min:2.5rem}}@media (max-width:1023px){:root{--edge-min:2.5rem}#navbar [class*=mx-4]{margin-left:0!important;margin-right:0!important}#navbar [class*=h-16]>[class*=border-b]{padding-left:var(--edge-min)!important;padding-right:var(--edge-min)!important}:has(>#content-container){padding-left:var(--edge-min)!important;padding-right:var(--edge-min)!important}}#wide-page-toc-layout{display:none}@media (min-width:1280px){:root{--toc-width:19rem;--side-space:max(\n\t\t\tvar(--sidebar-width) + var(--column-gap),\n\t\t\tvar(--toc-width) + var(--column-gap)\n\t\t);--article-width:min(\n\t\t\t52rem,\n\t\t\tcalc(100vw - 2 * var(--side-space) - 2 * var(--edge-min))\n\t\t);--cluster-left:max(\n\t\t\tvar(--edge-min),\n\t\t\tcalc(50% - (var(--article-width) / 2) - var(--column-gap) - var(--sidebar-width))\n\t\t);--cluster-right:max(\n\t\t\tvar(--edge-min),\n\t\t\tcalc(50% - (var(--article-width) / 2) - var(--column-gap) - var(--toc-width))\n\t\t);--toc-left:min(\n\t\t\tcalc(50% + (var(--article-width) / 2) + var(--column-gap)),\n\t\t\tcalc(100% - var(--toc-width) - var(--edge-min))\n\t\t)}#wide-page-toc-layout{display:flex;flex:0 0 0;flex-direction:column;position:fixed;top:9.5rem;left:var(--toc-left);right:auto;z-index:21;box-sizing:border-box;width:15rem;min-width:15rem;max-width:15rem;height:calc(100vh - 10.25rem);padding:0;overflow:auto}:has(>#content-side-layout),:has(>#wide-page-toc-layout){gap:0!important}:has(>#content-area):not(:has(>#content-side-layout))>#content-area{min-width:0!important;width:100%!important;max-width:none!important;flex:1 1 auto!important;padding-left:0!important;padding-right:0!important}#content-container:not(:has(#content-side-layout)){max-width:none!important}#content-side-layout{position:fixed!important;top:9.5rem;left:var(--toc-left);right:auto!important;z-index:21;box-sizing:border-box;width:var(--toc-width);min-width:var(--toc-width);max-width:var(--toc-width);height:calc(100vh - 10.25rem);margin-right:0!important;overflow:auto}}.wide-page-toc-title{margin:0 0 .5rem;font-size:.875rem;font-weight:500;line-height:1.5rem;color:#374151}.dark #wide-page-toc-list [data-wide-toc-item] a:hover,.dark .wide-page-toc-title{color:#d1d5db}#wide-page-toc-list{margin:0;padding:0;list-style:none}#wide-page-toc-list [data-wide-toc-item] a{display:block;padding:.25rem 0;font-size:.875rem;line-height:1.5rem;color:#4b5563;text-decoration:none;word-break:break-word}.dark #wide-page-toc-list [data-wide-toc-item] a{color:#9ca3af}#wide-page-toc-list [data-wide-toc-item][data-depth='1'] a{padding-left:.75rem}#wide-page-toc-list [data-wide-toc-item][data-depth='2'] a{padding-left:1.5rem}#wide-page-toc-list [data-wide-toc-item] a:hover{color:#111827}#wide-page-toc-list [data-wide-toc-item][data-active] a{color:#4063ff;text-shadow:-.15px 0 0 currentColor,.15px 0 0 currentColor}.dark #wide-page-toc-list [data-wide-toc-item][data-active] a{color:#7b93ff}.api-lifecycle-source{display:none}.api-lifecycle-badge{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;flex:0 0 auto;width:3.5rem;min-width:3.5rem;height:1.375rem;margin-left:.75rem;padding:0 .25rem;border:1px solid currentColor;border-radius:.4375rem;text-align:center;font-size:.65rem;font-weight:700;line-height:1;letter-spacing:.04em;vertical-align:.25em;white-space:nowrap}.api-lifecycle-badge[data-lifecycle=sync]{color:#15803d}.api-lifecycle-badge[data-lifecycle=async]{color:#a16207}.dark .api-lifecycle-badge[data-lifecycle=sync]{color:#86efac}.dark .api-lifecycle-badge[data-lifecycle=async]{color:#fde047}@media (max-width:640px){#page-title{white-space:normal;overflow-wrap:anywhere}}"}],"page":{"pagePath":"api-reference/endpoint/domain-security","slug":"/api-reference/endpoint/domain-security","pageMetadata":{"title":"Domain Security","api":"POST /v2/hashdit/domain-security","mode":"wide","description":null,"href":"/api-reference/endpoint/domain-security"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,Info,Note,ParamField,ResponseField,Table}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(`span`,{className:`api-lifecycle-source`,\"data-lifecycle\":`sync`,children:`Synchronous endpoint`}),`\n`,_jsx(_components.p,{children:`Assess the threat-intelligence risk of a domain or URL. Optionally add a liveness check that asks whether a visitor would see usable content.`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`This endpoint analyzes domains and URLs, so it does not accept `,_jsx(_components.code,{children:`chain_id`}),`.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`HashDit-owned request fields are documented in `,_jsx(_components.code,{children:`snake_case`}),`. Equivalent camelCase input remains accepted for compatibility.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`quick-start`,children:`Quick Start`}),`\n`,_jsxs(_components.p,{children:[`The minimum request sends only `,_jsx(_components.code,{children:`url`}),`.`]}),`\n`,`\n`,`\n`,_jsx(Heading,{level:`2`,id:`request-fields`,children:`Request Fields`}),`\n`,_jsx(ParamField,{header:`X-API-KEY`,type:`string`,required:true,id:`param-x-api-key`,children:_jsxs(_components.p,{children:[`Your HashDit API key. Missing keys return HTTP `,_jsx(_components.code,{children:`401`}),`; a legacy gateway can return `,_jsx(_components.code,{children:`403`}),` for a rejected key. Keep the key on a trusted server.`]})}),`\n`,_jsx(ParamField,{body:`url`,type:`string`,required:true,id:`param-url`,children:_jsx(_components.p,{children:`Domain or URL to analyze. A scheme, path, and query string are accepted and normalized.`})}),`\n`,_jsx(ParamField,{body:`liveness_check`,type:`boolean`,default:`false`,id:`param-liveness-check`,children:_jsx(_components.p,{children:`Add a usable-content availability check. This increases latency.`})}),`\n`,_jsx(ParamField,{body:`liveness_policy`,type:`string`,default:`lenient`,id:`param-liveness-policy`,children:_jsxs(_components.p,{children:[`How to interpret a check blocked by bot protection: `,_jsx(_components.code,{children:`lenient`}),`, `,_jsx(_components.code,{children:`strict`}),`, or `,_jsx(_components.code,{children:`evidence`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response Fields`}),`\n`,_jsx(ResponseField,{name:`code`,type:`string`,required:true,id:`param-code`,children:_jsxs(_components.p,{children:[`API result code. `,_jsx(_components.code,{children:`\"0\"`}),` indicates success; non-zero values indicate an error.`]})}),`\n`,_jsx(ResponseField,{name:`status`,type:`string`,required:true,id:`param-status`,children:_jsxs(_components.p,{children:[`Request status. A successful completed response returns `,_jsx(_components.code,{children:`\"ok\"`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`data.request_id`,type:`string`,id:`param-data-request-id`,children:_jsx(_components.p,{children:`Unique request identifier to include in support requests.`})}),`\n`,_jsx(ResponseField,{name:`data.has_result`,type:`boolean`,id:`param-data-has-result`,children:_jsx(_components.p,{children:`Whether a domain risk result was immediately available.`})}),`\n`,_jsx(ResponseField,{name:`data.polling_interval`,type:`number`,id:`param-data-polling-interval`,children:_jsxs(_components.p,{children:[`Seconds to wait before retrying when `,_jsx(_components.code,{children:`has_result`}),` is `,_jsx(_components.code,{children:`false`}),`; otherwise `,_jsx(_components.code,{children:`0`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`data.risk_level`,type:`integer`,id:`param-data-risk-level`,children:_jsx(_components.p,{children:`Numeric threat-intelligence risk level.`})}),`\n`,_jsx(ResponseField,{name:`data.risk_name`,type:`string`,id:`param-data-risk-name`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),`\n`,_jsx(ResponseField,{name:`data.risk_detail`,type:`object[]`,id:`param-data-risk-detail`,children:_jsxs(_components.p,{children:[`Triggered threat-intelligence indicators. Use each item’s `,_jsx(_components.code,{children:`name`}),` for application logic.`]})}),`\n`,_jsxs(Expandable,{title:`Risk detail fields`,children:[_jsx(ResponseField,{name:`data.risk_detail[].name`,type:`string`,id:`param-data-risk-detail-name`,children:_jsx(_components.p,{children:`Stable threat-intelligence category identifier.`})}),_jsx(ResponseField,{name:`data.risk_detail[].value`,type:`string`,id:`param-data-risk-detail-value`,children:_jsx(_components.p,{children:`Human-readable explanation of the matched indicator.`})})]}),`\n`,_jsx(ResponseField,{name:`data.liveness`,type:`string`,id:`param-data-liveness`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`alive`}),`, `,_jsx(_components.code,{children:`dead`}),`, or `,_jsx(_components.code,{children:`unknown`}),` when `,_jsx(_components.code,{children:`liveness_check`}),` was requested and a result is available.`]})}),`\n`,_jsx(ResponseField,{name:`data.liveness_detail`,type:`object`,id:`param-data-liveness-detail`,children:_jsx(_components.p,{children:`Availability status, policy, observed HTTP status, and scan timestamp.`})}),`\n`,_jsxs(Expandable,{title:`Liveness detail fields`,children:[_jsx(ResponseField,{name:`data.liveness_detail.status`,type:`string | null`,id:`param-data-liveness-detail-status`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`accessible`}),`, `,_jsx(_components.code,{children:`not_accessible`}),`, or `,_jsx(_components.code,{children:`null`}),` when the selected policy preserves uncertainty.`]})}),_jsx(ResponseField,{name:`data.liveness_detail.policy`,type:`string`,id:`param-data-liveness-detail-policy`,children:_jsxs(_components.p,{children:[`Applied policy: `,_jsx(_components.code,{children:`lenient`}),`, `,_jsx(_components.code,{children:`strict`}),`, or `,_jsx(_components.code,{children:`evidence`}),`.`]})}),_jsx(ResponseField,{name:`data.liveness_detail.http_status`,type:`integer | null`,id:`param-data-liveness-detail-http-status`,children:_jsxs(_components.p,{children:[`Observed HTTP status, or `,_jsx(_components.code,{children:`null`}),` when no HTTP response was reached.`]})}),_jsx(ResponseField,{name:`data.liveness_detail.last_scanned_at`,type:`string | null`,id:`param-data-liveness-detail-last-scanned-at`,children:_jsxs(_components.p,{children:[`ISO 8601 timestamp of the availability check, or `,_jsx(_components.code,{children:`null`}),` when unavailable.`]})})]}),`\n`,_jsxs(_components.p,{children:[`The availability result is per host, so URLs sharing a host share one availability answer. `,_jsx(_components.code,{children:`accessible`}),` asks whether a visitor would see usable content; a working server alone is not sufficient.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`liveness`}),` maps from `,_jsx(_components.code,{children:`liveness_detail.status`}),`: `,_jsx(_components.code,{children:`accessible`}),` → `,_jsx(_components.code,{children:`alive`}),`, `,_jsx(_components.code,{children:`not_accessible`}),` → `,_jsx(_components.code,{children:`dead`}),`, and `,_jsx(_components.code,{children:`unknown`}),` when no determination is available or the policy is `,_jsx(_components.code,{children:`evidence`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Absence is not negative.`}),` If the check could not run, `,_jsx(_components.code,{children:`liveness`}),` and `,_jsx(_components.code,{children:`liveness_detail`}),` are omitted. Treat a missing field as “no answer”, never as “not accessible”.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-use-the-response`,children:`How to Use the Response`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`risk_level`}),` and `,_jsx(_components.code,{children:`risk_name`}),` for the top-level domain decision.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`risk_detail[].name`}),` for application logic and `,_jsx(_components.code,{children:`value`}),` for user-facing context.`]}),`\n`,_jsxs(_components.li,{children:[`If you request liveness, treat it as an availability signal independent from `,_jsx(_components.code,{children:`risk_level`}),`.`]}),`\n`,_jsx(_components.li,{children:`A low risk result is a point-in-time threat-intelligence assessment, not a guarantee that every path or future page is safe.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`risk-level-reference`,children:`Risk Level Reference`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`risk_level`})}),_jsx(_components.th,{children:_jsx(_components.code,{children:`risk_name`})}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`-1`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Unknown`})}),_jsx(_components.td,{children:`No verdict could be formed; do not treat this as safe.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Trusted`})}),_jsx(_components.td,{children:`The domain is affirmatively trusted by HashDit threat intelligence.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`No Obvious Risk`})}),_jsx(_components.td,{children:`No configured signal produced a stronger verdict.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`2`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Low Risk`})}),_jsx(_components.td,{children:`Low-severity risk signals were detected.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`3`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Medium Risk`})}),_jsx(_components.td,{children:`Material risk signals require user attention.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`High Risk`})}),_jsx(_components.td,{children:`Strong risk signals were detected.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`5`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Significant Risk`})}),_jsx(_components.td,{children:`The highest-severity risk signals were detected.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-a-liveness-policy`,children:`Choosing a Liveness Policy`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`liveness_policy`}),` resolves one uncertainty: the check was blocked and cannot tell whether a visitor would have been. Definite observations such as `,_jsx(_components.code,{children:`404`}),`, a sale placeholder, or a domain that does not resolve are read the same under every policy.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Policy`}),_jsx(_components.th,{children:`On a blocked check`}),_jsx(_components.th,{children:`Use when`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`lenient`}),` (default)`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`accessible`})}),_jsx(_components.td,{children:`Warning users. A site that only blocks automation can still work for a person.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`strict`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`not_accessible`})}),_jsx(_components.td,{children:`Vetting submitted sites. Expect some legitimate sites to require manual review.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`evidence`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`null`})]}),_jsxs(_components.td,{children:[`You want `,_jsx(_components.code,{children:`http_status`}),` without a HashDit availability verdict.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Changing this policy never changes `,_jsx(_components.code,{children:`risk_level`}),`. A bot-protected site can return the same `,_jsx(_components.code,{children:`http_status: 403`}),` under both policies while the availability interpretation differs.`]}),`\n`,_jsx(Heading,{level:`2`,id:`latency-and-cache-age`,children:`Latency and Cache Age`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`liveness_check: false`}),` is the fast path. A liveness check adds latency; a recently checked host normally answers quickly, while a new host can return `,_jsx(_components.code,{children:`unknown`}),` as the result is prepared in the background. A later request can then use the cached result.`]}),`\n`,_jsxs(_components.p,{children:[`Results are cached per host. `,_jsx(_components.code,{children:`last_scanned_at`}),` describes when the availability check ran, not when the current API response was generated. Apply your own freshness threshold when needed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The availability answer is per host, not per path.`}),`\n`,_jsx(_components.li,{children:`A block against automated checks cannot prove the site is blocked for a human visitor.`}),`\n`,_jsx(_components.li,{children:`A determined site can serve different content to security infrastructure and users.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Availability is a useful signal, but should not be the only input to a security decision.`}),`\n`,_jsx(Heading,{level:`2`,id:`errors-and-retry-guidance`,children:`Errors and Retry Guidance`}),`\n`,_jsxs(_components.p,{children:[`All errors use the standard `,_jsx(_components.code,{children:`code`}),`, `,_jsx(_components.code,{children:`status`}),`, and `,_jsx(_components.code,{children:`detail`}),` envelope.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`Cause`}),_jsx(_components.th,{children:`Client action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`url`}),` is missing, empty, or cannot be parsed`]}),_jsx(_components.td,{children:`Correct the request; do not retry unchanged.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`401`}),` / `,_jsx(_components.code,{children:`403`})]}),_jsx(_components.td,{children:`Missing or invalid API key`}),_jsx(_components.td,{children:`Fix authentication.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`422`})}),_jsxs(_components.td,{children:[`Invalid `,_jsx(_components.code,{children:`liveness_policy`}),` or an unrecognized field`]}),_jsx(_components.td,{children:`Correct the request schema.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`429`})}),_jsx(_components.td,{children:`Rate limit exceeded`}),_jsx(_components.td,{children:`Retry with exponential backoff and jitter.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`500`})}),_jsx(_components.td,{children:`Internal error`}),_jsxs(_components.td,{children:[`Retry a bounded number of times; include `,_jsx(_components.code,{children:`request_id`}),` in support requests.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A liveness-check failure does not fail the risk request. The API can return HTTP `,_jsx(_components.code,{children:`200`}),` with the risk verdict intact and omit the two liveness fields.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Domain Security","api":"POST /v2/hashdit/domain-security","mode":"wide","description":null,"href":"/api-reference/endpoint/domain-security"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Info,Note,ParamField,RequestExample,ResponseExample,ResponseField,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(`span`,{className:`api-lifecycle-source`,\"data-lifecycle\":`sync`,children:`Synchronous endpoint`}),`\n`,_jsx(_components.p,{children:`Assess the threat-intelligence risk of a domain or URL. Optionally add a liveness check that asks whether a visitor would see usable content.`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`This endpoint analyzes domains and URLs, so it does not accept `,_jsx(_components.code,{children:`chain_id`}),`.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`HashDit-owned request fields are documented in `,_jsx(_components.code,{children:`snake_case`}),`. Equivalent camelCase input remains accepted for compatibility.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`quick-start`,children:`Quick Start`}),`\n`,_jsxs(_components.p,{children:[`The minimum request sends only `,_jsx(_components.code,{children:`url`}),`.`]}),`\n`,_jsx(RequestExample,{children:_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://service.hashdit.io/v2/hashdit/domain-security`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-API-KEY: YOUR_API_KEY'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"url\": \"https://pancakeswap.finance/\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`200`,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ok\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"request_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"85cb060e-75cf-4d75-887f-c23f2fc45106\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"has_result\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"polling_interval\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"risk_level\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"risk_name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Trusted\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"risk_detail\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"is_in_wlist\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"The dApp is relatively safe based on the threat intelligence.\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`request-fields`,children:`Request Fields`}),`\n`,_jsx(ParamField,{header:`X-API-KEY`,type:`string`,required:true,id:`param-x-api-key`,children:_jsxs(_components.p,{children:[`Your HashDit API key. Missing keys return HTTP `,_jsx(_components.code,{children:`401`}),`; a legacy gateway can return `,_jsx(_components.code,{children:`403`}),` for a rejected key. Keep the key on a trusted server.`]})}),`\n`,_jsx(ParamField,{body:`url`,type:`string`,required:true,id:`param-url`,children:_jsx(_components.p,{children:`Domain or URL to analyze. A scheme, path, and query string are accepted and normalized.`})}),`\n`,_jsx(ParamField,{body:`liveness_check`,type:`boolean`,default:`false`,id:`param-liveness-check`,children:_jsx(_components.p,{children:`Add a usable-content availability check. This increases latency.`})}),`\n`,_jsx(ParamField,{body:`liveness_policy`,type:`string`,default:`lenient`,id:`param-liveness-policy`,children:_jsxs(_components.p,{children:[`How to interpret a check blocked by bot protection: `,_jsx(_components.code,{children:`lenient`}),`, `,_jsx(_components.code,{children:`strict`}),`, or `,_jsx(_components.code,{children:`evidence`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response Fields`}),`\n`,_jsx(ResponseField,{name:`code`,type:`string`,required:true,id:`param-code`,children:_jsxs(_components.p,{children:[`API result code. `,_jsx(_components.code,{children:`\"0\"`}),` indicates success; non-zero values indicate an error.`]})}),`\n`,_jsx(ResponseField,{name:`status`,type:`string`,required:true,id:`param-status`,children:_jsxs(_components.p,{children:[`Request status. A successful completed response returns `,_jsx(_components.code,{children:`\"ok\"`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`data.request_id`,type:`string`,id:`param-data-request-id`,children:_jsx(_components.p,{children:`Unique request identifier to include in support requests.`})}),`\n`,_jsx(ResponseField,{name:`data.has_result`,type:`boolean`,id:`param-data-has-result`,children:_jsx(_components.p,{children:`Whether a domain risk result was immediately available.`})}),`\n`,_jsx(ResponseField,{name:`data.polling_interval`,type:`number`,id:`param-data-polling-interval`,children:_jsxs(_components.p,{children:[`Seconds to wait before retrying when `,_jsx(_components.code,{children:`has_result`}),` is `,_jsx(_components.code,{children:`false`}),`; otherwise `,_jsx(_components.code,{children:`0`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`data.risk_level`,type:`integer`,id:`param-data-risk-level`,children:_jsx(_components.p,{children:`Numeric threat-intelligence risk level.`})}),`\n`,_jsx(ResponseField,{name:`data.risk_name`,type:`string`,id:`param-data-risk-name`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),`\n`,_jsx(ResponseField,{name:`data.risk_detail`,type:`object[]`,id:`param-data-risk-detail`,children:_jsxs(_components.p,{children:[`Triggered threat-intelligence indicators. Use each item’s `,_jsx(_components.code,{children:`name`}),` for application logic.`]})}),`\n`,_jsxs(Expandable,{title:`Risk detail fields`,children:[_jsx(ResponseField,{name:`data.risk_detail[].name`,type:`string`,id:`param-data-risk-detail-name`,children:_jsx(_components.p,{children:`Stable threat-intelligence category identifier.`})}),_jsx(ResponseField,{name:`data.risk_detail[].value`,type:`string`,id:`param-data-risk-detail-value`,children:_jsx(_components.p,{children:`Human-readable explanation of the matched indicator.`})})]}),`\n`,_jsx(ResponseField,{name:`data.liveness`,type:`string`,id:`param-data-liveness`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`alive`}),`, `,_jsx(_components.code,{children:`dead`}),`, or `,_jsx(_components.code,{children:`unknown`}),` when `,_jsx(_components.code,{children:`liveness_check`}),` was requested and a result is available.`]})}),`\n`,_jsx(ResponseField,{name:`data.liveness_detail`,type:`object`,id:`param-data-liveness-detail`,children:_jsx(_components.p,{children:`Availability status, policy, observed HTTP status, and scan timestamp.`})}),`\n`,_jsxs(Expandable,{title:`Liveness detail fields`,children:[_jsx(ResponseField,{name:`data.liveness_detail.status`,type:`string | null`,id:`param-data-liveness-detail-status`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`accessible`}),`, `,_jsx(_components.code,{children:`not_accessible`}),`, or `,_jsx(_components.code,{children:`null`}),` when the selected policy preserves uncertainty.`]})}),_jsx(ResponseField,{name:`data.liveness_detail.policy`,type:`string`,id:`param-data-liveness-detail-policy`,children:_jsxs(_components.p,{children:[`Applied policy: `,_jsx(_components.code,{children:`lenient`}),`, `,_jsx(_components.code,{children:`strict`}),`, or `,_jsx(_components.code,{children:`evidence`}),`.`]})}),_jsx(ResponseField,{name:`data.liveness_detail.http_status`,type:`integer | null`,id:`param-data-liveness-detail-http-status`,children:_jsxs(_components.p,{children:[`Observed HTTP status, or `,_jsx(_components.code,{children:`null`}),` when no HTTP response was reached.`]})}),_jsx(ResponseField,{name:`data.liveness_detail.last_scanned_at`,type:`string | null`,id:`param-data-liveness-detail-last-scanned-at`,children:_jsxs(_components.p,{children:[`ISO 8601 timestamp of the availability check, or `,_jsx(_components.code,{children:`null`}),` when unavailable.`]})})]}),`\n`,_jsxs(_components.p,{children:[`The availability result is per host, so URLs sharing a host share one availability answer. `,_jsx(_components.code,{children:`accessible`}),` asks whether a visitor would see usable content; a working server alone is not sufficient.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`liveness`}),` maps from `,_jsx(_components.code,{children:`liveness_detail.status`}),`: `,_jsx(_components.code,{children:`accessible`}),` → `,_jsx(_components.code,{children:`alive`}),`, `,_jsx(_components.code,{children:`not_accessible`}),` → `,_jsx(_components.code,{children:`dead`}),`, and `,_jsx(_components.code,{children:`unknown`}),` when no determination is available or the policy is `,_jsx(_components.code,{children:`evidence`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Absence is not negative.`}),` If the check could not run, `,_jsx(_components.code,{children:`liveness`}),` and `,_jsx(_components.code,{children:`liveness_detail`}),` are omitted. Treat a missing field as “no answer”, never as “not accessible”.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-use-the-response`,children:`How to Use the Response`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`risk_level`}),` and `,_jsx(_components.code,{children:`risk_name`}),` for the top-level domain decision.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`risk_detail[].name`}),` for application logic and `,_jsx(_components.code,{children:`value`}),` for user-facing context.`]}),`\n`,_jsxs(_components.li,{children:[`If you request liveness, treat it as an availability signal independent from `,_jsx(_components.code,{children:`risk_level`}),`.`]}),`\n`,_jsx(_components.li,{children:`A low risk result is a point-in-time threat-intelligence assessment, not a guarantee that every path or future page is safe.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`risk-level-reference`,children:`Risk Level Reference`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`risk_level`})}),_jsx(_components.th,{children:_jsx(_components.code,{children:`risk_name`})}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`-1`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Unknown`})}),_jsx(_components.td,{children:`No verdict could be formed; do not treat this as safe.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Trusted`})}),_jsx(_components.td,{children:`The domain is affirmatively trusted by HashDit threat intelligence.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`No Obvious Risk`})}),_jsx(_components.td,{children:`No configured signal produced a stronger verdict.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`2`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Low Risk`})}),_jsx(_components.td,{children:`Low-severity risk signals were detected.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`3`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Medium Risk`})}),_jsx(_components.td,{children:`Material risk signals require user attention.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`High Risk`})}),_jsx(_components.td,{children:`Strong risk signals were detected.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`5`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Significant Risk`})}),_jsx(_components.td,{children:`The highest-severity risk signals were detected.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-a-liveness-policy`,children:`Choosing a Liveness Policy`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`liveness_policy`}),` resolves one uncertainty: the check was blocked and cannot tell whether a visitor would have been. Definite observations such as `,_jsx(_components.code,{children:`404`}),`, a sale placeholder, or a domain that does not resolve are read the same under every policy.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Policy`}),_jsx(_components.th,{children:`On a blocked check`}),_jsx(_components.th,{children:`Use when`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`lenient`}),` (default)`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`accessible`})}),_jsx(_components.td,{children:`Warning users. A site that only blocks automation can still work for a person.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`strict`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`not_accessible`})}),_jsx(_components.td,{children:`Vetting submitted sites. Expect some legitimate sites to require manual review.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`evidence`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`null`})]}),_jsxs(_components.td,{children:[`You want `,_jsx(_components.code,{children:`http_status`}),` without a HashDit availability verdict.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Changing this policy never changes `,_jsx(_components.code,{children:`risk_level`}),`. A bot-protected site can return the same `,_jsx(_components.code,{children:`http_status: 403`}),` under both policies while the availability interpretation differs.`]}),`\n`,_jsx(Heading,{level:`2`,id:`latency-and-cache-age`,children:`Latency and Cache Age`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`liveness_check: false`}),` is the fast path. A liveness check adds latency; a recently checked host normally answers quickly, while a new host can return `,_jsx(_components.code,{children:`unknown`}),` as the result is prepared in the background. A later request can then use the cached result.`]}),`\n`,_jsxs(_components.p,{children:[`Results are cached per host. `,_jsx(_components.code,{children:`last_scanned_at`}),` describes when the availability check ran, not when the current API response was generated. Apply your own freshness threshold when needed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The availability answer is per host, not per path.`}),`\n`,_jsx(_components.li,{children:`A block against automated checks cannot prove the site is blocked for a human visitor.`}),`\n`,_jsx(_components.li,{children:`A determined site can serve different content to security infrastructure and users.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Availability is a useful signal, but should not be the only input to a security decision.`}),`\n`,_jsx(Heading,{level:`2`,id:`errors-and-retry-guidance`,children:`Errors and Retry Guidance`}),`\n`,_jsxs(_components.p,{children:[`All errors use the standard `,_jsx(_components.code,{children:`code`}),`, `,_jsx(_components.code,{children:`status`}),`, and `,_jsx(_components.code,{children:`detail`}),` envelope.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`Cause`}),_jsx(_components.th,{children:`Client action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`url`}),` is missing, empty, or cannot be parsed`]}),_jsx(_components.td,{children:`Correct the request; do not retry unchanged.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`401`}),` / `,_jsx(_components.code,{children:`403`})]}),_jsx(_components.td,{children:`Missing or invalid API key`}),_jsx(_components.td,{children:`Fix authentication.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`422`})}),_jsxs(_components.td,{children:[`Invalid `,_jsx(_components.code,{children:`liveness_policy`}),` or an unrecognized field`]}),_jsx(_components.td,{children:`Correct the request schema.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`429`})}),_jsx(_components.td,{children:`Rate limit exceeded`}),_jsx(_components.td,{children:`Retry with exponential backoff and jitter.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`500`})}),_jsx(_components.td,{children:`Internal error`}),_jsxs(_components.td,{children:[`Retry a bounded number of times; include `,_jsx(_components.code,{children:`request_id`}),` in support requests.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A liveness-check failure does not fail the risk request. The API can return HTTP `,_jsx(_components.code,{children:`200`}),` with the risk verdict intact and omit the two liveness fields.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Domain Security","api":"POST /v2/hashdit/domain-security","mode":"wide","description":null,"href":"/api-reference/endpoint/domain-security"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Quick Start","slug":"quick-start","depth":2,"children":[]},{"title":"Request Fields","slug":"request-fields","depth":2,"children":[]},{"title":"Response Fields","slug":"response-fields","depth":2,"children":[]},{"title":"How to Use the Response","slug":"how-to-use-the-response","depth":2,"children":[]},{"title":"Risk Level Reference","slug":"risk-level-reference","depth":2,"children":[]},{"title":"Choosing a Liveness Policy","slug":"choosing-a-liveness-policy","depth":2,"children":[]},{"title":"Latency and Cache Age","slug":"latency-and-cache-age","depth":2,"children":[]},{"title":"Limits","slug":"limits","depth":2,"children":[]},{"title":"Errors and Retry Guidance","slug":"errors-and-retry-guidance","depth":2,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"7\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --request\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> POST\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --url\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://service.hashdit.io/v2/hashdit/domain-security\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --header\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'Content-Type: application/json'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --header\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'X-API-KEY: YOUR_API_KEY'\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> --data\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"url\": \"https://pancakeswap.finance/\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> }'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"200","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"17\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ok\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"request_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"85cb060e-75cf-4d75-887f-c23f2fc45106\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"has_result\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"polling_interval\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"risk_level\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"risk_name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Trusted\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"risk_detail\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"is_in_wlist\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"value\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"The dApp is relatively safe based on the threat intelligence.\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Domain Security","path":"/v2/hashdit/domain-security","servers":[{"url":"https://service.hashdit.io"}],"method":"post","request":{"security":[{"title":"API Key Auth","parameters":{"header":{"X-API-KEY":{"type":"apiKey"}},"query":{},"cookie":{}}}],"parameters":{"query":{},"header":{"X-API-KEY":{"schema":[{"type":"string","description":"Your HashDit API key. Missing keys return HTTP `401` ; a legacy gateway can return `403` for a rejected key. Keep the key on a trusted server.","required":true}]}},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"url":[{"type":"string","description":"Domain or URL to analyze. A scheme, path, and query string are accepted and normalized.","required":true}],"liveness_check":[{"type":"boolean","description":"Add a usable-content availability check. This increases latency."}],"liveness_policy":[{"type":"string","description":"How to interpret a check blocked by bot protection: `lenient` , `strict` , or `evidence` ."}]}}],"examples":{"example":{"value":{"url":"\u003cstring>","liveness_check":true,"liveness_policy":"\u003cstring>"}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"code":[{"type":"string","description":"API result code. `\"0\"` indicates success; non-zero values indicate an error.","required":true}],"status":[{"type":"string","description":"Request status. A successful completed response returns `\"ok\"` .","required":true}],"data.request_id":[{"type":"string","description":"Unique request identifier to include in support requests."}],"data.has_result":[{"type":"boolean","description":"Whether a domain risk result was immediately available."}],"data.polling_interval":[{"type":"number","description":"Seconds to wait before retrying when `has_result` is `false` ; otherwise `0` ."}],"data.risk_level":[{"type":"integer","description":"Numeric threat-intelligence risk level."}],"data.risk_name":[{"type":"string","description":"Human-readable risk label."}],"data.risk_detail":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Triggered threat-intelligence indicators. Use each item’s `name` for application logic."}],"data.liveness":[{"type":"string","description":"`alive` , `dead` , or `unknown` when `liveness_check` was requested and a result is available."}],"data.liveness_detail":[{"type":"object","properties":{},"description":"Availability status, policy, observed HTTP status, and scan timestamp."}]}}],"examples":{"example":{"value":{"code":"\u003cstring>","status":"\u003cstring>","data.request_id":"\u003cstring>","data.has_result":true,"data.polling_interval":123,"data.risk_level":123,"data.risk_name":"\u003cstring>","data.risk_detail":[{}],"data.liveness":"\u003cstring>","data.liveness_detail":{}}}}}}},"deprecated":false}},"jsLinks":["/_mintlify/custom/hashdit/fb235fc5bd2aba0c/tron-only-pills.js","/_mintlify/custom/hashdit/16c8c996730bd252/wide-page-toc.js","/_mintlify/custom/hashdit/23b0c35ec62d5190/scope-search.js","/_mintlify/custom/hashdit/3fed54a6f46829c9/api-lifecycle-sidebar.js"],"subdomain":"hashdit","siteName":"HashDit API Documentation","title":"Domain Security - HashDit API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-17T05:34:45.148Z","originalFileLocation":"api-reference/endpoint/domain-security.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"HashDit API Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Domain Security - HashDit API Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"HashDit API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hashdit.io//api-reference/endpoint/domain-security\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hashdit.mintlify.app/_mintlify/api/og/v2?division=Domain+Security\u0026amp;title=Domain+Security\u0026amp;theme=5ffe7efa8d5388d13f637b82\u0026amp;signature=2ce4b31e469f217dcbb497cb9e98de4ec4d74a27df77b3fe2031503226c642bd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Domain Security - HashDit API Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hashdit.mintlify.app/_mintlify/api/og/v2?division=Domain+Security\u0026amp;title=Domain+Security\u0026amp;theme=5ffe7efa8d5388d13f637b82\u0026amp;signature=2ce4b31e469f217dcbb497cb9e98de4ec4d74a27df77b3fe2031503226c642bd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hashdit/Wv3pdFsF73h4GSVE/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"HashDit API Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hashdit.io//api-reference/endpoint/domain-security\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/domain-security.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hashdit.io/#organization\",\"name\":\"HashDit API Documentation\",\"url\":\"https://docs.hashdit.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hashdit/e2aqOz3kgheFaA6s/images/HashDitLogo.svg?fit=max\u0026auto=format\u0026n=e2aqOz3kgheFaA6s\u0026q=85\u0026s=7a9dd78fd2333ba181ff121df47e1fc1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hashdit.io#website\",\"name\":\"HashDit API Documentation\",\"url\":\"https://docs.hashdit.io\",\"publisher\":{\"@id\":\"https://docs.hashdit.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security#webpage\",\"url\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security\",\"name\":\"Domain Security\",\"dateModified\":\"2026-10-17T05:34:45.148Z\",\"isPartOf\":{\"@id\":\"https://docs.hashdit.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.hashdit.io/api-reference/endpoint/address-classify\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Domain Security\",\"item\":\"https://docs.hashdit.io/api-reference/endpoint/domain-security\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Domain Security\",\"item\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security#apireference\",\"headline\":\"Domain Security\",\"name\":\"Domain Security\",\"url\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/domain-security#webpage\"},\"dateModified\":\"2026-10-17T05:34:45.148Z\",\"publisher\":{\"@id\":\"https://docs.hashdit.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hashdit.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"HashDit API Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"HashDit API Documentation","nav":{"global":null,"tabs":[{"tab":"HashDit APIs","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":""},{"title":"Supported Chains","href":"/api-reference/supported-chains"}]},{"group":"Endpoints","pages":[{"group":"Address Classification","icon":"address-card","pages":[{"title":"Address Classification","api":"POST /v2/hashdit/address-classify","mode":"wide","href":"/api-reference/endpoint/address-classify"},{"title":"Address Classification","api":"GET /v2/hashdit/address-classify","mode":"wide","href":"/api-reference/endpoint/address-classify/get"}]},{"group":"Address Poisoning Detection","icon":"virus","pages":[{"title":"Address Poisoning — Single Address","api":"POST /v2/hashdit/address-poisoning","mode":"wide","href":"/api-reference/endpoint/address-poisoning/single"},{"title":"Address Poisoning — Batch Addresses","api":"POST /v2/hashdit/address-poisoning","mode":"wide","href":"/api-reference/endpoint/address-poisoning/batch"},{"title":"Address Poisoning — Single Address","api":"GET /v2/hashdit/address-poisoning","mode":"wide","href":"/api-reference/endpoint/address-poisoning/get"}]},{"group":"Address Security v2","icon":"address-book","pages":[{"title":"Address Security v2","api":"POST /v2/hashdit/address-security-v2","mode":"wide","description":null,"href":"/api-reference/endpoint/address-security-v2"}]},{"group":"Domain Security","icon":"globe","pages":[{"title":"Domain Security","api":"POST /v2/hashdit/domain-security","mode":"wide","href":"/api-reference/endpoint/domain-security"}]},{"group":"EVM Token Security","icon":"coins","pages":[{"title":"EVM Token Security","api":"POST /v2/hashdit/token-security","mode":"wide","description":null,"href":"/api-reference/endpoint/token-security"}]},{"group":"Solana Token Security","icon":"coin-blank","pages":[{"title":"Solana Token Security","api":"POST /v2/hashdit/solana-token-security","mode":"wide","href":"/api-reference/endpoint/solana-token-security"}]},{"group":"Token Approval Security","icon":"check","pages":[{"title":"Token Approval Security","api":"POST /v2/hashdit/token-approval-security","mode":"wide","href":"/api-reference/endpoint/token-approval-security"}]},{"group":"EIP-712 Signature Security","icon":"signature","pages":[{"title":"EIP-712 Signature Security","api":"POST /v2/hashdit/eip712-security","mode":"wide","href":"/api-reference/endpoint/eip712-security"}]},{"group":"Transaction Security","icon":"shield-halved","pages":[{"title":"Transaction Security — EVM / TRON Flattened","api":"POST /v2/hashdit/transaction-security","mode":"wide","href":"/api-reference/endpoint/transaction-security"},{"title":"Transaction Security — TRON Raw","api":"POST /v2/hashdit/transaction-security","mode":"wide","href":"/api-reference/endpoint/transaction-security/tron-raw"}]}]}]},{"tab":"Blog","pages":[{"title":"Blog","href":"/blog/2025-12-29/2025-12-29"}]}]},"basePath":"","title":"Domain Security - HashDit API Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-m07pfKpT.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js"]}