Add spender_type and owner_type classification fields to every row.
At least one of owner or spender is required. token is an optional filter and cannot be sent by itself. For an approval-management screen, set both include_balance and include_spender_risk to true.
Unsupported chain, invalid address, or invalid owner/spender/token combination
Correct the request; do not retry unchanged.
401
Missing or invalid API key
Fix authentication.
422
Request schema validation failed
Correct field names or values.
429
Rate limit exceeded
Retry with exponential backoff and jitter.
500
Transient service failure
Retry a bounded number of times with backoff.
Responses are cached for approximately 60 seconds per unique query and enrichment-flag combination. A recent revocation can remain visible until that cache expires.
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.3990","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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":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/token-approval-security","slug":"/api-reference/endpoint/token-approval-security","pageMetadata":{"title":"Token Approval Security","api":"POST /v2/hashdit/token-approval-security","mode":"wide","description":null,"href":"/api-reference/endpoint/token-approval-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={a:`a`,code:`code`,li:`li`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,Note,ParamField,ResponseField,Table}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,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`,_jsxs(Note,{children:[`HashDit-owned request fields are documented in `,_jsx(_components.code,{children:`snake_case`}),`. Equivalent camelCase input remains accepted for compatibility.`]}),`\n`,_jsx(_components.p,{children:`Find a wallet’s active token approvals, current exposure, and risky spenders.`}),`\n`,_jsx(Heading,{level:`2`,id:`quick-start`,children:`Quick Start`}),`\n`,_jsx(_components.p,{children:`Query an owner’s approvals with balance capping and spender-risk enrichment:`}),`\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 or invalid keys return HTTP `,_jsx(_components.code,{children:`401`}),`. Keep the key on a trusted server.`]})}),`\n`,_jsx(ParamField,{body:`chain_id`,type:`string`,required:true,id:`param-chain-id`,children:_jsxs(_components.p,{children:[`Ethereum, BNB Smart Chain, or TRON identifier, such as `,_jsx(_components.code,{children:`\"1\"`}),`, `,_jsx(_components.code,{children:`\"56\"`}),`, or `,_jsx(_components.code,{children:`\"tron\"`}),`. JSON clients may also send a numeric chain ID. See `,_jsx(_components.a,{href:`/api-reference/supported-chains`,children:`Supported Chains`}),`.`]})}),`\n`,_jsx(ParamField,{body:`owner`,type:`string`,id:`param-owner`,children:_jsx(_components.p,{children:`Wallet whose outstanding approvals should be returned.`})}),`\n`,_jsx(ParamField,{body:`spender`,type:`string`,id:`param-spender`,children:_jsxs(_components.p,{children:[`Filter approvals by spender. At least one of `,_jsx(_components.code,{children:`owner`}),` or `,_jsx(_components.code,{children:`spender`}),` is required.`]})}),`\n`,_jsx(ParamField,{body:`token`,type:`string`,id:`param-token`,children:_jsxs(_components.p,{children:[`Optional token filter. It cannot be sent without `,_jsx(_components.code,{children:`owner`}),` or `,_jsx(_components.code,{children:`spender`}),`.`]})}),`\n`,_jsx(ParamField,{body:`filter`,type:`string`,id:`param-filter`,children:_jsxs(_components.p,{children:[`Optional result filter, including `,_jsx(_components.code,{children:`only-valid`}),`.`]})}),`\n`,_jsx(ParamField,{body:`limit`,type:`integer`,id:`param-limit`,children:_jsx(_components.p,{children:`Maximum number of approvals to return on this page.`})}),`\n`,_jsx(ParamField,{body:`page`,type:`integer`,id:`param-page`,children:_jsxs(_components.p,{children:[`1-based page number. Defaults to `,_jsx(_components.code,{children:`1`}),`.`]})}),`\n`,_jsx(ParamField,{body:`include_balance`,type:`boolean`,default:`false`,id:`param-include-balance`,children:_jsx(_components.p,{children:`Add the owner’s current token balance and cap immediate exposure to it.`})}),`\n`,_jsx(ParamField,{body:`include_spender_risk`,type:`boolean`,default:`false`,id:`param-include-spender-risk`,children:_jsx(_components.p,{children:`Add spender risk enrichment to every row.`})}),`\n`,_jsx(ParamField,{body:`include_token_risk`,type:`boolean`,default:`false`,id:`param-include-token-risk`,children:_jsx(_components.p,{children:`Add token-contract risk enrichment to every row.`})}),`\n`,_jsx(ParamField,{body:`include_owner_risk`,type:`boolean`,default:`false`,id:`param-include-owner-risk`,children:_jsx(_components.p,{children:`Add owner-address risk enrichment to every row.`})}),`\n`,_jsx(ParamField,{body:`include_address_types`,type:`boolean`,default:`false`,id:`param-include-address-types`,children:_jsxs(_components.p,{children:[`Add `,_jsx(_components.code,{children:`spender_type`}),` and `,_jsx(_components.code,{children:`owner_type`}),` classification fields to every row.`]})}),`\n`,_jsxs(_components.p,{children:[`At least one of `,_jsx(_components.code,{children:`owner`}),` or `,_jsx(_components.code,{children:`spender`}),` is required. `,_jsx(_components.code,{children:`token`}),` is an optional filter and cannot be sent by itself. For an approval-management screen, set both `,_jsx(_components.code,{children:`include_balance`}),` and `,_jsx(_components.code,{children:`include_spender_risk`}),` to `,_jsx(_components.code,{children:`true`}),`.`]}),`\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.count`,type:`integer`,id:`param-data-count`,children:_jsxs(_components.p,{children:[`Number of rows in `,_jsx(_components.code,{children:`approval_status`}),` after filtering.`]})}),`\n`,_jsx(ResponseField,{name:`data.approval_status`,type:`object[]`,id:`param-data-approval-status`,children:_jsx(_components.p,{children:`The approvals returned for this query.`})}),`\n`,_jsxs(Expandable,{title:`Approval row fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].token`,type:`string`,required:true,id:`param-data-approval-status-token`,children:_jsx(_components.p,{children:`Token contract address.`})}),_jsx(ResponseField,{name:`data.approval_status[].owner`,type:`string`,required:true,id:`param-data-approval-status-owner`,children:_jsx(_components.p,{children:`Address that granted the approval.`})}),_jsx(ResponseField,{name:`data.approval_status[].spender`,type:`string`,required:true,id:`param-data-approval-status-spender`,children:_jsx(_components.p,{children:`Address allowed to spend the token.`})}),_jsx(ResponseField,{name:`data.approval_status[].amount_raw`,type:`string`,required:true,id:`param-data-approval-status-amount-raw`,children:_jsx(_components.p,{children:`Raw on-chain allowance in the token’s smallest unit. Parse as a big integer.`})}),_jsx(ResponseField,{name:`data.approval_status[].valid_allowance`,type:`string`,id:`param-data-approval-status-valid-allowance`,children:_jsxs(_components.p,{children:[`Amount the spender can use now, capped by the owner’s current balance when `,_jsx(_components.code,{children:`include_balance`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].token_decimal`,type:`integer | null`,id:`param-data-approval-status-token-decimal`,children:_jsxs(_components.p,{children:[`Token decimals, or `,_jsx(_components.code,{children:`null`}),` when they could not be resolved.`]})}),_jsx(ResponseField,{name:`data.approval_status[].affected_usd_amount`,type:`number | string`,id:`param-data-approval-status-affected-usd-amount`,children:_jsxs(_components.p,{children:[`Current USD exposure. The value can also be `,_jsx(_components.code,{children:`\"Unlimited\"`}),` or `,_jsx(_components.code,{children:`\"Unknown\"`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].potential_affected_usd_amount`,type:`number | string`,id:`param-data-approval-status-potential-affected-usd-amount`,children:_jsxs(_components.p,{children:[`Potential USD exposure if the wallet receives more tokens. The value can also be `,_jsx(_components.code,{children:`\"Unlimited\"`}),` or `,_jsx(_components.code,{children:`\"Unknown\"`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].token_name`,type:`string | null`,id:`param-data-approval-status-token-name`,children:_jsxs(_components.p,{children:[`Token name, or `,_jsx(_components.code,{children:`null`}),` when the token is not indexed.`]})}),_jsx(ResponseField,{name:`data.approval_status[].balance`,type:`string | null`,id:`param-data-approval-status-balance`,children:_jsxs(_components.p,{children:[`Owner balance in raw units when `,_jsx(_components.code,{children:`include_balance`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].spender_type`,type:`string | null`,id:`param-data-approval-status-spender-type`,children:_jsxs(_components.p,{children:[`Spender classification when `,_jsx(_components.code,{children:`include_address_types`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].owner_type`,type:`string | null`,id:`param-data-approval-status-owner-type`,children:_jsxs(_components.p,{children:[`Owner classification when `,_jsx(_components.code,{children:`include_address_types`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk`,type:`object | null`,id:`param-data-approval-status-spender-risk`,children:_jsxs(_components.p,{children:[`Spender risk result when `,_jsx(_components.code,{children:`include_spender_risk`}),` is enabled.`]})}),_jsxs(Expandable,{title:`Spender risk fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].spender_risk.is_risky`,type:`boolean`,id:`param-data-approval-status-spender-risk-is-risky`,children:_jsx(_components.p,{children:`The spender verdict. Use this field to decide whether to show a risk warning.`})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk.risk_level`,type:`integer`,id:`param-data-approval-status-spender-risk-risk-level`,children:_jsxs(_components.p,{children:[`Numeric risk level from `,_jsx(_components.code,{children:`-1`}),` to `,_jsx(_components.code,{children:`5`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk.risk_level_display`,type:`string`,id:`param-data-approval-status-spender-risk-risk-level-display`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk.risk_details`,type:`string[]`,id:`param-data-approval-status-spender-risk-risk-details`,children:_jsx(_components.p,{children:`Diagnostic labels for logging and support. Do not treat them as a stable enum.`})})]}),_jsx(ResponseField,{name:`data.approval_status[].token_risk`,type:`object | null`,id:`param-data-approval-status-token-risk`,children:_jsxs(_components.p,{children:[`Token risk result when `,_jsx(_components.code,{children:`include_token_risk`}),` is enabled.`]})}),_jsxs(Expandable,{title:`Token risk fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].token_risk.is_risky`,type:`boolean`,id:`param-data-approval-status-token-risk-is-risky`,children:_jsx(_components.p,{children:`Token-contract risk verdict.`})}),_jsx(ResponseField,{name:`data.approval_status[].token_risk.risk_level`,type:`integer`,id:`param-data-approval-status-token-risk-risk-level`,children:_jsxs(_components.p,{children:[`Numeric risk level from `,_jsx(_components.code,{children:`-1`}),` to `,_jsx(_components.code,{children:`5`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].token_risk.risk_level_display`,type:`string`,id:`param-data-approval-status-token-risk-risk-level-display`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),_jsx(ResponseField,{name:`data.approval_status[].token_risk.risk_details`,type:`string[]`,id:`param-data-approval-status-token-risk-risk-details`,children:_jsx(_components.p,{children:`Diagnostic labels for logging and support.`})})]}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk`,type:`object | null`,id:`param-data-approval-status-owner-risk`,children:_jsxs(_components.p,{children:[`Owner risk result when `,_jsx(_components.code,{children:`include_owner_risk`}),` is enabled.`]})}),_jsxs(Expandable,{title:`Owner risk fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].owner_risk.is_risky`,type:`boolean`,id:`param-data-approval-status-owner-risk-is-risky`,children:_jsx(_components.p,{children:`Owner-address risk verdict.`})}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk.risk_level`,type:`integer`,id:`param-data-approval-status-owner-risk-risk-level`,children:_jsxs(_components.p,{children:[`Numeric risk level from `,_jsx(_components.code,{children:`-1`}),` to `,_jsx(_components.code,{children:`5`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk.risk_level_display`,type:`string`,id:`param-data-approval-status-owner-risk-risk-level-display`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk.risk_details`,type:`string[]`,id:`param-data-approval-status-owner-risk-risk-details`,children:_jsx(_components.p,{children:`Diagnostic labels for logging and support.`})})]})]}),`\n`,_jsx(ResponseField,{name:`data.valid_approved_tokens`,type:`object[]`,id:`param-data-valid-approved-tokens`,children:_jsx(_components.p,{children:`Metadata for indexed tokens represented in the approval rows.`})}),`\n`,_jsxs(Expandable,{title:`Valid token fields`,children:[_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_name`,type:`string | null`,id:`param-data-valid-approved-tokens-token-name`,children:_jsx(_components.p,{children:`Indexed token name.`})}),_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_address`,type:`string`,id:`param-data-valid-approved-tokens-token-address`,children:_jsx(_components.p,{children:`Token contract address.`})}),_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_price`,type:`number | null`,id:`param-data-valid-approved-tokens-token-price`,children:_jsx(_components.p,{children:`Current USD unit price when available.`})}),_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_decimal`,type:`integer | null`,id:`param-data-valid-approved-tokens-token-decimal`,children:_jsx(_components.p,{children:`Token decimals when available.`})})]}),`\n`,_jsx(ResponseField,{name:`data.summary`,type:`object`,id:`param-data-summary`,children:_jsx(_components.p,{children:`Page-level current exposure and risky-approval totals.`})}),`\n`,_jsxs(Expandable,{title:`Summary fields`,children:[_jsx(ResponseField,{name:`data.summary.total_affected_usd_amount`,type:`number`,id:`param-data-summary-total-affected-usd-amount`,children:_jsx(_components.p,{children:`De-duplicated current USD exposure across this page.`})}),_jsx(ResponseField,{name:`data.summary.total_potential_affected_usd_amount`,type:`number`,id:`param-data-summary-total-potential-affected-usd-amount`,children:_jsx(_components.p,{children:`De-duplicated potential USD exposure across this page.`})}),_jsx(ResponseField,{name:`data.summary.risky_approval_count`,type:`integer`,id:`param-data-summary-risky-approval-count`,children:_jsx(_components.p,{children:`Number of approval rows with at least one risky enrichment.`})}),_jsx(ResponseField,{name:`data.summary.total_risky_usd_amount`,type:`number`,id:`param-data-summary-total-risky-usd-amount`,children:_jsx(_components.p,{children:`Current USD exposure across risky approval rows.`})}),_jsx(ResponseField,{name:`data.summary.risky_approval_indices`,type:`integer[]`,id:`param-data-summary-risky-approval-indices`,children:_jsxs(_components.p,{children:[`Zero-based positions of risky rows in `,_jsx(_components.code,{children:`approval_status`}),`.`]})})]}),`\n`,_jsx(ResponseField,{name:`data.has_more`,type:`boolean`,id:`param-data-has-more`,children:_jsxs(_components.p,{children:[`Continue pagination while this value is `,_jsx(_components.code,{children:`true`}),`.`]})}),`\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:[`Render each item in `,_jsx(_components.code,{children:`approval_status`}),`; it contains the raw allowance and the realistic current exposure.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`summary`}),` for page-level totals instead of summing rows yourself.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`spender_risk.is_risky`}),` for the spender decision. Do not derive a verdict from `,_jsx(_components.code,{children:`risk_level`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Continue pagination while `,_jsx(_components.code,{children:`has_more`}),` is `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Treat `,_jsx(_components.code,{children:`\"Unknown\"`}),` and `,_jsx(_components.code,{children:`\"Unlimited\"`}),` USD values as explicit states, never as zero.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`risk-level-reference`,children:`Risk Level Reference`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`is_risky`}),` as the decision field. The numeric level and display label are for presentation.`]}),`\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_level_display`})}),_jsx(_components.th,{children:`Suggested handling`})]})}),_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 data; do not treat 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:`No warning is required.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`1`}),`–`,_jsx(_components.code,{children:`3`})]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Low Risk`})}),_jsx(_components.td,{children:`Show as informational.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Medium Risk`})}),_jsx(_components.td,{children:`Warn and ask the user to confirm.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`5`}),` or higher`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`High Risk`})}),_jsx(_components.td,{children:`Block or show a strong warning.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`errors-and-retry-guidance`,children:`Errors and Retry Guidance`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`Meaning`}),_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`})}),_jsx(_components.td,{children:`Unsupported chain, invalid address, or invalid owner/spender/token combination`}),_jsx(_components.td,{children:`Correct the request; do not retry unchanged.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_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`})}),_jsx(_components.td,{children:`Request schema validation failed`}),_jsx(_components.td,{children:`Correct field names or values.`})]}),_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:`Transient service failure`}),_jsx(_components.td,{children:`Retry a bounded number of times with backoff.`})]})]})]}),`\n`,_jsx(_components.p,{children:`Responses are cached for approximately 60 seconds per unique query and enrichment-flag combination. A recent revocation can remain visible until that cache expires.`})]})}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":"Token Approval Security","api":"POST /v2/hashdit/token-approval-security","mode":"wide","description":null,"href":"/api-reference/endpoint/token-approval-security"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Note,ParamField,RequestExample,ResponseExample,ResponseField,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,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`,_jsxs(Note,{children:[`HashDit-owned request fields are documented in `,_jsx(_components.code,{children:`snake_case`}),`. Equivalent camelCase input remains accepted for compatibility.`]}),`\n`,_jsx(_components.p,{children:`Find a wallet’s active token approvals, current exposure, and risky spenders.`}),`\n`,_jsx(Heading,{level:`2`,id:`quick-start`,children:`Quick Start`}),`\n`,_jsx(_components.p,{children:`Query an owner’s approvals with balance capping and spender-risk enrichment:`}),`\n`,_jsx(RequestExample,{children:_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`10`,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:`10`,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/token-approval-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:` \"chain_id\": \"56\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"owner\": \"0x26d61f23bbc94d7b2139f9c581722bf4e8b64b87\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"include_balance\": true,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"include_spender_risk\": true`})}),`\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:`29`,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:`29`,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:` \"count\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_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_more\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_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:` \"approval_status\"`}),_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:` \"token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x55d398326f99059ff775485246999027b3197955\"`}),_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:` \"owner\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x26d61f23bbc94d7b2139f9c581722bf4e8b64b87\"`}),_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:` \"spender\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x10ed43c718714eb63d5aa57b78b54704e256024e\"`}),_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:` \"amount_raw\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"115792089237316195423570985008687907853269984665640564039457584007913129639935\"`}),_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:` \"valid_allowance\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"4500000000000000000\"`}),_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:` \"affected_usd_amount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.5`}),_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:` \"potential_affected_usd_amount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Unlimited\"`}),_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:` \"spender_risk\"`}),_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:` \"is_risky\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_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_level_display\"`}),_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_details\"`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"summary\"`}),_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:` \"total_affected_usd_amount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4.5`}),_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:` \"risky_approval_count\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`})]}),`\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 or invalid keys return HTTP `,_jsx(_components.code,{children:`401`}),`. Keep the key on a trusted server.`]})}),`\n`,_jsx(ParamField,{body:`chain_id`,type:`string`,required:true,id:`param-chain-id`,children:_jsxs(_components.p,{children:[`Ethereum, BNB Smart Chain, or TRON identifier, such as `,_jsx(_components.code,{children:`\"1\"`}),`, `,_jsx(_components.code,{children:`\"56\"`}),`, or `,_jsx(_components.code,{children:`\"tron\"`}),`. JSON clients may also send a numeric chain ID. See `,_jsx(_components.a,{href:`/api-reference/supported-chains`,children:`Supported Chains`}),`.`]})}),`\n`,_jsx(ParamField,{body:`owner`,type:`string`,id:`param-owner`,children:_jsx(_components.p,{children:`Wallet whose outstanding approvals should be returned.`})}),`\n`,_jsx(ParamField,{body:`spender`,type:`string`,id:`param-spender`,children:_jsxs(_components.p,{children:[`Filter approvals by spender. At least one of `,_jsx(_components.code,{children:`owner`}),` or `,_jsx(_components.code,{children:`spender`}),` is required.`]})}),`\n`,_jsx(ParamField,{body:`token`,type:`string`,id:`param-token`,children:_jsxs(_components.p,{children:[`Optional token filter. It cannot be sent without `,_jsx(_components.code,{children:`owner`}),` or `,_jsx(_components.code,{children:`spender`}),`.`]})}),`\n`,_jsx(ParamField,{body:`filter`,type:`string`,id:`param-filter`,children:_jsxs(_components.p,{children:[`Optional result filter, including `,_jsx(_components.code,{children:`only-valid`}),`.`]})}),`\n`,_jsx(ParamField,{body:`limit`,type:`integer`,id:`param-limit`,children:_jsx(_components.p,{children:`Maximum number of approvals to return on this page.`})}),`\n`,_jsx(ParamField,{body:`page`,type:`integer`,id:`param-page`,children:_jsxs(_components.p,{children:[`1-based page number. Defaults to `,_jsx(_components.code,{children:`1`}),`.`]})}),`\n`,_jsx(ParamField,{body:`include_balance`,type:`boolean`,default:`false`,id:`param-include-balance`,children:_jsx(_components.p,{children:`Add the owner’s current token balance and cap immediate exposure to it.`})}),`\n`,_jsx(ParamField,{body:`include_spender_risk`,type:`boolean`,default:`false`,id:`param-include-spender-risk`,children:_jsx(_components.p,{children:`Add spender risk enrichment to every row.`})}),`\n`,_jsx(ParamField,{body:`include_token_risk`,type:`boolean`,default:`false`,id:`param-include-token-risk`,children:_jsx(_components.p,{children:`Add token-contract risk enrichment to every row.`})}),`\n`,_jsx(ParamField,{body:`include_owner_risk`,type:`boolean`,default:`false`,id:`param-include-owner-risk`,children:_jsx(_components.p,{children:`Add owner-address risk enrichment to every row.`})}),`\n`,_jsx(ParamField,{body:`include_address_types`,type:`boolean`,default:`false`,id:`param-include-address-types`,children:_jsxs(_components.p,{children:[`Add `,_jsx(_components.code,{children:`spender_type`}),` and `,_jsx(_components.code,{children:`owner_type`}),` classification fields to every row.`]})}),`\n`,_jsxs(_components.p,{children:[`At least one of `,_jsx(_components.code,{children:`owner`}),` or `,_jsx(_components.code,{children:`spender`}),` is required. `,_jsx(_components.code,{children:`token`}),` is an optional filter and cannot be sent by itself. For an approval-management screen, set both `,_jsx(_components.code,{children:`include_balance`}),` and `,_jsx(_components.code,{children:`include_spender_risk`}),` to `,_jsx(_components.code,{children:`true`}),`.`]}),`\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.count`,type:`integer`,id:`param-data-count`,children:_jsxs(_components.p,{children:[`Number of rows in `,_jsx(_components.code,{children:`approval_status`}),` after filtering.`]})}),`\n`,_jsx(ResponseField,{name:`data.approval_status`,type:`object[]`,id:`param-data-approval-status`,children:_jsx(_components.p,{children:`The approvals returned for this query.`})}),`\n`,_jsxs(Expandable,{title:`Approval row fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].token`,type:`string`,required:true,id:`param-data-approval-status-token`,children:_jsx(_components.p,{children:`Token contract address.`})}),_jsx(ResponseField,{name:`data.approval_status[].owner`,type:`string`,required:true,id:`param-data-approval-status-owner`,children:_jsx(_components.p,{children:`Address that granted the approval.`})}),_jsx(ResponseField,{name:`data.approval_status[].spender`,type:`string`,required:true,id:`param-data-approval-status-spender`,children:_jsx(_components.p,{children:`Address allowed to spend the token.`})}),_jsx(ResponseField,{name:`data.approval_status[].amount_raw`,type:`string`,required:true,id:`param-data-approval-status-amount-raw`,children:_jsx(_components.p,{children:`Raw on-chain allowance in the token’s smallest unit. Parse as a big integer.`})}),_jsx(ResponseField,{name:`data.approval_status[].valid_allowance`,type:`string`,id:`param-data-approval-status-valid-allowance`,children:_jsxs(_components.p,{children:[`Amount the spender can use now, capped by the owner’s current balance when `,_jsx(_components.code,{children:`include_balance`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].token_decimal`,type:`integer | null`,id:`param-data-approval-status-token-decimal`,children:_jsxs(_components.p,{children:[`Token decimals, or `,_jsx(_components.code,{children:`null`}),` when they could not be resolved.`]})}),_jsx(ResponseField,{name:`data.approval_status[].affected_usd_amount`,type:`number | string`,id:`param-data-approval-status-affected-usd-amount`,children:_jsxs(_components.p,{children:[`Current USD exposure. The value can also be `,_jsx(_components.code,{children:`\"Unlimited\"`}),` or `,_jsx(_components.code,{children:`\"Unknown\"`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].potential_affected_usd_amount`,type:`number | string`,id:`param-data-approval-status-potential-affected-usd-amount`,children:_jsxs(_components.p,{children:[`Potential USD exposure if the wallet receives more tokens. The value can also be `,_jsx(_components.code,{children:`\"Unlimited\"`}),` or `,_jsx(_components.code,{children:`\"Unknown\"`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].token_name`,type:`string | null`,id:`param-data-approval-status-token-name`,children:_jsxs(_components.p,{children:[`Token name, or `,_jsx(_components.code,{children:`null`}),` when the token is not indexed.`]})}),_jsx(ResponseField,{name:`data.approval_status[].balance`,type:`string | null`,id:`param-data-approval-status-balance`,children:_jsxs(_components.p,{children:[`Owner balance in raw units when `,_jsx(_components.code,{children:`include_balance`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].spender_type`,type:`string | null`,id:`param-data-approval-status-spender-type`,children:_jsxs(_components.p,{children:[`Spender classification when `,_jsx(_components.code,{children:`include_address_types`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].owner_type`,type:`string | null`,id:`param-data-approval-status-owner-type`,children:_jsxs(_components.p,{children:[`Owner classification when `,_jsx(_components.code,{children:`include_address_types`}),` is enabled.`]})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk`,type:`object | null`,id:`param-data-approval-status-spender-risk`,children:_jsxs(_components.p,{children:[`Spender risk result when `,_jsx(_components.code,{children:`include_spender_risk`}),` is enabled.`]})}),_jsxs(Expandable,{title:`Spender risk fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].spender_risk.is_risky`,type:`boolean`,id:`param-data-approval-status-spender-risk-is-risky`,children:_jsx(_components.p,{children:`The spender verdict. Use this field to decide whether to show a risk warning.`})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk.risk_level`,type:`integer`,id:`param-data-approval-status-spender-risk-risk-level`,children:_jsxs(_components.p,{children:[`Numeric risk level from `,_jsx(_components.code,{children:`-1`}),` to `,_jsx(_components.code,{children:`5`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk.risk_level_display`,type:`string`,id:`param-data-approval-status-spender-risk-risk-level-display`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),_jsx(ResponseField,{name:`data.approval_status[].spender_risk.risk_details`,type:`string[]`,id:`param-data-approval-status-spender-risk-risk-details`,children:_jsx(_components.p,{children:`Diagnostic labels for logging and support. Do not treat them as a stable enum.`})})]}),_jsx(ResponseField,{name:`data.approval_status[].token_risk`,type:`object | null`,id:`param-data-approval-status-token-risk`,children:_jsxs(_components.p,{children:[`Token risk result when `,_jsx(_components.code,{children:`include_token_risk`}),` is enabled.`]})}),_jsxs(Expandable,{title:`Token risk fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].token_risk.is_risky`,type:`boolean`,id:`param-data-approval-status-token-risk-is-risky`,children:_jsx(_components.p,{children:`Token-contract risk verdict.`})}),_jsx(ResponseField,{name:`data.approval_status[].token_risk.risk_level`,type:`integer`,id:`param-data-approval-status-token-risk-risk-level`,children:_jsxs(_components.p,{children:[`Numeric risk level from `,_jsx(_components.code,{children:`-1`}),` to `,_jsx(_components.code,{children:`5`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].token_risk.risk_level_display`,type:`string`,id:`param-data-approval-status-token-risk-risk-level-display`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),_jsx(ResponseField,{name:`data.approval_status[].token_risk.risk_details`,type:`string[]`,id:`param-data-approval-status-token-risk-risk-details`,children:_jsx(_components.p,{children:`Diagnostic labels for logging and support.`})})]}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk`,type:`object | null`,id:`param-data-approval-status-owner-risk`,children:_jsxs(_components.p,{children:[`Owner risk result when `,_jsx(_components.code,{children:`include_owner_risk`}),` is enabled.`]})}),_jsxs(Expandable,{title:`Owner risk fields`,children:[_jsx(ResponseField,{name:`data.approval_status[].owner_risk.is_risky`,type:`boolean`,id:`param-data-approval-status-owner-risk-is-risky`,children:_jsx(_components.p,{children:`Owner-address risk verdict.`})}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk.risk_level`,type:`integer`,id:`param-data-approval-status-owner-risk-risk-level`,children:_jsxs(_components.p,{children:[`Numeric risk level from `,_jsx(_components.code,{children:`-1`}),` to `,_jsx(_components.code,{children:`5`}),`.`]})}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk.risk_level_display`,type:`string`,id:`param-data-approval-status-owner-risk-risk-level-display`,children:_jsx(_components.p,{children:`Human-readable risk label.`})}),_jsx(ResponseField,{name:`data.approval_status[].owner_risk.risk_details`,type:`string[]`,id:`param-data-approval-status-owner-risk-risk-details`,children:_jsx(_components.p,{children:`Diagnostic labels for logging and support.`})})]})]}),`\n`,_jsx(ResponseField,{name:`data.valid_approved_tokens`,type:`object[]`,id:`param-data-valid-approved-tokens`,children:_jsx(_components.p,{children:`Metadata for indexed tokens represented in the approval rows.`})}),`\n`,_jsxs(Expandable,{title:`Valid token fields`,children:[_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_name`,type:`string | null`,id:`param-data-valid-approved-tokens-token-name`,children:_jsx(_components.p,{children:`Indexed token name.`})}),_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_address`,type:`string`,id:`param-data-valid-approved-tokens-token-address`,children:_jsx(_components.p,{children:`Token contract address.`})}),_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_price`,type:`number | null`,id:`param-data-valid-approved-tokens-token-price`,children:_jsx(_components.p,{children:`Current USD unit price when available.`})}),_jsx(ResponseField,{name:`data.valid_approved_tokens[].token_decimal`,type:`integer | null`,id:`param-data-valid-approved-tokens-token-decimal`,children:_jsx(_components.p,{children:`Token decimals when available.`})})]}),`\n`,_jsx(ResponseField,{name:`data.summary`,type:`object`,id:`param-data-summary`,children:_jsx(_components.p,{children:`Page-level current exposure and risky-approval totals.`})}),`\n`,_jsxs(Expandable,{title:`Summary fields`,children:[_jsx(ResponseField,{name:`data.summary.total_affected_usd_amount`,type:`number`,id:`param-data-summary-total-affected-usd-amount`,children:_jsx(_components.p,{children:`De-duplicated current USD exposure across this page.`})}),_jsx(ResponseField,{name:`data.summary.total_potential_affected_usd_amount`,type:`number`,id:`param-data-summary-total-potential-affected-usd-amount`,children:_jsx(_components.p,{children:`De-duplicated potential USD exposure across this page.`})}),_jsx(ResponseField,{name:`data.summary.risky_approval_count`,type:`integer`,id:`param-data-summary-risky-approval-count`,children:_jsx(_components.p,{children:`Number of approval rows with at least one risky enrichment.`})}),_jsx(ResponseField,{name:`data.summary.total_risky_usd_amount`,type:`number`,id:`param-data-summary-total-risky-usd-amount`,children:_jsx(_components.p,{children:`Current USD exposure across risky approval rows.`})}),_jsx(ResponseField,{name:`data.summary.risky_approval_indices`,type:`integer[]`,id:`param-data-summary-risky-approval-indices`,children:_jsxs(_components.p,{children:[`Zero-based positions of risky rows in `,_jsx(_components.code,{children:`approval_status`}),`.`]})})]}),`\n`,_jsx(ResponseField,{name:`data.has_more`,type:`boolean`,id:`param-data-has-more`,children:_jsxs(_components.p,{children:[`Continue pagination while this value is `,_jsx(_components.code,{children:`true`}),`.`]})}),`\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:[`Render each item in `,_jsx(_components.code,{children:`approval_status`}),`; it contains the raw allowance and the realistic current exposure.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`summary`}),` for page-level totals instead of summing rows yourself.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`spender_risk.is_risky`}),` for the spender decision. Do not derive a verdict from `,_jsx(_components.code,{children:`risk_level`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Continue pagination while `,_jsx(_components.code,{children:`has_more`}),` is `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Treat `,_jsx(_components.code,{children:`\"Unknown\"`}),` and `,_jsx(_components.code,{children:`\"Unlimited\"`}),` USD values as explicit states, never as zero.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`risk-level-reference`,children:`Risk Level Reference`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`is_risky`}),` as the decision field. The numeric level and display label are for presentation.`]}),`\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_level_display`})}),_jsx(_components.th,{children:`Suggested handling`})]})}),_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 data; do not treat 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:`No warning is required.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`1`}),`–`,_jsx(_components.code,{children:`3`})]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Low Risk`})}),_jsx(_components.td,{children:`Show as informational.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Medium Risk`})}),_jsx(_components.td,{children:`Warn and ask the user to confirm.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`5`}),` or higher`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`High Risk`})}),_jsx(_components.td,{children:`Block or show a strong warning.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`errors-and-retry-guidance`,children:`Errors and Retry Guidance`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`Meaning`}),_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`})}),_jsx(_components.td,{children:`Unsupported chain, invalid address, or invalid owner/spender/token combination`}),_jsx(_components.td,{children:`Correct the request; do not retry unchanged.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_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`})}),_jsx(_components.td,{children:`Request schema validation failed`}),_jsx(_components.td,{children:`Correct field names or values.`})]}),_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:`Transient service failure`}),_jsx(_components.td,{children:`Retry a bounded number of times with backoff.`})]})]})]}),`\n`,_jsx(_components.p,{children:`Responses are cached for approximately 60 seconds per unique query and enrichment-flag combination. A recent revocation can remain visible until that cache expires.`})]})}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":"Token Approval Security","api":"POST /v2/hashdit/token-approval-security","mode":"wide","description":null,"href":"/api-reference/endpoint/token-approval-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":"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=\"10\">\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/token-approval-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\"> \"chain_id\": \"56\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"owner\": \"0x26d61f23bbc94d7b2139f9c581722bf4e8b64b87\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"include_balance\": true,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"include_spender_risk\": true\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=\"29\">\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\"> \"count\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\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_more\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"approval_status\"\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\"> \"token\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0x55d398326f99059ff775485246999027b3197955\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"owner\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0x26d61f23bbc94d7b2139f9c581722bf4e8b64b87\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"spender\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0x10ed43c718714eb63d5aa57b78b54704e256024e\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"amount_raw\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"valid_allowance\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"4500000000000000000\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"affected_usd_amount\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4.5\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"potential_affected_usd_amount\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Unlimited\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"spender_risk\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"is_risky\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\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_level_display\"\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_details\"\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:#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\"> \"summary\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"total_affected_usd_amount\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4.5\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"risky_approval_count\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\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":"Token Approval Security","path":"/v2/hashdit/token-approval-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 or invalid keys return HTTP `401` . Keep the key on a trusted server.","required":true}]}},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"chain_id":[{"type":"string","description":"Ethereum, BNB Smart Chain, or TRON identifier, such as `\"1\"` , `\"56\"` , or `\"tron\"` . JSON clients may also send a numeric chain ID. See Supported Chains .","required":true}],"owner":[{"type":"string","description":"Wallet whose outstanding approvals should be returned."}],"spender":[{"type":"string","description":"Filter approvals by spender. At least one of `owner` or `spender` is required."}],"token":[{"type":"string","description":"Optional token filter. It cannot be sent without `owner` or `spender` ."}],"filter":[{"type":"string","description":"Optional result filter, including `only-valid` ."}],"limit":[{"type":"integer","description":"Maximum number of approvals to return on this page."}],"page":[{"type":"integer","description":"1-based page number. Defaults to `1` ."}],"include_balance":[{"type":"boolean","description":"Add the owner’s current token balance and cap immediate exposure to it."}],"include_spender_risk":[{"type":"boolean","description":"Add spender risk enrichment to every row."}],"include_token_risk":[{"type":"boolean","description":"Add token-contract risk enrichment to every row."}],"include_owner_risk":[{"type":"boolean","description":"Add owner-address risk enrichment to every row."}],"include_address_types":[{"type":"boolean","description":"Add `spender_type` and `owner_type` classification fields to every row."}]}}],"examples":{"example":{"value":{"chain_id":"\u003cstring>","owner":"\u003cstring>","spender":"\u003cstring>","token":"\u003cstring>","filter":"\u003cstring>","limit":123,"page":123,"include_balance":true,"include_spender_risk":true,"include_token_risk":true,"include_owner_risk":true,"include_address_types":true}}}}}},"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.count":[{"type":"integer","description":"Number of rows in `approval_status` after filtering."}],"data.approval_status":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"The approvals returned for this query."}],"data.valid_approved_tokens":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Metadata for indexed tokens represented in the approval rows."}],"data.summary":[{"type":"object","properties":{},"description":"Page-level current exposure and risky-approval totals."}],"data.has_more":[{"type":"boolean","description":"Continue pagination while this value is `true` ."}]}}],"examples":{"example":{"value":{"code":"\u003cstring>","status":"\u003cstring>","data.count":123,"data.approval_status":[{}],"data.valid_approved_tokens":[{}],"data.summary":{},"data.has_more":true}}}}}},"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":"Token Approval Security - HashDit API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-17T05:34:45.142Z","originalFileLocation":"api-reference/endpoint/token-approval-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=\"Token Approval 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/token-approval-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=Token+Approval+Security\u0026amp;title=Token+Approval+Security\u0026amp;theme=5ffe7efa8d5388d13f637b82\u0026amp;signature=b61b12be39d96e3f766c2af1952a31ce6a01ad109e46e7af230de9a5252d65b3\">\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=\"Token Approval Security - HashDit API Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hashdit.mintlify.app/_mintlify/api/og/v2?division=Token+Approval+Security\u0026amp;title=Token+Approval+Security\u0026amp;theme=5ffe7efa8d5388d13f637b82\u0026amp;signature=b61b12be39d96e3f766c2af1952a31ce6a01ad109e46e7af230de9a5252d65b3\">\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/token-approval-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/token-approval-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/token-approval-security#webpage\",\"url\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security\",\"name\":\"Token Approval Security\",\"dateModified\":\"2026-10-17T05:34:45.142Z\",\"isPartOf\":{\"@id\":\"https://docs.hashdit.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.hashdit.io/api-reference/endpoint/address-classify\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Token Approval Security\",\"item\":\"https://docs.hashdit.io/api-reference/endpoint/token-approval-security\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Token Approval Security\",\"item\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security#apireference\",\"headline\":\"Token Approval Security\",\"name\":\"Token Approval Security\",\"url\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hashdit.io//api-reference/endpoint/token-approval-security#webpage\"},\"dateModified\":\"2026-10-17T05:34:45.142Z\",\"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","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","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","description":null,"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","description":null,"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"}]}]},"title":"Token Approval Security - HashDit API Documentation","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-R3M_BF4L.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js"]}