Stablecoin-only twin of GET /v3/rwa/{address}: identical response for a stablecoin; answers 404 when the token resolves to an RWA (metadata.asset_type = rwa) and names GET /v3/rwa/{address} as the route to use. The class is derived, not asserted: stablecoin means “pegged and not a classified RWA”, so a token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to tell a confirmed fiat token (fiat) from a not-yet-classified one (null); classification coverage is still expanding, so that second set is shrinking over time.
GET
/
v3
/
stablecoins
/
{address}
Get v3 stablecoin risk detail (Webacy-native)
curl --request GET \ --url https://api.webacy.com/v3/stablecoins/{address} \ --header 'x-api-key: <api-key>'
The token is graded but resolves to an RWA. The message names GET /api/v3/rwa/{address}?chain=<chain> as the route to use.
503
The classification could not be loaded, so membership cannot be proven. Retry, or use GET /v3/rwa/{address}, which serves both segments.
Both return the same status with no distinguishing error code, so the two are only separable by the message text — which is not a stable contract. The safe rule: a 404 here does not imply the token is an RWA, and retrying an ungraded token against /v3/rwa/{address} will 404 as well.The segment gate reads the same derived value the list and grades routes filter on, exposed as metadata.segment and mirrored on the legacy metadata.asset_type, so the three surfaces cannot disagree.
The class is derived, not asserted. A token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to separate a confirmed fiat token ("fiat") from one carrying none (null) — either not classified yet, or classified as stable without a confirmed backing.
metadata.asset_type carries the same value as metadata.segment and predates the split; prefer segment in new integrations.
Reclassification is not immediate here. Membership and the derived classification are both cached, so a freshly retagged token can keep returning its previous answer for a few minutes.
Grading scheme to pin — selects the per-category weights and letter-grade band table. Default v2 (alias of v1's weights, standard 11-band grade scale). peg is the peg-loss-focused weighting. v3/v4/peg-liquidity are registered but withheld behind the v3-grading-scheme feature flag. Unknown values return 400 with the supported list.
Available options:
v1,
v2,
peg
Response
Webacy-native v3 RWA / stablecoin detail.
Webacy-native v3 RWA / stablecoin detail. Same shape family as VaultV3Response, minus the risk pass-through (the v2 RWA grade has no risk envelope; the headline signal is composite, floored by upstream_risk).
Headline grade block. POLARITY (load-bearing): score is 0–100, HIGHER = WORSE (A+ = 0, F = 100) — same direction as the v2 risk.score on the same response. score = max(Σ contributors·weight, upstream_risk): floored from below by the upstream pipeline risk.
How many criteria are live today vs defined by the framework — so what the grade reflects is on the wire, not just in docs. live / total describe the framework; on the RWA / stablecoin detail response measured_criteria / per_category[*].measured add the per-asset count of criteria that produced a measurement (assessed: true), excluding unverified ones.
Curated, grouped passthrough of the RWA grade record's detail-only facts. Always present as a block; individual leaves are null when the underlying value is not available. The safety score/grade are intentionally excluded — composite remains the only grade.
false when the asset classification could not be loaded — metadata.asset_type falls back to stablecoin and asset_class / subclass are null. GET /v3/stablecoins/{address} fails closed (503) in that state.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Webacy Docs","colors":{"primary":"#00d66f","light":"#33cb8b","dark":"#279b71"},"logo":{"light":"https://mintcdn.com/webacy/PZHkbk8qJrPsQSaC/logo/light.png?fit=max\u0026auto=format\u0026n=PZHkbk8qJrPsQSaC\u0026q=85\u0026s=c1933879883f6b01ff46a6e51cfd687f","dark":"https://mintcdn.com/webacy/cDgYsLUzSZsNJNEk/logo/dark.svg?fit=max\u0026auto=format\u0026n=cDgYsLUzSZsNJNEk\u0026q=85\u0026s=e8da7717da0f291d63cc90a4cb4a91af"},"favicon":"https://mintcdn.com/webacy/LaWycqKCQaZgOW1n/favicon.ico?fit=max\u0026auto=format\u0026n=LaWycqKCQaZgOW1n\u0026q=85\u0026s=2a29ac070865d3fb96939b7c595406f9","api":{},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://dapp.webacy.com"}},"footer":{"socials":{"x":"https://x.com/mywebacy","github":"https://github.com/Webacy-Prod"}},"contextual":{"options":["copy","claude","chatgpt","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"webacy","hasAudioNarration":false,"actualSubdomain":"webacy","customDomains":["docs.webacy.com"],"gitSource":{"type":"github","owner":"webacy-prod","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af3a52cec4b4d55a356760a","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Build","count":61},{"language":"default","tag":"API Reference","count":49},{"language":"default","tag":"Overview","count":29},{"language":"default","tag":"Glossary","count":25},{"language":"default","tag":"Risk Intelligence","count":21},{"language":"default","tag":"Learn","count":18},{"language":"default","tag":"Integrations","count":15},{"language":"default","tag":"Stablecoins","count":11},{"language":"default","tag":"Contract Security","count":9},{"language":"default","tag":"SDK","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".gb{display:inline-block;min-width:2.2em;padding:2px 9px;border-radius:6px;font-weight:700;font-size:0.85em;line-height:1.35;text-align:center;letter-spacing:0.02em;white-space:nowrap}.gb-a{background:#047857;color:#ffffff}.gb-b{background:#1d4ed8;color:#ffffff}.gb-c{background:#f59e0b;color:#1f2937}.gb-d{background:#c2410c;color:#ffffff}.gb-f{background:#b91c1c;color:#ffffff}"}],"page":{"pagePath":"api-reference/stablecoins/get-stablecoin-detail","slug":"/api-reference/stablecoins/get-stablecoin-detail","pageMetadata":{"title":"Get Stablecoin Risk Detail","openapi":"GET /v3/stablecoins/{address}","description":"Stablecoin-only twin of `GET /v3/rwa/{address}`: identical response for a stablecoin; answers **404** when the token resolves to an RWA (`metadata.asset_type = rwa`) and names `GET /v3/rwa/{address}` as the route to use. The class is derived, not asserted: `stablecoin` means \"pegged and not a classified RWA\", so a token that is graded but not yet classified takes the stablecoin arm and answers **200**. Read `metadata.asset_class` to tell a confirmed fiat token (`fiat`) from a not-yet-classified one (`null`); classification coverage is still expanding, so that second set is shrinking over time.","href":"/api-reference/stablecoins/get-stablecoin-detail"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Stablecoin-only twin of \", _jsx(_components.code, {\n children: \"GET /v3/rwa/{address}\"\n }), \": identical response for a stablecoin; answers \", _jsx(_components.strong, {\n children: \"404\"\n }), \" when the token resolves to an RWA (\", _jsx(_components.code, {\n children: \"metadata.asset_type = rwa\"\n }), \") and names \", _jsx(_components.code, {\n children: \"GET /v3/rwa/{address}\"\n }), \" as the route to use. The class is derived, not asserted: \", _jsx(_components.code, {\n children: \"stablecoin\"\n }), \" means “pegged and not a classified RWA”, so a token that is graded but not yet classified takes the stablecoin arm and answers \", _jsx(_components.strong, {\n children: \"200\"\n }), \". Read \", _jsx(_components.code, {\n children: \"metadata.asset_class\"\n }), \" to tell a confirmed fiat token (\", _jsx(_components.code, {\n children: \"fiat\"\n }), \") from a not-yet-classified one (\", _jsx(_components.code, {\n children: \"null\"\n }), \"); classification coverage is still expanding, so that second set is shrinking over time.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"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`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Note,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Stablecoin-only twin of `,_jsx(_components.a,{href:`/api-reference/rwa-v3/get-rwa-risk-detail`,children:_jsx(_components.code,{children:`GET /v3/rwa/{address}`})}),`. Identical response for a stablecoin.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Higher score = more risk.`}),` `,_jsx(_components.code,{children:`composite.score`}),` and every `,_jsx(_components.code,{children:`categories.*.score`}),` run `,_jsx(_components.strong,{children:`0–100`}),` (`,_jsx(_components.code,{children:`A+`}),` ≈ 0, `,_jsx(_components.code,{children:`F`}),` ≈ 100). See `,_jsx(_components.a,{href:`/api-reference/rwa-v3#score-polarity`,children:`Score Polarity`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`responses-specific-to-this-route`,children:`Responses specific to this route`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`The token is not in the graded universe at all.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsxs(_components.td,{children:[`The token is graded but resolves to an RWA. The message names `,_jsx(_components.code,{children:`GET /api/v3/rwa/{address}?chain=\u003cchain>`}),` as the route to use.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`503`})}),_jsxs(_components.td,{children:[`The classification could not be loaded, so membership cannot be proven. Retry, or use `,_jsx(_components.code,{children:`GET /v3/rwa/{address}`}),`, which serves both segments.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Both return the same status with no distinguishing error code, so the two are only separable by the message text — which is `,_jsx(_components.strong,{children:`not`}),` a stable contract. The safe rule: a `,_jsx(_components.code,{children:`404`}),` here does not imply the token is an RWA, and retrying an ungraded token against `,_jsx(_components.code,{children:`/v3/rwa/{address}`}),` will `,_jsx(_components.code,{children:`404`}),` as well.`]}),`\n`,_jsxs(_components.p,{children:[`The segment gate reads the same derived value the list and grades routes filter on, exposed as `,_jsx(_components.code,{children:`metadata.segment`}),` and mirrored on the legacy `,_jsx(_components.code,{children:`metadata.asset_type`}),`, so the three surfaces cannot disagree.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The class is derived, not asserted. A token that is graded but not yet classified takes the `,_jsx(_components.code,{children:`stablecoin`}),` arm and answers `,_jsx(_components.code,{children:`200`}),`. Read `,_jsx(_components.code,{children:`metadata.asset_class`}),` to separate a confirmed fiat token (`,_jsx(_components.code,{children:`\"fiat\"`}),`) from one carrying none (`,_jsx(_components.code,{children:`null`}),`) — either not classified yet, or classified as stable without a confirmed backing.`]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`metadata.asset_type`}),` carries the same value as `,_jsx(_components.code,{children:`metadata.segment`}),` and predates the split; prefer `,_jsx(_components.code,{children:`segment`}),` in new integrations.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Reclassification is not immediate here. Membership and the derived classification are both cached, so a freshly retagged token can keep returning its previous answer for a few minutes.`})})]})}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":"Get Stablecoin Risk Detail","openapi":"GET /v3/stablecoins/{address}","description":"Stablecoin-only twin of `GET /v3/rwa/{address}`: identical response for a stablecoin; answers **404** when the token resolves to an RWA (`metadata.asset_type = rwa`) and names `GET /v3/rwa/{address}` as the route to use. The class is derived, not asserted: `stablecoin` means \"pegged and not a classified RWA\", so a token that is graded but not yet classified takes the stablecoin arm and answers **200**. Read `metadata.asset_class` to tell a confirmed fiat token (`fiat`) from a not-yet-classified one (`null`); classification coverage is still expanding, so that second set is shrinking over time.","href":"/api-reference/stablecoins/get-stablecoin-detail"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Responses specific to this route","slug":"responses-specific-to-this-route","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Get v3 stablecoin risk detail (Webacy-native)","description":"Stablecoin-only twin of `GET /v3/rwa/{address}`: identical response for a stablecoin; answers **404** when the token resolves to an RWA (`metadata.asset_type = rwa`) and names `GET /v3/rwa/{address}` as the route to use. The class is derived, not asserted: `stablecoin` means \"pegged and not a classified RWA\", so a token that is graded but not yet classified takes the stablecoin arm and answers **200**. Read `metadata.asset_class` to tell a confirmed fiat token (`fiat`) from a not-yet-classified one (`null`); classification coverage is still expanding, so that second set is shrinking over time.","operationId":"getStablecoinRiskDetailV3","tags":["Stablecoins v3"],"security":["36a1ea1a-c852-4fcb-b153-a75550792a14"],"parameters":["d449478d-b8db-4189-abd7-6c8b08c01b32","cc69fa35-5f8f-4891-9648-bb8bed1f8461","149dd51c-0d48-4046-b615-d19aab439e0a"],"responses":{"200":"5ada8bcd-dbe8-4677-ad43-1fb11b09fe71","400":"9fee4c53-8c41-4d61-94af-4e7fda40c5ce","402":"6cf64fee-aab0-4ec4-9f15-cd7615e5e792","403":"11317a31-0078-4697-a073-86b13f3b8d89","404":"8c19452f-24f0-4af9-b061-b3c375f8afc3","503":"16854325-f7fb-4e70-9bbc-48461ebcbc17"},"method":"get","type":"path","servers":["c5a517c3-fc09-4c20-b482-4cd1bf61c717","2beb6b2f-4ec3-43b7-b1b1-ee13520757e0","ac016a2f-99f2-4303-92c0-4f30a6b8edb2"],"path":"/v3/stablecoins/{address}","baseUrlOptions":["https://api.webacy.com","https://api-development.webacy.com","http://0.0.0.0:3030/api/v1/risk-score"],"title":"Get v3 stablecoin risk detail (Webacy-native)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d449478d-b8db-4189-abd7-6c8b08c01b32":{"name":"address","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Token contract address.","uniqueKey":"","typeLabel":"string"},"description":"Token contract address."},"cc69fa35-5f8f-4891-9648-bb8bed1f8461":{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["eth","base","bsc","pol","opt","arb","avax","sol","stellar","hedera","tron","sui","ton","sei","btc","gnosis"],"isRequired":true,"description":"Chain identifier (e.g. eth, base, pol). Required.","uniqueKey":"","typeLabel":"enum\u003cstring>"},"description":"Chain identifier (e.g. eth, base, pol). Required."},"149dd51c-0d48-4046-b615-d19aab439e0a":{"name":"grading_scheme","in":"query","required":false,"schema":{"type":"string","enum":["v1","v2","peg"],"default":"v2","isRequired":false,"description":"Grading scheme to pin — selects the per-category weights and letter-grade band table. Default `v2` (alias of `v1`'s weights, standard 11-band grade scale). `peg` is the peg-loss-focused weighting. `v3`/`v4`/`peg-liquidity` are registered but withheld behind the `v3-grading-scheme` feature flag. Unknown values return 400 with the supported list.","uniqueKey":"","typeLabel":"enum\u003cstring>"},"description":"Grading scheme to pin — selects the per-category weights and letter-grade band table. Default `v2` (alias of `v1`'s weights, standard 11-band grade scale). `peg` is the peg-loss-focused weighting. `v3`/`v4`/`peg-liquidity` are registered but withheld behind the `v3-grading-scheme` feature flag. Unknown values return 400 with the supported list."}},"responses":{"5ada8bcd-dbe8-4677-ad43-1fb11b09fe71":{"headers":{"x-credit-token":{"description":"Opaque bearer token for a prepaid x402 CU balance. Send it as `x-credit-token` to spend that balance. If the balance is insufficient and a payment for its verified payer settles, the same token is topped up and returned; otherwise the paid call returns a new independent token.","schema":{"type":"string"}},"x-credit-balance-cu":{"description":"CU remaining for the returned or presented credit token after this call.","schema":{"type":"integer","minimum":0,"example":480}},"X-Request-Id":{"description":"Server-issued id for this request, returned on every response, success or error. Quote it to Webacy support to find the request. On risk endpoints it equals the `check_id` body field.","schema":{"type":"string","format":"uuid","example":"3f1c2b9e-7a4d-4e1b-9c55-0d6a2f8e4b71"}}},"description":"Webacy-native v3 RWA / stablecoin detail.","content":{"application/json":{"schema":{"type":"object","description":"Webacy-native v3 RWA / stablecoin detail. Same shape family as VaultV3Response, minus the `risk` pass-through (the v2 RWA grade has no risk envelope; the headline signal is `composite`, floored by `upstream_risk`).","properties":{"schema_version":{"type":"string","example":"3.5","isRequired":true,"uniqueKey":"schema_version","typeLabel":"string"},"metadata":{"type":"object","description":"Structural fact sheet for an RWA / stablecoin — identities only.","properties":{"address":{"type":"string","isRequired":true,"uniqueKey":"metadata.address","typeLabel":"string"},"chain":{"type":"string","isRequired":true,"uniqueKey":"metadata.chain","typeLabel":"string"},"symbol":{"type":"string","isRequired":true,"uniqueKey":"metadata.symbol","typeLabel":"string"},"name":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"metadata.name.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"metadata.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"metadata.name","typeLabel":"string | null"},"asset_type":{"type":"string","enum":["stablecoin","rwa"],"isRequired":true,"uniqueKey":"metadata.asset_type","typeLabel":"enum\u003cstring>"},"market_cap_usd":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"metadata.market_cap_usd.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"metadata.market_cap_usd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"metadata.market_cap_usd","typeLabel":"number | null"},"asset_class":{"oneOf":[{"type":"string","example":"fiat","description":"Asset class; null when unclassified.","uniqueKey":"metadata.asset_class.oneOf.0","typeLabel":"string"},{"type":"null","example":"fiat","description":"Asset class; null when unclassified.","uniqueKey":"metadata.asset_class.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata.asset_class","typeLabel":"string | null"},"is_rwa":{"oneOf":[{"type":"boolean","description":"Real-world-asset flag; null when unclassified.","uniqueKey":"metadata.is_rwa.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Real-world-asset flag; null when unclassified.","uniqueKey":"metadata.is_rwa.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata.is_rwa","typeLabel":"boolean | null"},"segment":{"type":"string","enum":["stablecoin","rwa"],"description":"The computed category the `segment` filter selects on, derived from `asset_class` / `is_rwa` (`rwa` = `is_rwa` true and not fiat, `stablecoin` = everything else). Returned so a client can see why a row matched without re-implementing the rule. It is a derived category, not a classification dimension value.","uniqueKey":"metadata.segment","typeLabel":"enum\u003cstring>"},"subclass":{"oneOf":[{"type":"string","example":"tbill","description":"Asset subclass; null when none.","uniqueKey":"metadata.subclass.oneOf.0","typeLabel":"string"},{"type":"null","example":"tbill","description":"Asset subclass; null when none.","uniqueKey":"metadata.subclass.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata.subclass","typeLabel":"string | null"},"peg_behavior":{"oneOf":[{"type":"string","example":"fiat-stable","description":"Peg behavior (fiat-stable, nav-stable, floats-with-underlying, unpegged, stable-unspecified). Null when the token has not been classified yet.","uniqueKey":"metadata.peg_behavior.oneOf.0","typeLabel":"string"},{"type":"null","example":"fiat-stable","description":"Peg behavior (fiat-stable, nav-stable, floats-with-underlying, unpegged, stable-unspecified). Null when the token has not been classified yet.","uniqueKey":"metadata.peg_behavior.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata.peg_behavior","typeLabel":"string | null"},"mechanics":{"oneOf":[{"type":"array","items":{"type":"string","example":"custodial-issuer","uniqueKey":"metadata.mechanics.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Structural mechanics of the token (custodial-issuer, controlled-mint, wrapper, bridged, liquid-staking, liquid-restaking, vault, pool, base-asset). Empty when none applies. Null when the token has not been classified yet.","uniqueKey":"metadata.mechanics.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string","example":"custodial-issuer"},"description":"Structural mechanics of the token (custodial-issuer, controlled-mint, wrapper, bridged, liquid-staking, liquid-restaking, vault, pool, base-asset). Empty when none applies. Null when the token has not been classified yet.","uniqueKey":"metadata.mechanics.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata.mechanics","typeLabel":"string[] | null"}},"required":["address","chain","symbol","name","asset_type","market_cap_usd"],"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"composite":{"type":"object","description":"Headline grade block. POLARITY (load-bearing): `score` is 0–100, HIGHER = WORSE (A+ = 0, F = 100) — same direction as the v2 `risk.score` on the same response. `score = max(Σ contributors·weight, upstream_risk)`: floored from below by the upstream pipeline risk.","properties":{"grading_scheme":{"type":"string","example":"v1","isRequired":true,"uniqueKey":"composite.grading_scheme","typeLabel":"string"},"grade":{"oneOf":[{"type":"string","description":"Letter grade. `null` only for an unrated vault (`rated: false`).","enum":["A+","A","A-","B+","B","B-","C","C-","D","E","F"],"isRequired":true,"uniqueKey":"composite.grade.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Letter grade. `null` only for an unrated vault (`rated: false`).","enum":["A+","A","A-","B+","B","B-","C","C-","D","E","F"],"isRequired":true,"uniqueKey":"composite.grade.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"composite.grade","typeLabel":"enum\u003cstring> | null"},"stars":{"oneOf":[{"type":"integer","description":"1–5 stars. `null` only for an unrated vault (`rated: false`).","minimum":1,"maximum":5,"isRequired":true,"uniqueKey":"composite.stars.oneOf.0","typeLabel":"integer"},{"type":"null","description":"1–5 stars. `null` only for an unrated vault (`rated: false`).","minimum":1,"maximum":5,"isRequired":true,"uniqueKey":"composite.stars.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"composite.stars","typeLabel":"integer | null"},"score":{"oneOf":[{"type":"number","description":"0–100, higher = worse; rounded to one decimal. `null` only for an unrated vault (`rated: false`).","isRequired":true,"uniqueKey":"composite.score.oneOf.0","typeLabel":"number"},{"type":"null","description":"0–100, higher = worse; rounded to one decimal. `null` only for an unrated vault (`rated: false`).","isRequired":true,"uniqueKey":"composite.score.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"composite.score","typeLabel":"number | null"},"contributors":{"type":"object","description":"Dense map: every WebacyCategory key is present.","additionalProperties":{"type":"object","description":"One row of `composite.contributors`: a category's resolved score and its weight under the current grading scheme.","properties":{"score":{"type":"number","description":"0–100, higher = worse. Integer.","isRequired":true,"uniqueKey":"composite.contributors.additionalProperties.score","typeLabel":"number"},"weight":{"type":"number","description":"Effective category weight. Sums to 1 across categories, except under a renormalising preview scheme when no positively weighted category is assessed, where every weight is 0. Under the default and other served grading schemes this is the scheme's declared weight. Under the preview schemes that renormalise, a category with `assessed: false` carries 0 and the remaining weights are rescaled proportionally.","isRequired":true,"uniqueKey":"composite.contributors.additionalProperties.weight","typeLabel":"number"},"weighted_contribution":{"type":"number","description":"Points this category adds to the framework composite — `score × weight`, rounded to one decimal. The rounded sum across contributors approximates the framework composite (each contribution is rounded independently).","uniqueKey":"composite.contributors.additionalProperties.weighted_contribution","typeLabel":"number"}},"required":["score","weight"],"uniqueKey":"composite.contributors.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"composite.contributors","typeLabel":"object"},"upstream_risk":{"oneOf":[{"type":"number","description":"Verbatim upstream pipeline risk (0–100, higher = worse). Acts as a lower bound on `score`. `null` when there is no upstream score (data-only vaults, e.g. Kamino on Solana awaiting native scoring) — in that case no upstream floor is applied. Guard against null before formatting.","isRequired":true,"uniqueKey":"composite.upstream_risk.oneOf.0","typeLabel":"number"},{"type":"null","description":"Verbatim upstream pipeline risk (0–100, higher = worse). Acts as a lower bound on `score`. `null` when there is no upstream score (data-only vaults, e.g. Kamino on Solana awaiting native scoring) — in that case no upstream floor is applied. Guard against null before formatting.","isRequired":true,"uniqueKey":"composite.upstream_risk.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"composite.upstream_risk","typeLabel":"number | null"},"clamped_by_upstream":{"type":"boolean","description":"true iff upstream_risk exceeded the framework composite and pulled `score` up.","isRequired":true,"uniqueKey":"composite.clamped_by_upstream","typeLabel":"boolean"},"score_source":{"type":"string","enum":["framework","upstream","floor","unrated"],"description":"What set the emitted `score`: `framework` when the v3 weighted composite won, `upstream` when the pipeline floor did (equivalent to `clamped_by_upstream`), `floor` when a hard guardrail floor did (a critical red flag such as a critical depeg, an exit recommendation or effectively-locked liquidity), or `unrated` for an unrated vault (`rated: false`), which has no score. When `upstream` or `floor`, `drivers` can be empty even on a bad grade.","uniqueKey":"composite.score_source","typeLabel":"enum\u003cstring>"},"rated":{"type":"boolean","description":"Vault composites only. `false` when the vault has not been assessed (no upstream risk score and no guardrail floor): `grade`, `score` and `stars` are `null` and `score_source` is `unrated`. Render it as Unrated, never as a grade. `true` for every graded vault. Not present on RWA or stablecoin composites.","uniqueKey":"composite.rated","typeLabel":"boolean"},"drivers":{"type":"array","description":"Ranked subcategory drivers of the grade (descending by `weighted_contribution`), each with the warn/fail criteria and evidence that drove it. Detail endpoints only (`GET /v3/vaults/{address}`, `GET /v3/rwa/{address}`); batch/list omit it. Read with `drivers_complete`: an empty `[]` is only a clean grade when `drivers_complete` is true.","items":{"type":"object","description":"One ranked subcategory driver of the grade (descending by `weighted_contribution`), with the warn/fail criteria that drove it. NOTE: for RWA, `criteria` are descriptive context, not a numeric decomposition of `score` (RWA category scores come from inverted v2 pillars, not criterion penalties).","properties":{"category":{"type":"string","example":"market_liquidity","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].category","typeLabel":"string"},"category_name":{"type":"string","example":"Market \u0026 liquidity","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].category_name","typeLabel":"string"},"score":{"type":"number","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].score","typeLabel":"number"},"weight":{"type":"number","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].weight","typeLabel":"number"},"weighted_contribution":{"type":"number","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].weighted_contribution","typeLabel":"number"},"criteria":{"type":"array","items":{"type":"object","description":"One non-pass criterion inside a composite driver — the specific warn/fail check that pulled a subcategory's score up, with the evidence behind it.","properties":{"key":{"type":"string","example":"large_holder_concentration","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].criteria.items.[INDEX].key","typeLabel":"string"},"name":{"type":"string","example":"Large-holder concentration bounded","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].criteria.items.[INDEX].name","typeLabel":"string"},"status":{"type":"string","enum":["warn","fail"],"isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].criteria.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"assessed":{"type":"boolean","description":"`false` = an unverified missing-data `warn` listed for completeness, not a finding driving the grade.","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].criteria.items.[INDEX].assessed","typeLabel":"boolean"},"evidence":{"type":"object","description":"Underlying values behind the verdict, when available.","additionalProperties":true,"example":{"hci_10":0.34},"uniqueKey":"composite.drivers.items.[INDEX].criteria.items.[INDEX].evidence","typeLabel":"object"}},"required":["key","name","status","assessed"],"uniqueKey":"composite.drivers.items.[INDEX].criteria.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].criteria","typeLabel":"object[]"},"reasons":{"type":"array","items":{"type":"object","description":"One plain-language reason behind a category score.","properties":{"key":{"type":"string","description":"The criterion key; or `baseline` when an RWA category's underlying risk-model pillar alone rates it medium risk or worse; or `credit` for an RWA audit or trusted-issuer credit that lowered a score that has other reasons.","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].key","typeLabel":"string"},"status":{"type":"string","enum":["pass","warn","fail"],"description":"The criterion's status. `pass` only on a `credit`. A `baseline` reads `warn` at medium (≥ 25) and `fail` at high (≥ 50).","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"Short, vendor-neutral, sentence-case reason, e.g. \"Owner is an EOA (not a multisig)\" or \"Very low utilisation (idle capital)\". Vault reasons are phrased for the risk flag that fired (schema 3.11; earlier versions served the flag name).","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].text","typeLabel":"string"},"points":{"oneOf":[{"type":"number","description":"What this reason adds to `score`. Vaults: exact, 25 per fail and 10 per warn, before the 100 cap. RWA: `null` for a failing criterion (failures fold in jointly), 0 for a measured warn, the pillar value for a `baseline` that set the score (0 when failures set it), negative for `credit`. Summing reasons reproduces the score for vaults only; an RWA score is max(baseline, failures) minus credits.","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].points.oneOf.0","typeLabel":"number"},{"type":"null","description":"What this reason adds to `score`. Vaults: exact, 25 per fail and 10 per warn, before the 100 cap. RWA: `null` for a failing criterion (failures fold in jointly), 0 for a measured warn, the pillar value for a `baseline` that set the score (0 when failures set it), negative for `credit`. Summing reasons reproduces the score for vaults only; an RWA score is max(baseline, failures) minus credits.","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].points.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].points","typeLabel":"number | null"},"assessed":{"type":"boolean","description":"Same as the criterion's `assessed`; always true for `baseline` and `credit`.","isRequired":true,"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX].assessed","typeLabel":"boolean"}},"required":["key","status","text","points","assessed"],"uniqueKey":"composite.drivers.items.[INDEX].reasons.items.[INDEX]","typeLabel":"object"},"description":"Detail responses only (schema 3.10). The same plain-language reasons as `categories[category].reasons` (the whole list, including an RWA `credit`), so a driver and its category give one explanation. Optional: absent where the categories carry no `reasons`; `[]` where the category has nothing to explain.","uniqueKey":"composite.drivers.items.[INDEX].reasons","typeLabel":"object[]"}},"required":["category","category_name","score","weight","weighted_contribution","criteria"],"uniqueKey":"composite.drivers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"composite.drivers","typeLabel":"object[]"},"drivers_complete":{"type":"boolean","description":"Whether `drivers` is the complete explanation of the grade. `true` (framework-sourced) ⇒ `drivers` fully attribute it and `[]` means a genuinely clean grade. `false` (upstream-clamped) ⇒ `drivers` reflect only the framework sub-signal and can be empty even on a bad grade — render `upstream_risk`, not \"no risk\". Detail endpoints only, alongside `drivers`.","uniqueKey":"composite.drivers_complete","typeLabel":"boolean"}},"required":["grading_scheme","grade","stars","score","contributors","upstream_risk","clamped_by_upstream"],"isRequired":true,"uniqueKey":"composite","typeLabel":"object"},"categories":{"type":"object","additionalProperties":{"type":"object","description":"A Webacy-native category. `score` is 0–100, HIGHER = WORSE (risk-magnitude; A+ = 0, F = 100). Categories with no live criteria emit `{ score: 0, assessed: false, criteria: {} }`.","properties":{"score":{"type":"number","description":"0–100, higher = worse. Integer in practice. Read with `assessed`: a not-assessed category serves 0, which then means \"not assessed\", not \"no risk\".","isRequired":true,"uniqueKey":"categories.additionalProperties.score","typeLabel":"number"},"assessed":{"type":"boolean","description":"`false` when nothing in the category was measured (no criterion with `assessed: true` and no upstream pillar behind the score). Under the default and other served grading schemes the composite still averages it in at its declared weight (grades unchanged). Under the preview schemes that renormalise, it is dropped from the weighted average and its contributor carries `weight: 0`.","isRequired":true,"uniqueKey":"categories.additionalProperties.assessed","typeLabel":"boolean"},"criteria":{"type":"object","additionalProperties":{"type":"object","description":"One graded criterion: pass/warn/fail verdict, human-readable label, provenance, and the underlying values behind the verdict.","properties":{"status":{"type":"string","enum":["pass","warn","fail"],"isRequired":true,"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.status","typeLabel":"enum\u003cstring>"},"data_quality":{"type":"object","description":"Provenance envelope on every emitted v3 criterion. Vault criteria currently report vault-level freshness uniformly; RWA / stablecoin criteria report true per-source values.","properties":{"confidence":{"type":"number","description":"0–1 confidence in the underlying data point.","example":0.95,"isRequired":true,"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.data_quality.confidence","typeLabel":"number"},"last_observed_at":{"type":"string","format":"date-time","description":"Upstream observation timestamp.","isRequired":true,"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.data_quality.last_observed_at","typeLabel":"string\u003cdate-time>"},"source":{"type":"string","example":"rwa-grade-pipeline","isRequired":true,"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.data_quality.source","typeLabel":"string"}},"required":["confidence","last_observed_at","source"],"isRequired":true,"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.data_quality","typeLabel":"object"},"assessed":{"type":"boolean","description":"`false` when the verdict is a missing-data default, not a measurement: no source value was available, so nothing was measured and the criterion is not counted in `coverage.measured_criteria`. Such a criterion usually reads `warn` (\"unverified\"), but can read `pass` where the absence of a signal is the default verdict (e.g. a chain criterion with no current chain-risk data). `true` when a value drove `status`. Branch on this field, never on `status`.","isRequired":true,"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.assessed","typeLabel":"boolean"},"name":{"type":"string","description":"Human-readable criterion label, mirrored from the framework taxonomy.","example":"Large-holder concentration bounded","uniqueKey":"categories.additionalProperties.criteria.additionalProperties.name","typeLabel":"string"},"evidence":{"type":"object","description":"Underlying values behind the verdict — the actual risk numbers (e.g. `{ hci_10: 0.34 }`, `{ looping_rate: 0.82 }`, `{ audit_count: 1, auditor_tier: \"mid\" }`). For tag-driven vault criteria with no numeric field, a non-pass verdict carries `{ triggered_by_tag: \u003ctag> }`. Omitted when no value is available.","additionalProperties":true,"example":{"hci_10":0.34},"uniqueKey":"categories.additionalProperties.criteria.additionalProperties.evidence","typeLabel":"object"}},"required":["status","data_quality","assessed"],"uniqueKey":"categories.additionalProperties.criteria.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"categories.additionalProperties.criteria","typeLabel":"object"},"tier":{"type":"string","enum":["unknown","low","medium","high","critical"],"description":"Detail responses only. Risk band of `score` with inclusive bounds: ≥ 75 critical, ≥ 50 high, ≥ 25 medium, else low. `unknown` when `assessed` is false or the vault is unrated.","uniqueKey":"categories.additionalProperties.tier","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Detail responses only. What the category measures (the methodology copy, also served by `/api/v3/framework`).","uniqueKey":"categories.additionalProperties.description","typeLabel":"string"},"reasons":{"type":"array","items":{"type":"object","description":"One plain-language reason behind a category score.","properties":{"key":{"type":"string","description":"The criterion key; or `baseline` when an RWA category's underlying risk-model pillar alone rates it medium risk or worse; or `credit` for an RWA audit or trusted-issuer credit that lowered a score that has other reasons.","isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].key","typeLabel":"string"},"status":{"type":"string","enum":["pass","warn","fail"],"description":"The criterion's status. `pass` only on a `credit`. A `baseline` reads `warn` at medium (≥ 25) and `fail` at high (≥ 50).","isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"Short, vendor-neutral, sentence-case reason, e.g. \"Owner is an EOA (not a multisig)\" or \"Very low utilisation (idle capital)\". Vault reasons are phrased for the risk flag that fired (schema 3.11; earlier versions served the flag name).","isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].text","typeLabel":"string"},"points":{"oneOf":[{"type":"number","description":"What this reason adds to `score`. Vaults: exact, 25 per fail and 10 per warn, before the 100 cap. RWA: `null` for a failing criterion (failures fold in jointly), 0 for a measured warn, the pillar value for a `baseline` that set the score (0 when failures set it), negative for `credit`. Summing reasons reproduces the score for vaults only; an RWA score is max(baseline, failures) minus credits.","isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].points.oneOf.0","typeLabel":"number"},{"type":"null","description":"What this reason adds to `score`. Vaults: exact, 25 per fail and 10 per warn, before the 100 cap. RWA: `null` for a failing criterion (failures fold in jointly), 0 for a measured warn, the pillar value for a `baseline` that set the score (0 when failures set it), negative for `credit`. Summing reasons reproduces the score for vaults only; an RWA score is max(baseline, failures) minus credits.","isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].points.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].points","typeLabel":"number | null"},"assessed":{"type":"boolean","description":"Same as the criterion's `assessed`; always true for `baseline` and `credit`.","isRequired":true,"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX].assessed","typeLabel":"boolean"}},"required":["key","status","text","points","assessed"],"uniqueKey":"categories.additionalProperties.reasons.items.[INDEX]","typeLabel":"object"},"description":"Detail responses only. Why the category scores what it does, biggest driver first. Empty for a clean or not-assessed category. Lists the non-pass criteria that were measured or that move the score; an unverified RWA criterion moves nothing and stays in `criteria` only.","uniqueKey":"categories.additionalProperties.reasons","typeLabel":"object[]"}},"required":["score","assessed","criteria"],"uniqueKey":"categories.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"categories","typeLabel":"object"},"coverage":{"type":"object","description":"How many criteria are live today vs defined by the framework — so what the grade reflects is on the wire, not just in docs. `live` / `total` describe the framework; on the RWA / stablecoin detail response `measured_criteria` / `per_category[*].measured` add the per-asset count of criteria that produced a measurement (`assessed: true`), excluding unverified ones.","properties":{"framework_version":{"type":"string","example":"v1","isRequired":true,"uniqueKey":"coverage.framework_version","typeLabel":"string"},"total_criteria":{"type":"integer","isRequired":true,"uniqueKey":"coverage.total_criteria","typeLabel":"integer"},"live_criteria":{"type":"integer","isRequired":true,"uniqueKey":"coverage.live_criteria","typeLabel":"integer"},"per_category":{"type":"object","additionalProperties":{"type":"object","properties":{"live":{"type":"integer","isRequired":true,"uniqueKey":"coverage.per_category.additionalProperties.live","typeLabel":"integer"},"total":{"type":"integer","isRequired":true,"uniqueKey":"coverage.per_category.additionalProperties.total","typeLabel":"integer"},"measured":{"type":"integer","description":"RWA / stablecoin detail only: how many of `live` produced a measurement for this asset (`assessed: true`); unverified criteria are excluded. Absent on taxonomy-only coverage.","uniqueKey":"coverage.per_category.additionalProperties.measured","typeLabel":"integer"}},"required":["live","total"],"uniqueKey":"coverage.per_category.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"coverage.per_category","typeLabel":"object"},"measured_criteria":{"type":"integer","description":"RWA / stablecoin detail only: Σ `per_category[*].measured` — live criteria measured for this asset.","uniqueKey":"coverage.measured_criteria","typeLabel":"integer"}},"required":["framework_version","total_criteria","live_criteria","per_category"],"isRequired":true,"uniqueKey":"coverage","typeLabel":"object"},"attributes":{"type":"object","description":"Curated, grouped passthrough of the RWA grade record's detail-only facts. Always present as a block; individual leaves are null when the underlying value is not available. The safety score/grade are intentionally excluded — `composite` remains the only grade.","properties":{"market":{"type":"object","properties":{"price_usd":{"oneOf":[{"type":"number","description":"Live monitor price (the overlaid value whose timestamp is metadata.price_as_of), not the 6-hourly snapshot.","isRequired":true,"uniqueKey":"attributes.market.price_usd.oneOf.0","typeLabel":"number"},{"type":"null","description":"Live monitor price (the overlaid value whose timestamp is metadata.price_as_of), not the 6-hourly snapshot.","isRequired":true,"uniqueKey":"attributes.market.price_usd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.market.price_usd","typeLabel":"number | null"},"volume_24h_usd":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.market.volume_24h_usd.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.market.volume_24h_usd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.market.volume_24h_usd","typeLabel":"number | null"}},"required":["price_usd","volume_24h_usd"],"isRequired":true,"uniqueKey":"attributes.market","typeLabel":"object"},"liquidity":{"type":"object","properties":{"total_dex_liquidity_usd":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.liquidity.total_dex_liquidity_usd.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.liquidity.total_dex_liquidity_usd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.liquidity.total_dex_liquidity_usd","typeLabel":"number | null"},"liquidity_depth_tier":{"oneOf":[{"type":"string","enum":["deep","medium","shallow","very_low",null],"isRequired":true,"uniqueKey":"attributes.liquidity.liquidity_depth_tier.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["deep","medium","shallow","very_low",null],"isRequired":true,"uniqueKey":"attributes.liquidity.liquidity_depth_tier.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.liquidity.liquidity_depth_tier","typeLabel":"enum\u003cstring> | null"}},"required":["total_dex_liquidity_usd","liquidity_depth_tier"],"isRequired":true,"uniqueKey":"attributes.liquidity","typeLabel":"object"},"classification":{"type":"object","properties":{"token_type":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.classification.token_type.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.classification.token_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.classification.token_type","typeLabel":"string | null"}},"required":["token_type"],"isRequired":true,"uniqueKey":"attributes.classification","typeLabel":"object"},"issuer":{"type":"object","properties":{"issuer":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.issuer.issuer.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.issuer.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.issuer","typeLabel":"string | null"},"is_bridged":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"attributes.issuer.is_bridged.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.is_bridged.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.is_bridged","typeLabel":"boolean | null"},"bridged_fraction":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.issuer.bridged_fraction.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.bridged_fraction.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.bridged_fraction","typeLabel":"number | null"},"reserve_attestation_provider":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_provider.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_provider.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_provider","typeLabel":"string | null"},"reserve_attestation_type":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_type.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_type","typeLabel":"string | null"},"reserve_attestation_date":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_date.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_date","typeLabel":"string | null"},"reserve_attestation_lag_days":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_lag_days.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_lag_days.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.issuer.reserve_attestation_lag_days","typeLabel":"number | null"}},"required":["issuer","is_bridged","bridged_fraction","reserve_attestation_provider","reserve_attestation_type","reserve_attestation_date","reserve_attestation_lag_days"],"isRequired":true,"uniqueKey":"attributes.issuer","typeLabel":"object"},"audits":{"type":"object","properties":{"audit_count":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.audits.audit_count.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.audits.audit_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.audits.audit_count","typeLabel":"number | null"},"auditor_tier":{"oneOf":[{"type":"string","enum":["top","mid","low","basic",null],"isRequired":true,"uniqueKey":"attributes.audits.auditor_tier.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["top","mid","low","basic",null],"isRequired":true,"uniqueKey":"attributes.audits.auditor_tier.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.audits.auditor_tier","typeLabel":"enum\u003cstring> | null"},"last_audit_date":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.audits.last_audit_date.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.audits.last_audit_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.audits.last_audit_date","typeLabel":"string | null"},"audit_firms":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"attributes.audits.audit_firms.oneOf.0.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"attributes.audits.audit_firms.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"isRequired":true,"uniqueKey":"attributes.audits.audit_firms.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.audits.audit_firms","typeLabel":"string[] | null"}},"required":["audit_count","auditor_tier","last_audit_date","audit_firms"],"isRequired":true,"uniqueKey":"attributes.audits","typeLabel":"object"},"governance":{"type":"object","properties":{"governance_tier":{"oneOf":[{"type":"string","enum":["strong","adequate","weak","critical",null],"isRequired":true,"uniqueKey":"attributes.governance.governance_tier.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["strong","adequate","weak","critical",null],"isRequired":true,"uniqueKey":"attributes.governance.governance_tier.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.governance_tier","typeLabel":"enum\u003cstring> | null"},"owner_is_multisig":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"attributes.governance.owner_is_multisig.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.owner_is_multisig.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.owner_is_multisig","typeLabel":"boolean | null"},"multisig_threshold":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.multisig_threshold.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.multisig_threshold.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.multisig_threshold","typeLabel":"number | null"},"multisig_signer_count":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.multisig_signer_count.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.multisig_signer_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.multisig_signer_count","typeLabel":"number | null"},"owner_timelock_seconds":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.owner_timelock_seconds.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.owner_timelock_seconds.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.owner_timelock_seconds","typeLabel":"number | null"},"upgrade_admin_address":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.governance.upgrade_admin_address.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.upgrade_admin_address.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.upgrade_admin_address","typeLabel":"string | null"},"upgrade_admin_is_eoa":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"attributes.governance.upgrade_admin_is_eoa.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.upgrade_admin_is_eoa.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.upgrade_admin_is_eoa","typeLabel":"boolean | null"},"currently_paused":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"attributes.governance.currently_paused.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.currently_paused.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.currently_paused","typeLabel":"boolean | null"},"governance_alert":{"oneOf":[{"type":"string","enum":["critical","warning",null],"isRequired":true,"uniqueKey":"attributes.governance.governance_alert.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["critical","warning",null],"isRequired":true,"uniqueKey":"attributes.governance.governance_alert.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.governance_alert","typeLabel":"enum\u003cstring> | null"},"governance_alert_detail":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.governance.governance_alert_detail.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.governance_alert_detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.governance_alert_detail","typeLabel":"string | null"},"mint_role_is_single_eoa":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"attributes.governance.mint_role_is_single_eoa.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.mint_role_is_single_eoa.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_role_is_single_eoa","typeLabel":"boolean | null"},"mint_role_alert":{"oneOf":[{"type":"string","enum":["critical","warning",null],"isRequired":true,"uniqueKey":"attributes.governance.mint_role_alert.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["critical","warning",null],"isRequired":true,"uniqueKey":"attributes.governance.mint_role_alert.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_role_alert","typeLabel":"enum\u003cstring> | null"},"mint_authority":{"oneOf":[{"type":"object","description":"Structured mint-authority descriptor; shape omitted here.","isRequired":true,"uniqueKey":"attributes.governance.mint_authority.oneOf.0","typeLabel":"object"},{"type":"null","description":"Structured mint-authority descriptor; shape omitted here.","isRequired":true,"uniqueKey":"attributes.governance.mint_authority.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_authority","typeLabel":"object | null"},"mint_activity_total_minted_30d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.mint_activity_total_minted_30d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.mint_activity_total_minted_30d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_activity_total_minted_30d","typeLabel":"number | null"},"mint_activity_tx_count_30d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.mint_activity_tx_count_30d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.mint_activity_tx_count_30d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_activity_tx_count_30d","typeLabel":"number | null"},"mint_activity_alert":{"oneOf":[{"type":"string","enum":["critical","warning",null],"isRequired":true,"uniqueKey":"attributes.governance.mint_activity_alert.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["critical","warning",null],"isRequired":true,"uniqueKey":"attributes.governance.mint_activity_alert.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_activity_alert","typeLabel":"enum\u003cstring> | null"},"upgrades_30d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.upgrades_30d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.upgrades_30d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.upgrades_30d","typeLabel":"number | null"},"pause_events_90d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.pause_events_90d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.pause_events_90d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.pause_events_90d","typeLabel":"number | null"},"ownership_changes_90d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.ownership_changes_90d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.ownership_changes_90d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.ownership_changes_90d","typeLabel":"number | null"},"mint_role_grants_90d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.mint_role_grants_90d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.mint_role_grants_90d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_role_grants_90d","typeLabel":"number | null"},"mint_role_revocations_90d":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.governance.mint_role_revocations_90d.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.governance.mint_role_revocations_90d.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.governance.mint_role_revocations_90d","typeLabel":"number | null"}},"required":["governance_tier","owner_is_multisig","multisig_threshold","multisig_signer_count","owner_timelock_seconds","upgrade_admin_address","upgrade_admin_is_eoa","currently_paused","governance_alert","governance_alert_detail","mint_role_is_single_eoa","mint_role_alert","mint_authority","mint_activity_total_minted_30d","mint_activity_tx_count_30d","mint_activity_alert","upgrades_30d","pause_events_90d","ownership_changes_90d","mint_role_grants_90d","mint_role_revocations_90d"],"isRequired":true,"uniqueKey":"attributes.governance","typeLabel":"object"},"hacks":{"type":"object","properties":{"has_exploit_history":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"attributes.hacks.has_exploit_history.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"attributes.hacks.has_exploit_history.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.hacks.has_exploit_history","typeLabel":"boolean | null"},"exploit_total_usd":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"attributes.hacks.exploit_total_usd.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"attributes.hacks.exploit_total_usd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.hacks.exploit_total_usd","typeLabel":"number | null"},"hack_classification":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.hacks.hack_classification.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.hacks.hack_classification.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.hacks.hack_classification","typeLabel":"string | null"},"hack_technique":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"attributes.hacks.hack_technique.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"attributes.hacks.hack_technique.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.hacks.hack_technique","typeLabel":"string | null"}},"required":["has_exploit_history","exploit_total_usd","hack_classification","hack_technique"],"isRequired":true,"uniqueKey":"attributes.hacks","typeLabel":"object"},"sanctions":{"type":"object","properties":{"sanctions_status":{"oneOf":[{"type":"string","enum":["none","proposed","designated",null],"isRequired":true,"uniqueKey":"attributes.sanctions.sanctions_status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["none","proposed","designated",null],"isRequired":true,"uniqueKey":"attributes.sanctions.sanctions_status.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.sanctions.sanctions_status","typeLabel":"enum\u003cstring> | null"},"sanctions_designations":{"oneOf":[{"type":"array","items":{"type":"object","uniqueKey":"attributes.sanctions.sanctions_designations.oneOf.0.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"attributes.sanctions.sanctions_designations.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object"},"isRequired":true,"uniqueKey":"attributes.sanctions.sanctions_designations.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"attributes.sanctions.sanctions_designations","typeLabel":"object[] | null"}},"required":["sanctions_status","sanctions_designations"],"isRequired":true,"uniqueKey":"attributes.sanctions","typeLabel":"object"}},"required":["market","liquidity","classification","issuer","audits","governance","hacks","sanctions"],"isRequired":true,"uniqueKey":"attributes","typeLabel":"object"},"classification_available":{"type":"boolean","description":"false when the asset classification could not be loaded — `metadata.asset_type` falls back to `stablecoin` and `asset_class` / `subclass` are null. `GET /v3/stablecoins/{address}` fails closed (503) in that state.","uniqueKey":"classification_available","typeLabel":"boolean"}},"required":["schema_version","metadata","composite","categories","coverage","attributes"],"uniqueKey":"","typeLabel":"object"},"example":{"schema_version":"3.5","classification_available":true,"metadata":{"address":"0x100faa513ac917181eb29f73b64bf7a434a206fe","chain":"base","symbol":"usdb","name":"USDBridge","asset_type":"stablecoin","segment":"stablecoin","asset_class":"fiat","subclass":null,"market_cap_usd":null},"composite":{"grading_scheme":"v1","grade":"A-","stars":5,"score":14.5,"contributors":{"smart_contract":{"score":41.5,"weight":0.2,"weighted_contribution":8.3},"operational_governance":{"score":41.5,"weight":0.15,"weighted_contribution":6.2},"asset_collateral":{"score":0,"weight":0.3,"weighted_contribution":0},"market_liquidity":{"score":0,"weight":0.2,"weighted_contribution":0},"counterparty":{"score":0,"weight":0,"weighted_contribution":0},"hack_exploit_history":{"score":0,"weight":0.15,"weighted_contribution":0},"chain_infrastructure":{"score":0,"weight":0,"weighted_contribution":0}},"upstream_risk":12,"clamped_by_upstream":false,"score_source":"framework","drivers_complete":true,"drivers":[{"category":"smart_contract","category_name":"Smart contract","score":41.5,"weight":0.2,"weighted_contribution":8.3,"criteria":[{"key":"audited","name":"Has third-party audits","status":"warn","evidence":{"audit_count":1,"auditor_tier":"mid"}},{"key":"mint_cap_present","name":"Minting is capped","status":"warn","evidence":{"mint_cap_status":"uncapped"}}]}]},"categories":{"asset_collateral":{"score":0,"criteria":{"share_price_stable":{"name":"Not depegged","status":"pass","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}},"mint_burn_anomaly":{"name":"No mint/burn anomalies","status":"pass","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}}}},"smart_contract":{"score":41.5,"criteria":{"audited":{"name":"Has third-party audits","status":"warn","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}},"mint_cap_present":{"name":"Minting is capped","status":"warn","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}}}}},"coverage":{"framework_version":"v1","total_criteria":12,"live_criteria":8,"per_category":{"smart_contract":{"live":2,"total":2},"operational_governance":{"live":2,"total":4},"asset_collateral":{"live":2,"total":3},"market_liquidity":{"live":1,"total":2},"counterparty":{"live":0,"total":0},"hack_exploit_history":{"live":1,"total":1},"chain_infrastructure":{"live":0,"total":0}}},"attributes":{"market":{"price_usd":1,"volume_24h_usd":45000000},"liquidity":{"total_dex_liquidity_usd":50000000,"liquidity_depth_tier":"deep"},"classification":{"token_type":"standard"},"issuer":{"issuer":"Example Labs","is_bridged":false,"bridged_fraction":0.04,"reserve_attestation_provider":"Deloitte","reserve_attestation_type":"monthly_attestation","reserve_attestation_date":"2026-06-30","reserve_attestation_lag_days":10},"audits":{"audit_count":5,"auditor_tier":"top","last_audit_date":"2026-02-15","audit_firms":["OpenZeppelin","Trail of Bits"]},"governance":{"governance_tier":"strong","owner_is_multisig":true,"multisig_threshold":4,"multisig_signer_count":8,"owner_timelock_seconds":86400,"upgrade_admin_address":"0xC0ffee0000000000000000000000000000000002","upgrade_admin_is_eoa":false,"currently_paused":false,"governance_alert":null,"governance_alert_detail":null,"mint_role_is_single_eoa":false,"mint_role_alert":null,"mint_authority":null,"mint_activity_total_minted_30d":null,"mint_activity_tx_count_30d":null,"mint_activity_alert":null,"upgrades_30d":0,"pause_events_90d":0,"ownership_changes_90d":1,"mint_role_grants_90d":2,"mint_role_revocations_90d":0},"hacks":{"has_exploit_history":false,"exploit_total_usd":null,"hack_classification":null,"hack_technique":null},"sanctions":{"sanctions_status":null,"sanctions_designations":null}}},"examples":{"Example":{"title":"Example","value":{"schema_version":"3.5","classification_available":true,"metadata":{"address":"0x100faa513ac917181eb29f73b64bf7a434a206fe","chain":"base","symbol":"usdb","name":"USDBridge","asset_type":"stablecoin","segment":"stablecoin","asset_class":"fiat","subclass":null,"market_cap_usd":null},"composite":{"grading_scheme":"v1","grade":"A-","stars":5,"score":14.5,"contributors":{"smart_contract":{"score":41.5,"weight":0.2,"weighted_contribution":8.3},"operational_governance":{"score":41.5,"weight":0.15,"weighted_contribution":6.2},"asset_collateral":{"score":0,"weight":0.3,"weighted_contribution":0},"market_liquidity":{"score":0,"weight":0.2,"weighted_contribution":0},"counterparty":{"score":0,"weight":0,"weighted_contribution":0},"hack_exploit_history":{"score":0,"weight":0.15,"weighted_contribution":0},"chain_infrastructure":{"score":0,"weight":0,"weighted_contribution":0}},"upstream_risk":12,"clamped_by_upstream":false,"score_source":"framework","drivers_complete":true,"drivers":[{"category":"smart_contract","category_name":"Smart contract","score":41.5,"weight":0.2,"weighted_contribution":8.3,"criteria":[{"key":"audited","name":"Has third-party audits","status":"warn","evidence":{"audit_count":1,"auditor_tier":"mid"}},{"key":"mint_cap_present","name":"Minting is capped","status":"warn","evidence":{"mint_cap_status":"uncapped"}}]}]},"categories":{"asset_collateral":{"score":0,"criteria":{"share_price_stable":{"name":"Not depegged","status":"pass","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}},"mint_burn_anomaly":{"name":"No mint/burn anomalies","status":"pass","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}}}},"smart_contract":{"score":41.5,"criteria":{"audited":{"name":"Has third-party audits","status":"warn","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}},"mint_cap_present":{"name":"Minting is capped","status":"warn","data_quality":{"confidence":0.95,"last_observed_at":"2026-06-02T09:49:36Z","source":"rwa-grade-pipeline"}}}}},"coverage":{"framework_version":"v1","total_criteria":12,"live_criteria":8,"per_category":{"smart_contract":{"live":2,"total":2},"operational_governance":{"live":2,"total":4},"asset_collateral":{"live":2,"total":3},"market_liquidity":{"live":1,"total":2},"counterparty":{"live":0,"total":0},"hack_exploit_history":{"live":1,"total":1},"chain_infrastructure":{"live":0,"total":0}}},"attributes":{"market":{"price_usd":1,"volume_24h_usd":45000000},"liquidity":{"total_dex_liquidity_usd":50000000,"liquidity_depth_tier":"deep"},"classification":{"token_type":"standard"},"issuer":{"issuer":"Example Labs","is_bridged":false,"bridged_fraction":0.04,"reserve_attestation_provider":"Deloitte","reserve_attestation_type":"monthly_attestation","reserve_attestation_date":"2026-06-30","reserve_attestation_lag_days":10},"audits":{"audit_count":5,"auditor_tier":"top","last_audit_date":"2026-02-15","audit_firms":["OpenZeppelin","Trail of Bits"]},"governance":{"governance_tier":"strong","owner_is_multisig":true,"multisig_threshold":4,"multisig_signer_count":8,"owner_timelock_seconds":86400,"upgrade_admin_address":"0xC0ffee0000000000000000000000000000000002","upgrade_admin_is_eoa":false,"currently_paused":false,"governance_alert":null,"governance_alert_detail":null,"mint_role_is_single_eoa":false,"mint_role_alert":null,"mint_authority":null,"mint_activity_total_minted_30d":null,"mint_activity_tx_count_30d":null,"mint_activity_alert":null,"upgrades_30d":0,"pause_events_90d":0,"ownership_changes_90d":1,"mint_role_grants_90d":2,"mint_role_revocations_90d":0},"hacks":{"has_exploit_history":false,"exploit_total_usd":null,"hack_classification":null,"hack_technique":null},"sanctions":{"sanctions_status":null,"sanctions_designations":null}}}}},"exampleType":"examples"}},"exampleType":"examples"},"9fee4c53-8c41-4d61-94af-4e7fda40c5ce":{"description":"Invalid address, chain, or grading_scheme.","headers":{"X-Request-Id":{"description":"Server-issued id for this request, returned on every response, success or error. Quote it to Webacy support to find the request. On risk endpoints it equals the `check_id` body field.","schema":{"type":"string","format":"uuid","example":"3f1c2b9e-7a4d-4e1b-9c55-0d6a2f8e4b71"}}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"6cf64fee-aab0-4ec4-9f15-cd7615e5e792":{"description":"Keyless x402 payment required. Returned for a keyless caller (gateway entry `x-webacy-entry: x402`) with no prepaid CU balance or insufficient CU on the presented credit token. Identified by the base64 `PAYMENT-REQUIRED` response header; the body carries the x402 challenge (a USDC price on Base and a Stripe-minted deposit address). Pay it, then retry with the `PAYMENT-SIGNATURE` header to unlock the resource and receive a credit token. An authenticated api-key caller with a past_due/unpaid subscription may instead receive a different 402 (`Subscription payment required`, plain JSON, no `PAYMENT-REQUIRED` header).","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 challenge (network, asset, amount, payTo, resource.url). The edge rollout supplies the canonical public request path through a valid gateway claim; missing or invalid claims safely fall back to the public origin plus an internal path identifier. resource.url is not yet suitable for publishing to a public x402 discovery catalog (Coinbase's Bazaar): route-specific declarations and live paid validation are still pending.","schema":{"type":"string"}},"X-Request-Id":{"description":"Server-issued id for this request, returned on every response, success or error. Quote it to Webacy support to find the request. On risk endpoints it equals the `check_id` body field.","schema":{"type":"string","format":"uuid","example":"3f1c2b9e-7a4d-4e1b-9c55-0d6a2f8e4b71"}}},"content":{"application/json":{"example":{"x402Version":1,"error":"payment required"},"examples":{"Example":{"title":"Example","value":{"x402Version":1,"error":"payment required"}}},"exampleType":"examples"}},"exampleType":"examples"},"11317a31-0078-4697-a073-86b13f3b8d89":{"description":"Missing or invalid x-api-key.","headers":{"X-Request-Id":{"description":"Server-issued id for this request, returned on every response, success or error. Quote it to Webacy support to find the request. On risk endpoints it equals the `check_id` body field.","schema":{"type":"string","format":"uuid","example":"3f1c2b9e-7a4d-4e1b-9c55-0d6a2f8e4b71"}}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"8c19452f-24f0-4af9-b061-b3c375f8afc3":{"description":"Token not graded, or not a stablecoin (use GET /v3/rwa/{address})","headers":{"X-Request-Id":{"description":"Server-issued id for this request, returned on every response, success or error. Quote it to Webacy support to find the request. On risk endpoints it equals the `check_id` body field.","schema":{"type":"string","format":"uuid","example":"3f1c2b9e-7a4d-4e1b-9c55-0d6a2f8e4b71"}}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"16854325-f7fb-4e70-9bbc-48461ebcbc17":{"description":"Fails CLOSED for one of two causes.\n\n**Asset classification unavailable** — the asset classification could not be loaded while an asset-class filter was in force (an explicit `segment`, or `/v3/stablecoins/grades` and `/v3/stablecoins/{address}`, which pin one). NOTE: the `/v3/stablecoins` LIST route is NOT in this set — it is served from a cached token set, so a classification outage yields a stale or empty list with 200, never a 503. The request fails rather than return an unfiltered superset presented as the filtered answer. Retry, or call the `/v3/rwa` equivalent without `segment` to get unstamped rows with `classification_available: false`.\n\n**x402 payment service unavailable** — if payment configuration is incomplete or invalid, the x402 route unexpectedly has no payment requirement, or the facilitator, credit store, or settlement is unavailable, a gated keyless request returns 503 rather than serving the resource unpaid.\n\nThe `message` field distinguishes them.","content":{"application/json":{"examples":{"assetClassificationUnavailable":{"title":"assetClassificationUnavailable","value":{"message":"segment=rwa cannot be applied: the asset classification is temporarily unavailable"}},"paymentServiceUnavailable":{"title":"paymentServiceUnavailable","value":{"message":"Payment service temporarily unavailable"}}},"exampleType":"examples"}},"headers":{"X-Request-Id":{"description":"Server-issued id for this request, returned on every response, success or error. Quote it to Webacy support to find the request. On risk endpoints it equals the `check_id` body field.","schema":{"type":"string","format":"uuid","example":"3f1c2b9e-7a4d-4e1b-9c55-0d6a2f8e4b71"}}},"exampleType":"examples"}},"security":{"36a1ea1a-c852-4fcb-b153-a75550792a14":{"api_key":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[],"schemeName":"api_key"}}},"servers":{"c5a517c3-fc09-4c20-b482-4cd1bf61c717":{"url":"https://api.webacy.com","description":"Webacy Risk Score API (Production)"},"2beb6b2f-4ec3-43b7-b1b1-ee13520757e0":{"url":"https://api-development.webacy.com","description":"Webacy Risk Score API (Development)"},"ac016a2f-99f2-4303-92c0-4f30a6b8edb2":{"url":"http://0.0.0.0:3030/api/v1/risk-score","description":"Webacy Risk Score API - Local"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[],"schemeName":"api_key"},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"api_key","name":"x-api-key"}],"title":"api_key"}]},"originalFileLocation":"openapi.json"},"subdomain":"webacy","siteName":"Webacy Docs","title":"Get Stablecoin Risk Detail - Webacy Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-01T19:56:23.308Z","originalFileLocation":"api-reference/stablecoins/get-stablecoin-detail.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=\"description\" content=\"Stablecoin-only twin of GET /v3/rwa/{address}: identical response for a stablecoin; answers 404 when the token resolves to an RWA (metadata.asset_type = rwa) and names GET /v3/rwa/{address} as the route to use. The class is derived, not asserted: stablecoin means \u0026quot;pegged and not a classified RWA\u0026quot;, so a token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to tell a confirmed fiat token (fiat) from a not-yet-classified one (null); classification coverage is still expanding, so that second set is shrinking over time.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Webacy Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_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/webacy/BDwg8pUd_cx6RnJh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get Stablecoin Risk Detail - Webacy Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Stablecoin-only twin of GET /v3/rwa/{address}: identical response for a stablecoin; answers 404 when the token resolves to an RWA (metadata.asset_type = rwa) and names GET /v3/rwa/{address} as the route to use. The class is derived, not asserted: stablecoin means \u0026quot;pegged and not a classified RWA\u0026quot;, so a token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to tell a confirmed fiat token (fiat) from a not-yet-classified one (null); classification coverage is still expanding, so that second set is shrinking over time.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Webacy Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://webacy.mintlify.site/_mintlify/api/og/v2?division=Stablecoins\u0026amp;title=Get+Stablecoin+Risk+Detail\u0026amp;description=Stablecoin-only+twin+of+%60GET+%2Fv3%2Frwa%2F%7Baddress%7D%60%3A+identical+response+for+a+stablecoin%3B+answers+**404**+when+the+token+resolves+to+an+RWA+%28%60metadata.asset_type+%3D+\u0026amp;theme=256fd323fde43a5eeef07bf6\u0026amp;signature=e9609a8279cd7aa508515556cfa5c46e5b6b8209fa2b63cc408148b15b855f04\">\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=\"Get Stablecoin Risk Detail - Webacy Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Stablecoin-only twin of GET /v3/rwa/{address}: identical response for a stablecoin; answers 404 when the token resolves to an RWA (metadata.asset_type = rwa) and names GET /v3/rwa/{address} as the route to use. The class is derived, not asserted: stablecoin means \u0026quot;pegged and not a classified RWA\u0026quot;, so a token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to tell a confirmed fiat token (fiat) from a not-yet-classified one (null); classification coverage is still expanding, so that second set is shrinking over time.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://webacy.mintlify.site/_mintlify/api/og/v2?division=Stablecoins\u0026amp;title=Get+Stablecoin+Risk+Detail\u0026amp;description=Stablecoin-only+twin+of+%60GET+%2Fv3%2Frwa%2F%7Baddress%7D%60%3A+identical+response+for+a+stablecoin%3B+answers+**404**+when+the+token+resolves+to+an+RWA+%28%60metadata.asset_type+%3D+\u0026amp;theme=256fd323fde43a5eeef07bf6\u0026amp;signature=e9609a8279cd7aa508515556cfa5c46e5b6b8209fa2b63cc408148b15b855f04\">\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/webacy/BDwg8pUd_cx6RnJh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Webacy Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00d66f\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/stablecoins/get-stablecoin-detail.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.webacy.com/#organization\",\"name\":\"Webacy Docs\",\"url\":\"https://docs.webacy.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/webacy/PZHkbk8qJrPsQSaC/logo/light.png?fit=max\u0026auto=format\u0026n=PZHkbk8qJrPsQSaC\u0026q=85\u0026s=c1933879883f6b01ff46a6e51cfd687f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.webacy.com#website\",\"name\":\"Webacy Docs\",\"url\":\"https://docs.webacy.com\",\"publisher\":{\"@id\":\"https://docs.webacy.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail#webpage\",\"url\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail\",\"name\":\"Get Stablecoin Risk Detail\",\"description\":\"Stablecoin-only twin of GET /v3/rwa/{address}: identical response for a stablecoin; answers 404 when the token resolves to an RWA (metadata.asset_type = rwa) and names GET /v3/rwa/{address} as the route to use. The class is derived, not asserted: stablecoin means \\\"pegged and not a classified RWA\\\", so a token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to tell a confirmed fiat token (fiat) from a not-yet-classified one (null); classification coverage is still expanding, so that second set is shrinking over time.\",\"dateModified\":\"2026-10-01T19:56:23.308Z\",\"isPartOf\":{\"@id\":\"https://docs.webacy.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Stablecoins\",\"item\":\"https://docs.webacy.com/api-reference/depeg-monitor\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get Stablecoin Risk Detail\",\"item\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail#apireference\",\"headline\":\"Get Stablecoin Risk Detail\",\"name\":\"Get Stablecoin Risk Detail\",\"description\":\"Stablecoin-only twin of GET /v3/rwa/{address}: identical response for a stablecoin; answers 404 when the token resolves to an RWA (metadata.asset_type = rwa) and names GET /v3/rwa/{address} as the route to use. The class is derived, not asserted: stablecoin means \\\"pegged and not a classified RWA\\\", so a token that is graded but not yet classified takes the stablecoin arm and answers 200. Read metadata.asset_class to tell a confirmed fiat token (fiat) from a not-yet-classified one (null); classification coverage is still expanding, so that second set is shrinking over time.\",\"url\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail\",\"mainEntityOfPage\":{\"@id\":\"https://docs.webacy.com/api-reference/stablecoins/get-stablecoin-detail#webpage\"},\"dateModified\":\"2026-10-01T19:56:23.308Z\",\"publisher\":{\"@id\":\"https://docs.webacy.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.webacy.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Webacy Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Webacy Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/stablecoins/get-stablecoin-detail.md","siteName":"Webacy Docs","nav":{"global":null,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/introduction"}]},{"tab":"Build","pages":[{"title":"Build","href":"/getting-started"}]},{"tab":"Learn","pages":[{"title":"Learn","href":"/use-cases-guides-walkthroughs"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Introduction","href":"/api-reference/introduction"},{"title":"Authenticate with the Webacy API using API keys","href":"/api-reference/authentication"},{"title":"Get current API usage","openapi":"GET /usage/current","href":"/api-reference/api-usage/get-current-api-usage"},{"title":"Get API usage for specified dates","openapi":"GET /usage","href":"/api-reference/api-usage/get-api-usage-for-specified-dates"},{"title":"Get current CU usage","openapi":"GET /usage/cu","href":"/api-reference/api-usage/get-current-cu-usage"},{"title":"Get daily CU usage","openapi":"GET /usage/cu/daily","href":"/api-reference/api-usage/get-daily-cu-usage"}]},{"group":"Stablecoins","pages":[{"title":"Depeg Monitor","href":"/api-reference/depeg-monitor"},{"title":"List pegged tokens — stablecoins \u0026 RWAs","openapi":"GET /rwa","href":"/api-reference/depeg-monitor/list-pegged-tokens-with-depeg-risk"},{"title":"Get risk detail for a single stablecoin","openapi":"GET /rwa/{address}","href":"/api-reference/depeg-monitor/get-depeg-risk-detail-for-a-pegged-token"},{"title":"List Stablecoins","openapi":"GET /v3/stablecoins","href":"/api-reference/stablecoins/list-stablecoins"},{"title":"List Stablecoin Grades","openapi":"GET /v3/stablecoins/grades","description":"Stablecoin-only twin of `GET /v3/rwa/grades`: identical response, with `segment` fixed to `stablecoin` — `asset_class` fiat plus graded tokens that have not been classified yet, i.e. everything the `segment` rule does not resolve to `rwa`. `grade_counts` still covers the full graded set. A caller-supplied `segment` is ignored.","href":"/api-reference/stablecoins/get-stablecoin-grades"},{"title":"Get Stablecoin Risk Detail","openapi":"GET /v3/stablecoins/{address}","href":"/api-reference/stablecoins/get-stablecoin-detail"},{"title":"Holder Concentration Index API","description":"Query on-chain holder concentration metrics for stablecoins and RWA tokens, including risk bands, top-holder shares, and ecosystem-wide distributions.","href":"/api-reference/holder-concentration"},{"title":"List all stablecoin and rwa holder data","openapi":"GET /rwa/hci","href":"/api-reference/holder-concentration/list-holder-concentration-index"},{"title":"Get holder concentration history for one token","openapi":"GET /rwa/hci/history","href":"/api-reference/holder-concentration/get-holder-concentration-index-history"},{"title":"List stablecoin supply flows","openapi":"GET /rwa/supply","href":"/api-reference/supply-flows/list-supply-flows"},{"title":"Get supply-flow detail for one token","openapi":"GET /rwa/supply/{symbol}","href":"/api-reference/supply-flows/get-supply-flow-detail"}]},{"group":"RWA","pages":[{"title":"RWA Risk (v3)","href":"/api-reference/rwa-v3"},{"title":"Get risk detail for a single RWA","openapi":"GET /v3/rwa/{address}","href":"/api-reference/rwa-v3/get-rwa-risk-detail"},{"title":"List RWA \u0026 stablecoin grades","openapi":"GET /v3/rwa/grades","href":"/api-reference/rwa-v3/get-rwa-grades"},{"title":"Batch structural risk data for RWAs","openapi":"POST /v3/rwa/batch/structural-health","href":"/api-reference/rwa-v3/post-batch-structural-health"}]},{"group":"Vault Risk V3","pages":[{"title":"V3 Vault Risk API Overview","href":"/api-reference/vault-risk-v3/v3-overview"},{"title":"V3 Framework Methodology","href":"/api-reference/vault-risk-v3/framework-methodology"},{"title":"Get risk data for a single vault","openapi":"GET /v3/vaults/{address}","href":"/api-reference/vault-risk-v3/get-vault-risk-detail-v3"},{"title":"Batch vault ratings","openapi":"POST /v3/vaults/batch/grades","href":"/api-reference/vault-risk-v3/get-vault-grades-batch"},{"title":"Get vault risk data framework and taxonomy","openapi":"GET /v3/framework","href":"/api-reference/vault-risk-v3/get-framework"}]},{"group":"Vault History","pages":[{"title":"Get Vault TVL History","openapi":"GET /vaults/{address}/tvl-history","href":"/api-reference/vault-risk/get-vault-tvl-history"},{"title":"Get Vault Share Price History","openapi":"GET /vaults/{address}/share-price-history","href":"/api-reference/vault-risk/get-vault-share-price-history"}]},{"group":"Risk Intelligence","pages":[{"title":"Risk Due Diligence","href":"/api-reference/riskdd"},{"title":"Trading Due Diligence","href":"/api-reference/tradingdd"},{"title":"Risk intelligence for an address","openapi":"GET /addresses/{address}","href":"/api-reference/threat-risks/threat-considerations-for-an-address"},{"group":"Wallet","pages":[{"title":"Check if a wallet address is sanctioned","openapi":"GET /addresses/sanctioned/{walletAddress}","href":"/api-reference/sanction-checks/check-if-wallet-address-is-sanctioned"},{"title":"Detect address poisoning on a wallet address","openapi":"GET /addresses/{address}/poisoning","href":"/api-reference/address-poisoning/detect-address-poisoning-for-a-specific-wallet-address"},{"title":"Get open approvals with risk data on a wallet address","openapi":"GET /addresses/{address}/approvals","href":"/api-reference/approval-risks/approvals-with-threat-risks"},{"title":"Get the risk profile and exposure of a wallet address","openapi":"GET /quick-profile/{walletAddress}","href":"/api-reference/exposure-risk/understand-the-risk-profile-risk-exposure-of-an-address"}]},{"group":"Transaction","pages":[{"title":"Get risk details for a transaction hash","openapi":"GET /transactions/{txHash}","href":"/api-reference/transaction-risks/risk-details-for-a-transaction"},{"title":"Simulate a raw EVM transaction for security risks","openapi":"POST /scan/{fromAddress}/transactions","href":"/api-reference/transaction-scanning/scan-raw-evm-transaction-for-security-risks"},{"title":"Simulate an EIP-712 signed message for security risks","openapi":"POST /scan/{fromAddress}/eip712","href":"/api-reference/transaction-scanning/scan-eip-712-signed-message-for-security-risks"}]},{"group":"Token","pages":[{"title":"Get economic history for a token","openapi":"GET /tokens/{tokenAddress}","href":"/api-reference/token-analysis/get-token-economic-history"},{"title":"Get pools with risk assessment for a token","openapi":"GET /tokens/{tokenAddress}/pools","href":"/api-reference/token-analysis/get-token-pools-with-risk-assessment"},{"title":"Get trending tokens with risk analysis","openapi":"GET /tokens/trending","href":"/api-reference/token-analysis/get-trending-cryptocurrencies-with-risk-analysis"},{"title":"Get Solana token risk with security indicators","openapi":"GET /trading-lite/{address}","href":"/api-reference/trading-lite/get-simplified-token-analysis-with-security-indicators"},{"title":"Get detailed early holder analysis for a token","openapi":"GET /holder-analysis/{address}","href":"/api-reference/holder-analysis/get-detailed-early-holder-analysis-for-a-token"},{"title":"Get trending liquidity pools with risk data","openapi":"GET /tokens/pools/trending","href":"/api-reference/pool-analysis/get-trending-pools-with-risk-analysis"},{"title":"Get OHLCV and risk data for a liquidity pool","openapi":"GET /tokens/pools/{poolAddress}","href":"/api-reference/pool-analysis/get-pool-ohlcv-data-with-risk-assessment"}]},{"group":"Smart Contract","pages":[{"title":"Get full risk analysis for a contract address","openapi":"GET /contracts/{contractAddress}","href":"/api-reference/contract-risk/get-a-real-time-analysis-for-a-given-contract-address"},{"title":"Get only the source-code findings for a contract address","openapi":"GET /contracts/{contractAddress}/code-analysis","href":"/api-reference/contract-risk/get-source-code-analysis-for-a-contract"},{"title":"Get verified source code for a contract address","openapi":"GET /source-code/{contractAddress}","href":"/api-reference/contract-risk/get-verified-source-code-for-a-contract"}]},{"group":"URL","pages":[{"title":"Get risk analysis of a URL","openapi":"POST /url","href":"/api-reference/url-risks/project-url-risk-analysis"}]}]}]}]},"basePath":"","title":"Get Stablecoin Risk Detail - Webacy Docs","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}