{"openapi":"3.0.3","info":{"title":"Scani Cloud API","description":"Scani-managed third-party integration surface: chain balances and activity, token search and identity, and Open Graph metadata. All endpoints listed here are tRPC procedures reachable over HTTP at `/trpc/<router>.<procedure>`. Authenticate with `Authorization: Bearer scani_sk_…`. For TypeScript callers, the typed `@scani/cloud-client` (httpBatchLink) is the recommended client and uses a slightly different on-the-wire shape (batched JSON body).","version":"c24415514e9b05f6a7e3c82f463f00f9f19ac692"},"servers":[{"url":"https://api.cloud.scani.xyz"}],"paths":{"/trpc/chains.listConfigs":{"get":{"operationId":"chains-listConfigs","summary":"List every chain config the data-provider knows about","tags":["chains"],"security":[{"Authorization":[]}],"parameters":[{"name":"input","in":"query","required":true,"description":"URL-encoded JSON object matching the procedure input schema. Example: `?input=%7B%22query%22%3A%22bitcoin%22%7D` for `{ \"query\": \"bitcoin\" }`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chainId":{"anyOf":[{"type":"string"},{"type":"number"}]},"name":{"type":"string"},"type":{"type":"string","enum":["evm","bitcoin","solana","tron","ton"]},"nativeSymbol":{"type":"string"},"nativeName":{"type":"string"},"isActive":{"type":"boolean"}},"required":["chainId","name","type","nativeSymbol","nativeName","isActive"],"additionalProperties":false}}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/chains.getTokenBalances":{"post":{"operationId":"chains-getTokenBalances","summary":"Fetch native + ERC-20 balances for an address on a chain","tags":["chains"],"security":[{"Authorization":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chainId":{"anyOf":[{"type":"string"},{"type":"number"}]},"address":{"type":"string"}},"required":["chainId","address"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"balance":{"type":"string"},"decimals":{"type":"number"},"isNative":{"type":"boolean"},"tokenAddress":{"type":"string"},"iconUrl":{"type":"string"}},"required":["symbol","name","balance","decimals","isNative"],"additionalProperties":false}}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/chains.hasActivity":{"post":{"operationId":"chains-hasActivity","summary":"Probe whether an address has on-chain activity (rate-limited)","tags":["chains"],"security":[{"Authorization":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chainId":{"anyOf":[{"type":"string"},{"type":"number"}]},"address":{"type":"string"}},"required":["chainId","address"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"boolean"}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/chains.resolveAddressName":{"post":{"operationId":"chains-resolveAddressName","summary":"Resolve an address to its canonical name (e.g. ENS) if available","tags":["chains"],"security":[{"Authorization":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chainId":{"anyOf":[{"type":"string"},{"type":"number"}]},"address":{"type":"string"}},"required":["chainId","address"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"string","nullable":true}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/contact.submit":{"post":{"operationId":"contact-submit","summary":"Submit the public contact form","tags":["contact"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","format":"email","maxLength":254},"topic":{"type":"string","enum":["support","sales","feedback","security","other"],"default":"support"},"message":{"type":"string","minLength":10,"maxLength":4000},"referrer":{"type":"string","maxLength":200},"turnstileToken":{"type":"string","maxLength":2048}},"required":["name","email","message"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/og.fetchMetadata":{"get":{"operationId":"og-fetchMetadata","summary":"Fetch Open Graph metadata for a URL (SSRF-hardened)","tags":["og"],"security":[{"Authorization":[]}],"parameters":[{"name":"input","in":"query","required":true,"description":"URL-encoded JSON object matching the procedure input schema. Example: `?input=%7B%22query%22%3A%22bitcoin%22%7D` for `{ \"query\": \"bitcoin\" }`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"siteName":{"type":"string"},"image":{"type":"string"},"type":{"type":"string"},"finalUrl":{"type":"string"},"truncated":{"type":"boolean"}},"required":["title","description","siteName","image","type","finalUrl","truncated"],"additionalProperties":false}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/tokens.search":{"get":{"operationId":"tokens-search","summary":"Free-text token search across CoinGecko, DeFiLlama, Finnhub","tags":["tokens"],"security":[{"Authorization":[]}],"parameters":[{"name":"input","in":"query","required":true,"description":"URL-encoded JSON object matching the procedure input schema. Example: `?input=%7B%22query%22%3A%22bitcoin%22%7D` for `{ \"query\": \"bitcoin\" }`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"currency":{"type":"string"},"exchange":{"type":"string"},"provider":{"type":"string"},"providerMetadata":{"type":"object","additionalProperties":{}}},"required":["symbol","name","type","provider"],"additionalProperties":false}}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}},"/trpc/tokens.enrichIdentity":{"post":{"operationId":"tokens-enrichIdentity","summary":"Enrich a partial token record using a specific identity provider","tags":["tokens"],"security":[{"Authorization":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerKey":{"type":"string"},"partial":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"number"},"providerMetadata":{}},"additionalProperties":true},"force":{"type":"boolean"}},"required":["providerKey","partial"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"object","properties":{"data":{"type":"object","properties":{"coingecko":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"}},"required":["id"],"additionalProperties":true},"defillama":{"type":"object","properties":{"coin":{"type":"string"}},"required":["coin"],"additionalProperties":true},"etherscan":{"type":"object","properties":{"chainId":{"type":"number"},"contractAddress":{"type":"string"}},"required":["chainId"],"additionalProperties":true},"solana":{"type":"object","properties":{"mint":{"type":"string"}},"required":["mint"],"additionalProperties":true},"kraken":{"type":"object","properties":{"asset":{"type":"string"}},"required":["asset"],"additionalProperties":true},"finnhub":{"type":"object","properties":{"symbol":{"type":"string"},"exchange":{"type":"string"}},"required":["symbol"],"additionalProperties":true}},"additionalProperties":true,"nullable":true}},"required":["data"]}},"required":["result"]}}}},"default":{"$ref":"#/components/responses/error"}}}}},"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"responses":{"error":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"integer","description":"JSON-RPC error code, e.g. -32001"},"data":{"type":"object","properties":{"code":{"type":"string","description":"tRPC error code, e.g. 'UNAUTHORIZED'"},"httpStatus":{"type":"integer"},"path":{"type":"string"}},"required":["code","httpStatus"]}},"required":["message","code"]}},"required":["error"]}}}}}}}