The traders whose handle on a platform matches handle. Look a trader up once, then store our id and use it from then on.
The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers.
Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile observedAt first, then trader id.
One handle can match several traders, for example two people with the same handle on two platforms. Check canonical.platforms and sources before you pick one.
canonical.walletAvailable is true when GET /v3/traders/{traderId}/wallets lists at least one wallet for the trader and false when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal.
No match answers 200 with an empty page. This operation never answers 404.
The first page of a miss carries suggestions: up to 5 traders whose handle or name looks like handle (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched.
With match=closest that miss answers with the first suggestion as the only item and match: "closest". Check it before you store the id: a close handle is a guess, not proof.
Paged with cursor and limit (default 50, maximum 200).
Price
The price depends on the answer.
Answer
Credits
Reveals
At least one trader holds or held the handle.
100
0
None does, and match=closest answers with the first suggestion.
100
0
None does, and no trader answers: an empty page with suggestions.
200
0
Limits
2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.
A key with less than 100 credits left gets 402 QUOTA_EXCEEDED before any work.
exact (the default): only traders that hold the handle or held it in the last 30 days. closest: when none does, answer with the first of suggestions instead of an empty page.
The nextCursor of the previous page, sent back as it came. Leave it out for the first page. A cursor belongs to the query that produced it: sent with other parameters it answers 400 INVALID_ARGUMENT.
exact: the items hold the handle or held it in the last 30 days, or the page is empty. closest: no trader does, and the only item is the first of suggestions.
Present on a first page where no trader holds or held the handle: up to 5 traders whose handle or name is close to it, or whose handle starts with it, best first. Empty when the handle has fewer than 3 characters once spaces are dropped, or nothing is close.
Maximum array length: 5
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FomoScan","colors":{"primary":"#2D6BF5","light":"#3B78FF","dark":"#2D6BF5"},"logo":{"light":"https://mintcdn.com/socialscan/HNyN-bTZ1IatgGfu/images/mark.png?fit=max\u0026auto=format\u0026n=HNyN-bTZ1IatgGfu\u0026q=85\u0026s=d477c368ad11635c9133ca701da2f527","dark":"https://mintcdn.com/socialscan/HNyN-bTZ1IatgGfu/images/mark.png?fit=max\u0026auto=format\u0026n=HNyN-bTZ1IatgGfu\u0026q=85\u0026s=d477c368ad11635c9133ca701da2f527"},"favicon":"https://mintcdn.com/socialscan/HNyN-bTZ1IatgGfu/images/mark.png?fit=max\u0026auto=format\u0026n=HNyN-bTZ1IatgGfu\u0026q=85\u0026s=d477c368ad11635c9133ca701da2f527","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"appearance":{"default":"dark"},"background":{"color":{"dark":"#08090C"}},"navbar":{"links":[{"href":"https://partner.fomoscan.sh/login","label":"Log in"}],"primary":{"type":"button","label":"Get an API key","href":"https://partner.fomoscan.sh/signup"}},"footer":{"socials":{"website":"https://fomoscan.sh"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","mcp"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Partner portal","icon":"key","href":"https://partner.fomoscan.sh"},{"anchor":"OpenAPI spec","icon":"code","href":"https://api.fomoscan.sh/openapi.json"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"socialscan","hasAudioNarration":false,"actualSubdomain":"socialscan","customDomains":["docs.fomoscan.sh"],"gitSource":{"type":"github","owner":"funny-development-org","repo":"fomoscan-monorepo","deployBranch":"main","contentDirectory":"apps/web/docs","isPrivate":true,"mountPath":"","label":"","_id":"6aeb9444574a98914de25354"},"chroma":{"latestBuiltDeploymentHistoryId":"6aeba1c79a06eb92c7d964e2","collectionId":"ebaf5f04-b731-4f1f-be6c-a698b18b49c8","liveDeploymentHistoryId":"6aeba1c79a06eb92c7d964e2","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aeba1c79a06eb92c7d964e2","clientVersion":"0.0.4064","searchFilterCounts":[{"language":"default","tag":"API reference","count":56},{"language":"default","tag":"Endpoints","count":49},{"language":"default","tag":"Overview","count":26},{"language":"default","tag":"Core concepts","count":10},{"language":"default","tag":"Examples","count":10},{"language":"default","tag":"Identities","count":9},{"language":"default","tag":"WebSocket","count":7},{"language":"default","tag":"Pump","count":7},{"language":"default","tag":"Traders","count":7},{"language":"default","tag":"Get started","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v3/api-reference/traders/find-traders-by-handle","slug":"/v3/api-reference/traders/find-traders-by-handle","pageMetadata":{"title":"Find traders by handle","description":"The traders whose handle on a platform matches `handle`. Look a trader up once, then store our id and use it from then on.\n\n- The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers.\n- Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile `observedAt` first, then trader id.\n- One handle can match several traders, for example two people with the same handle on two platforms. Check `canonical.platforms` and `sources` before you pick one.\n- `canonical.walletAvailable` is `true` when `GET /v3/traders/{traderId}/wallets` lists at least one wallet for the trader and `false` when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal.\n- No match answers 200 with an empty page. This operation never answers 404.\n- The first page of a miss carries `suggestions`: up to 5 traders whose handle or name looks like `handle` (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched.\n- With `match=closest` that miss answers with the first suggestion as the only item and `match: \"closest\"`. Check it before you store the id: a close handle is a guess, not proof.\n- Paged with `cursor` and `limit` (default 50, maximum 200).\n\n## Price\n\nThe price depends on the answer.\n\n| Answer | Credits | Reveals |\n| --- | --- | --- |\n| At least one trader holds or held the handle. | 100 | 0 |\n| None does, and `match=closest` answers with the first suggestion. | 100 | 0 |\n| None does, and no trader answers: an empty page with `suggestions`. | 200 | 0 |\n\n## Limits\n\n- 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.\n- A key with less than 100 credits left gets 402 `QUOTA_EXCEEDED` before any work.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/lookup","href":"/v3/api-reference/traders/find-traders-by-handle","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h2: \"h2\",\n li: \"li\",\n p: \"p\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"The traders whose handle on a platform matches \", _jsx(_components.code, {\n children: \"handle\"\n }), \". Look a trader up once, then store our id and use it from then on.\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile \", _jsx(_components.code, {\n children: \"observedAt\"\n }), \" first, then trader id.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"One handle can match several traders, for example two people with the same handle on two platforms. Check \", _jsx(_components.code, {\n children: \"canonical.platforms\"\n }), \" and \", _jsx(_components.code, {\n children: \"sources\"\n }), \" before you pick one.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"canonical.walletAvailable\"\n }), \" is \", _jsx(_components.code, {\n children: \"true\"\n }), \" when \", _jsx(_components.code, {\n children: \"GET /v3/traders/{traderId}/wallets\"\n }), \" lists at least one wallet for the trader and \", _jsx(_components.code, {\n children: \"false\"\n }), \" when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal.\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"No match answers 200 with an empty page. This operation never answers 404.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The first page of a miss carries \", _jsx(_components.code, {\n children: \"suggestions\"\n }), \": up to 5 traders whose handle or name looks like \", _jsx(_components.code, {\n children: \"handle\"\n }), \" (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"With \", _jsx(_components.code, {\n children: \"match=closest\"\n }), \" that miss answers with the first suggestion as the only item and \", _jsx(_components.code, {\n children: \"match: \\\"closest\\\"\"\n }), \". Check it before you store the id: a close handle is a guess, not proof.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Paged with \", _jsx(_components.code, {\n children: \"cursor\"\n }), \" and \", _jsx(_components.code, {\n children: \"limit\"\n }), \" (default 50, maximum 200).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Price\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The price depends on the answer.\"\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Answer\"\n }), _jsx(_components.th, {\n children: \"Credits\"\n }), _jsx(_components.th, {\n children: \"Reveals\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: \"At least one trader holds or held the handle.\"\n }), _jsx(_components.td, {\n children: \"100\"\n }), _jsx(_components.td, {\n children: \"0\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsxs(_components.td, {\n children: [\"None does, and \", _jsx(_components.code, {\n children: \"match=closest\"\n }), \" answers with the first suggestion.\"]\n }), _jsx(_components.td, {\n children: \"100\"\n }), _jsx(_components.td, {\n children: \"0\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsxs(_components.td, {\n children: [\"None does, and no trader answers: an empty page with \", _jsx(_components.code, {\n children: \"suggestions\"\n }), \".\"]\n }), _jsx(_components.td, {\n children: \"200\"\n }), _jsx(_components.td, {\n children: \"0\"\n })]\n })]\n })]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Limits\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"A key with less than 100 credits left gets 402 \", _jsx(_components.code, {\n children: \"QUOTA_EXCEEDED\"\n }), \" before any work.\"]\n }), \"\\n\"]\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Find traders by handle","description":"The traders whose handle on a platform matches `handle`. Look a trader up once, then store our id and use it from then on.\n\n- The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers.\n- Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile `observedAt` first, then trader id.\n- One handle can match several traders, for example two people with the same handle on two platforms. Check `canonical.platforms` and `sources` before you pick one.\n- `canonical.walletAvailable` is `true` when `GET /v3/traders/{traderId}/wallets` lists at least one wallet for the trader and `false` when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal.\n- No match answers 200 with an empty page. This operation never answers 404.\n- The first page of a miss carries `suggestions`: up to 5 traders whose handle or name looks like `handle` (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched.\n- With `match=closest` that miss answers with the first suggestion as the only item and `match: \"closest\"`. Check it before you store the id: a close handle is a guess, not proof.\n- Paged with `cursor` and `limit` (default 50, maximum 200).\n\n## Price\n\nThe price depends on the answer.\n\n| Answer | Credits | Reveals |\n| --- | --- | --- |\n| At least one trader holds or held the handle. | 100 | 0 |\n| None does, and `match=closest` answers with the first suggestion. | 100 | 0 |\n| None does, and no trader answers: an empty page with `suggestions`. | 200 | 0 |\n\n## Limits\n\n- 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.\n- A key with less than 100 credits left gets 402 `QUOTA_EXCEEDED` before any work.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/lookup","href":"/v3/api-reference/traders/find-traders-by-handle","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"lookupTraders","summary":"Find traders by handle","description":"The traders whose handle on a platform matches `handle`. Look a trader up once, then store our id and use it from then on.\n\n- The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers.\n- Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile `observedAt` first, then trader id.\n- One handle can match several traders, for example two people with the same handle on two platforms. Check `canonical.platforms` and `sources` before you pick one.\n- `canonical.walletAvailable` is `true` when `GET /v3/traders/{traderId}/wallets` lists at least one wallet for the trader and `false` when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal.\n- No match answers 200 with an empty page. This operation never answers 404.\n- The first page of a miss carries `suggestions`: up to 5 traders whose handle or name looks like `handle` (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched.\n- With `match=closest` that miss answers with the first suggestion as the only item and `match: \"closest\"`. Check it before you store the id: a close handle is a guess, not proof.\n- Paged with `cursor` and `limit` (default 50, maximum 200).\n\n## Price\n\nThe price depends on the answer.\n\n| Answer | Credits | Reveals |\n| --- | --- | --- |\n| At least one trader holds or held the handle. | 100 | 0 |\n| None does, and `match=closest` answers with the first suggestion. | 100 | 0 |\n| None does, and no trader answers: an empty page with `suggestions`. | 200 | 0 |\n\n## Limits\n\n- 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.\n- A key with less than 100 credits left gets 402 `QUOTA_EXCEEDED` before any work.","tags":["Traders"],"x-operation":2,"parameters":["26333280-b047-40d3-8909-609cc97ca85f","3d04db3e-f01b-438b-b9d0-e487253443c2","26f41fcd-2c7b-4fa5-8731-75684b5d00f9","33039f80-d77d-45b3-a508-f22a2a0064cf","b7ea1ed0-006f-4e57-adf4-e5d580478a22"],"responses":{"200":"e218b33d-953a-4a8a-b351-0cb0c981f138","400":"334e91a9-e33b-4765-8772-acb2a788384f","401":"6c1327e2-9163-4ace-9e21-28e8eddae496","402":"908b0034-d5cd-4415-9a0f-d332b8aed117","403":"b155cc42-881b-4023-95bf-634f258a457b","429":"b3f4f997-8c12-4285-b9e4-8d38c4520a77","500":"a3d542df-dd95-4aaf-9c4a-0ba3c46da543","503":"37f52ff2-d0f5-4952-b40d-b393344c324e"},"method":"get","type":"path","servers":["5fe32091-bca0-4091-894b-0b0476baa441"],"security":["1dae2ee9-4ade-434c-a812-454ff298e096","cc08a9cd-c1f8-4037-b1f0-a8a921734bd0"],"path":"/v3/traders/lookup","baseUrlOptions":["https://api.fomoscan.sh"],"title":"Find traders by handle","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"26333280-b047-40d3-8909-609cc97ca85f":{"name":"handle","in":"query","description":"The handle to find, 1 to 64 characters. A leading `@` is dropped, and letter case does not count.","required":true,"schema":{"type":"string","minLength":1,"maxLength":65,"isRequired":true,"description":"The handle to find, 1 to 64 characters. A leading `@` is dropped, and letter case does not count.","uniqueKey":"","typeLabel":"string"}},"3d04db3e-f01b-438b-b9d0-e487253443c2":{"name":"platform","in":"query","description":"Only accounts on this platform, for the matches and the suggestions. Leave it out for every platform.","required":false,"schema":{"type":"string","enum":["fomo","pump","hyperliquid","markets","polymarket","legend","risex"],"isRequired":false,"description":"Only accounts on this platform, for the matches and the suggestions. Leave it out for every platform.","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"26f41fcd-2c7b-4fa5-8731-75684b5d00f9":{"name":"match","in":"query","description":"`exact` (the default): only traders that hold the handle or held it in the last 30 days. `closest`: when none does, answer with the first of `suggestions` instead of an empty page.","required":false,"schema":{"default":"exact","type":"string","enum":["exact","closest"],"isRequired":false,"description":"`exact` (the default): only traders that hold the handle or held it in the last 30 days. `closest`: when none does, answer with the first of `suggestions` instead of an empty page.","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"33039f80-d77d-45b3-a508-f22a2a0064cf":{"name":"cursor","in":"query","description":"The `nextCursor` of the previous page, sent back as it came. Leave it out for the first page. A cursor belongs to the query that produced it: sent with other parameters it answers 400 `INVALID_ARGUMENT`.","required":false,"schema":{"type":"string","minLength":3,"maxLength":1024,"isRequired":false,"description":"The `nextCursor` of the previous page, sent back as it came. Leave it out for the first page. A cursor belongs to the query that produced it: sent with other parameters it answers 400 `INVALID_ARGUMENT`.","uniqueKey":"","typeLabel":"string"}},"b7ea1ed0-006f-4e57-adf4-e5d580478a22":{"name":"limit","in":"query","description":"Rows per page, 1 to 200. 50 when left out.","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200,"isRequired":false,"description":"Rows per page, 1 to 200. 50 when left out.","uniqueKey":"","typeLabel":"integer"}}},"responses":{"e218b33d-953a-4a8a-b351-0cb0c981f138":{"description":"OK","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests per minute allowed for the key.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests left in the current minute.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current minute ends.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"trader","description":"The kind of object, `trader` here, and the only field to switch on. Skip objects whose kind you do not know.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].kind","typeLabel":"string"},"id":{"type":"string","description":"Our id of the object, `tdr_` and 26 lowercase base32 characters. Store it: it stays the same across calls and never holds a platform's own id.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].id","typeLabel":"string"},"canonical":{"type":"object","properties":{"display":{"oneOf":[{"type":"object","description":"What to show for the trader. Each field comes from the `profile` block with the newest `observedAt` among the blocks in `sources` whose field is not `null`; a tie goes to the platform key that sorts first. One field can come from another platform than the next. `null` when no profile exists.","required":["handle","name","avatarUrl"],"properties":{"handle":{"oneOf":[{"description":"`handle` of the newest `profile` block that has one, `null` when none has.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.handle.oneOf.0","typeLabel":"string"},{"description":"`handle` of the newest `profile` block that has one, `null` when none has.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.handle","typeLabel":"string | null"},"name":{"oneOf":[{"description":"`name` of the newest `profile` block that has one, `null` when none has.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"`name` of the newest `profile` block that has one, `null` when none has.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.name","typeLabel":"string | null"},"avatarUrl":{"oneOf":[{"description":"`avatarUrl` of the newest `profile` block that has one, `null` when none has.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.avatarUrl.oneOf.0","typeLabel":"string"},{"description":"`avatarUrl` of the newest `profile` block that has one, `null` when none has.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.avatarUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0.avatarUrl","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.0","typeLabel":"object"},{"type":"null","description":"What to show for the trader. Each field comes from the `profile` block with the newest `observedAt` among the blocks in `sources` whose field is not `null`; a tie goes to the platform key that sorts first. One field can come from another platform than the next. `null` when no profile exists.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.display","typeLabel":"object | null"},"platforms":{"type":"array","items":{"type":"string","enum":["fomo","pump","hyperliquid","markets","polymarket","legend","risex"],"uniqueKey":"\\items.items.[INDEX].canonical.platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The platforms the trader holds an account on, sorted.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.platforms","typeLabel":"enum\u003cstring>[]"},"mergedFrom":{"type":"array","items":{"type":"string","uniqueKey":"\\items.items.[INDEX].canonical.mergedFrom.items.[INDEX]","typeLabel":"string"},"description":"The `tdr_` ids of traders merged into this one, sorted. A request for one of them answers with this trader.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.mergedFrom","typeLabel":"string[]"},"firstSeenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we first saw the trader.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical.firstSeenAt","typeLabel":"string\u003cdate-time>"},"walletAvailable":{"description":"`true` when `GET /v3/traders/{traderId}/wallets` lists at least one wallet for the trader, so its reveal returns an address; `false` when it lists none. Never the address. Sent by `GET /v3/traders/{traderId}` and `GET /v3/traders/lookup` at no extra charge and without a reveal, and absent from the trader envelopes of every other operation.","type":"boolean","uniqueKey":"\\items.items.[INDEX].canonical.walletAvailable","typeLabel":"boolean"}},"required":["display","platforms","mergedFrom","firstSeenAt"],"description":"Fields that mean the same on every platform.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].canonical","typeLabel":"object"},"sources":{"type":"object","propertyNames":{"type":"string","enum":["fomo","pump","hyperliquid","markets","polymarket","legend","risex"]},"additionalProperties":{"type":"object","properties":{"profile":{"oneOf":[{"type":"object","description":"The public profile of the account on this platform.","required":["handle","name","bio","avatarUrl","xHandle","verified","observedAt"],"properties":{"handle":{"oneOf":[{"description":"The handle on this platform, without `@`.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.handle.oneOf.0","typeLabel":"string"},{"description":"The handle on this platform, without `@`.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.handle","typeLabel":"string | null"},"name":{"oneOf":[{"description":"The display name on this platform.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"The display name on this platform.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.name","typeLabel":"string | null"},"bio":{"oneOf":[{"description":"The profile text on this platform.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.bio.oneOf.0","typeLabel":"string"},{"description":"The profile text on this platform.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.bio.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.bio","typeLabel":"string | null"},"avatarUrl":{"oneOf":[{"description":"Our mirrored copy of the avatar (`/a/\u003ckey>.webp`), never the platform link.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.avatarUrl.oneOf.0","typeLabel":"string"},{"description":"Our mirrored copy of the avatar (`/a/\u003ckey>.webp`), never the platform link.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.avatarUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.avatarUrl","typeLabel":"string | null"},"xHandle":{"oneOf":[{"description":"The X handle the platform shows, without `@`.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.xHandle.oneOf.0","typeLabel":"string"},{"description":"The X handle the platform shows, without `@`.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.xHandle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.xHandle","typeLabel":"string | null"},"verified":{"oneOf":[{"description":"The platform's own verified badge. We do not check it.","type":"boolean","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.verified.oneOf.0","typeLabel":"boolean"},{"description":"The platform's own verified badge. We do not check it.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.verified.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.verified","typeLabel":"boolean | null"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we read this block from the platform. Every value in the block is as of this time.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0.observedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.0","typeLabel":"object"},{"type":"object","description":"The public profile of the account on this platform.","required":["status","retryable"],"properties":{"status":{"type":"string","const":"unavailable","description":"Always `unavailable`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.1.status","typeLabel":"string"},"retryable":{"type":"boolean","description":"`true` when a later call can return the block.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.1.retryable","typeLabel":"boolean"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile.oneOf.1","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.profile","typeLabel":"object"},"followGraph":{"oneOf":[{"type":"object","description":"Follower and following counts on this platform.","required":["followers","following","observedAt"],"properties":{"followers":{"oneOf":[{"type":"integer","description":"Followers on this platform, as the platform counts them.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.followers.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Followers on this platform, as the platform counts them.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.followers.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.followers","typeLabel":"integer | null"},"following":{"oneOf":[{"type":"integer","description":"Accounts this account follows, as the platform counts them.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.following.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Accounts this account follows, as the platform counts them.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.following.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.following","typeLabel":"integer | null"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we read this block from the platform. Every value in the block is as of this time.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0.observedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.0","typeLabel":"object"},{"type":"object","description":"Follower and following counts on this platform.","required":["status","retryable"],"properties":{"status":{"type":"string","const":"unavailable","description":"Always `unavailable`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.1.status","typeLabel":"string"},"retryable":{"type":"boolean","description":"`true` when a later call can return the block.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.1.retryable","typeLabel":"boolean"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph.oneOf.1","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.followGraph","typeLabel":"object"},"tradingStats":{"oneOf":[{"type":"object","description":"Trading figures the platform publishes. The platform's numbers, never ours.","required":["swapCount","tradeCount","volume","avgHoldSeconds","observedAt"],"properties":{"swapCount":{"oneOf":[{"type":"integer","description":"Swaps the platform reports for the account.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.swapCount.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Swaps the platform reports for the account.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.swapCount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.swapCount","typeLabel":"integer | null"},"tradeCount":{"oneOf":[{"type":"integer","description":"Trades the platform reports for the account.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.tradeCount.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Trades the platform reports for the account.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.tradeCount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.tradeCount","typeLabel":"integer | null"},"volume":{"oneOf":[{"type":"object","description":"Traded volume the platform reports, in USD.","required":["value","decimals","currency"],"properties":{"value":{"type":"string","pattern":"^(0|-?[1-9]\\d*)$","description":"An integer in base units, as a string, and negative below zero. Read it with a decimal or big integer type; a float loses digits.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.value","typeLabel":"string"},"decimals":{"type":"integer","minimum":0,"maximum":36,"description":"The power of ten between base units and one whole unit: `value` ÷ 10^`decimals`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.decimals","typeLabel":"integer"},"currency":{"type":"string","minLength":1,"description":"`USD`, or the token id (`tok_\u003cnetwork>_\u003caddress>`) of a token quantity.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.currency","typeLabel":"string"},"priceAsOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"The time of the price we converted the value with. Absent when no price was used.","uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.priceAsOf","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded volume the platform reports, in USD.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.volume","typeLabel":"object | null"},"avgHoldSeconds":{"oneOf":[{"description":"The average time the account held a position, in seconds, as the platform reports.","type":"number","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.avgHoldSeconds.oneOf.0","typeLabel":"number"},{"description":"The average time the account held a position, in seconds, as the platform reports.","type":"null","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.avgHoldSeconds.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.avgHoldSeconds","typeLabel":"number | null"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we read this block from the platform. Every value in the block is as of this time.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0.observedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.0","typeLabel":"object"},{"type":"object","description":"Trading figures the platform publishes. The platform's numbers, never ours.","required":["status","retryable"],"properties":{"status":{"type":"string","const":"unavailable","description":"Always `unavailable`.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.1.status","typeLabel":"string"},"retryable":{"type":"boolean","description":"`true` when a later call can return the block.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.1.retryable","typeLabel":"boolean"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats.oneOf.1","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties.tradingStats","typeLabel":"object"}},"uniqueKey":"\\items.items.[INDEX].sources.additionalProperties","typeLabel":"object"},"description":"Capability blocks keyed by platform. A platform key is absent when the object has no side on that platform. A block is absent when the platform cannot provide it (`GET /v3/capabilities` lists which can) or we hold no reading of it yet. A field is `null` when the platform left it empty at `observedAt` or never fills it (`unfilled` in `GET /v3/capabilities`). Skip platform keys and blocks you do not know.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].sources","typeLabel":"object"}},"required":["kind","id","canonical","sources"],"description":"A trader: one person behind accounts on one or more platforms. The envelope carries no wallets; `GET /v3/traders/{traderId}/wallets` lists them.","uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"description":"The rows of this page, in the order the operation states.","isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"hasMore":{"type":"boolean","description":"`true` when another page follows this one.","isRequired":true,"uniqueKey":"hasMore","typeLabel":"boolean"},"nextCursor":{"oneOf":[{"description":"The cursor of the next page (`c_…`), or `null` on the last page. Treat it as opaque: send it back as `cursor`, never parse or build it.","type":"string","isRequired":true,"uniqueKey":"nextCursor.oneOf.0","typeLabel":"string"},{"description":"The cursor of the next page (`c_…`), or `null` on the last page. Treat it as opaque: send it back as `cursor`, never parse or build it.","type":"null","isRequired":true,"uniqueKey":"nextCursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"nextCursor","typeLabel":"string | null"},"match":{"type":"string","enum":["exact","closest"],"description":"`exact`: the items hold the handle or held it in the last 30 days, or the page is empty. `closest`: no trader does, and the only item is the first of `suggestions`.","isRequired":true,"uniqueKey":"match","typeLabel":"enum\u003cstring>"},"suggestions":{"description":"Present on a first page where no trader holds or held the handle: up to 5 traders whose handle or name is close to it, or whose handle starts with it, best first. Empty when the handle has fewer than 3 characters once spaces are dropped, or nothing is close.","maxItems":5,"type":"array","items":{"type":"object","properties":{"trader":{"type":"object","properties":{"kind":{"type":"string","const":"trader","description":"The kind of object, `trader` here, and the only field to switch on. Skip objects whose kind you do not know.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.kind","typeLabel":"string"},"id":{"type":"string","description":"Our id of the object, `tdr_` and 26 lowercase base32 characters. Store it: it stays the same across calls and never holds a platform's own id.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.id","typeLabel":"string"},"canonical":{"type":"object","properties":{"display":{"oneOf":[{"type":"object","description":"What to show for the trader. Each field comes from the `profile` block with the newest `observedAt` among the blocks in `sources` whose field is not `null`; a tie goes to the platform key that sorts first. One field can come from another platform than the next. `null` when no profile exists.","required":["handle","name","avatarUrl"],"properties":{"handle":{"oneOf":[{"description":"`handle` of the newest `profile` block that has one, `null` when none has.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.handle.oneOf.0","typeLabel":"string"},{"description":"`handle` of the newest `profile` block that has one, `null` when none has.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.handle","typeLabel":"string | null"},"name":{"oneOf":[{"description":"`name` of the newest `profile` block that has one, `null` when none has.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"`name` of the newest `profile` block that has one, `null` when none has.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.name","typeLabel":"string | null"},"avatarUrl":{"oneOf":[{"description":"`avatarUrl` of the newest `profile` block that has one, `null` when none has.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.avatarUrl.oneOf.0","typeLabel":"string"},{"description":"`avatarUrl` of the newest `profile` block that has one, `null` when none has.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.avatarUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0.avatarUrl","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.0","typeLabel":"object"},{"type":"null","description":"What to show for the trader. Each field comes from the `profile` block with the newest `observedAt` among the blocks in `sources` whose field is not `null`; a tie goes to the platform key that sorts first. One field can come from another platform than the next. `null` when no profile exists.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.display","typeLabel":"object | null"},"platforms":{"type":"array","items":{"type":"string","enum":["fomo","pump","hyperliquid","markets","polymarket","legend","risex"],"uniqueKey":"suggestions.items.[INDEX].trader.canonical.platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The platforms the trader holds an account on, sorted.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.platforms","typeLabel":"enum\u003cstring>[]"},"mergedFrom":{"type":"array","items":{"type":"string","uniqueKey":"suggestions.items.[INDEX].trader.canonical.mergedFrom.items.[INDEX]","typeLabel":"string"},"description":"The `tdr_` ids of traders merged into this one, sorted. A request for one of them answers with this trader.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.mergedFrom","typeLabel":"string[]"},"firstSeenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we first saw the trader.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical.firstSeenAt","typeLabel":"string\u003cdate-time>"},"walletAvailable":{"description":"`true` when `GET /v3/traders/{traderId}/wallets` lists at least one wallet for the trader, so its reveal returns an address; `false` when it lists none. Never the address. Sent by `GET /v3/traders/{traderId}` and `GET /v3/traders/lookup` at no extra charge and without a reveal, and absent from the trader envelopes of every other operation.","type":"boolean","uniqueKey":"suggestions.items.[INDEX].trader.canonical.walletAvailable","typeLabel":"boolean"}},"required":["display","platforms","mergedFrom","firstSeenAt"],"description":"Fields that mean the same on every platform.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.canonical","typeLabel":"object"},"sources":{"type":"object","propertyNames":{"type":"string","enum":["fomo","pump","hyperliquid","markets","polymarket","legend","risex"]},"additionalProperties":{"type":"object","properties":{"profile":{"oneOf":[{"type":"object","description":"The public profile of the account on this platform.","required":["handle","name","bio","avatarUrl","xHandle","verified","observedAt"],"properties":{"handle":{"oneOf":[{"description":"The handle on this platform, without `@`.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.handle.oneOf.0","typeLabel":"string"},{"description":"The handle on this platform, without `@`.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.handle","typeLabel":"string | null"},"name":{"oneOf":[{"description":"The display name on this platform.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"The display name on this platform.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.name","typeLabel":"string | null"},"bio":{"oneOf":[{"description":"The profile text on this platform.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.bio.oneOf.0","typeLabel":"string"},{"description":"The profile text on this platform.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.bio.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.bio","typeLabel":"string | null"},"avatarUrl":{"oneOf":[{"description":"Our mirrored copy of the avatar (`/a/\u003ckey>.webp`), never the platform link.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.avatarUrl.oneOf.0","typeLabel":"string"},{"description":"Our mirrored copy of the avatar (`/a/\u003ckey>.webp`), never the platform link.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.avatarUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.avatarUrl","typeLabel":"string | null"},"xHandle":{"oneOf":[{"description":"The X handle the platform shows, without `@`.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.xHandle.oneOf.0","typeLabel":"string"},{"description":"The X handle the platform shows, without `@`.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.xHandle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.xHandle","typeLabel":"string | null"},"verified":{"oneOf":[{"description":"The platform's own verified badge. We do not check it.","type":"boolean","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.verified.oneOf.0","typeLabel":"boolean"},{"description":"The platform's own verified badge. We do not check it.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.verified.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.verified","typeLabel":"boolean | null"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we read this block from the platform. Every value in the block is as of this time.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0.observedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.0","typeLabel":"object"},{"type":"object","description":"The public profile of the account on this platform.","required":["status","retryable"],"properties":{"status":{"type":"string","const":"unavailable","description":"Always `unavailable`.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.1.status","typeLabel":"string"},"retryable":{"type":"boolean","description":"`true` when a later call can return the block.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.1.retryable","typeLabel":"boolean"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile.oneOf.1","typeLabel":"object"}],"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.profile","typeLabel":"object"},"followGraph":{"oneOf":[{"type":"object","description":"Follower and following counts on this platform.","required":["followers","following","observedAt"],"properties":{"followers":{"oneOf":[{"type":"integer","description":"Followers on this platform, as the platform counts them.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.followers.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Followers on this platform, as the platform counts them.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.followers.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.followers","typeLabel":"integer | null"},"following":{"oneOf":[{"type":"integer","description":"Accounts this account follows, as the platform counts them.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.following.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Accounts this account follows, as the platform counts them.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.following.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.following","typeLabel":"integer | null"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we read this block from the platform. Every value in the block is as of this time.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0.observedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.0","typeLabel":"object"},{"type":"object","description":"Follower and following counts on this platform.","required":["status","retryable"],"properties":{"status":{"type":"string","const":"unavailable","description":"Always `unavailable`.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.1.status","typeLabel":"string"},"retryable":{"type":"boolean","description":"`true` when a later call can return the block.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.1.retryable","typeLabel":"boolean"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph.oneOf.1","typeLabel":"object"}],"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.followGraph","typeLabel":"object"},"tradingStats":{"oneOf":[{"type":"object","description":"Trading figures the platform publishes. The platform's numbers, never ours.","required":["swapCount","tradeCount","volume","avgHoldSeconds","observedAt"],"properties":{"swapCount":{"oneOf":[{"type":"integer","description":"Swaps the platform reports for the account.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.swapCount.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Swaps the platform reports for the account.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.swapCount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.swapCount","typeLabel":"integer | null"},"tradeCount":{"oneOf":[{"type":"integer","description":"Trades the platform reports for the account.","maximum":9007199254740991,"minimum":-9007199254740991,"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.tradeCount.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Trades the platform reports for the account.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.tradeCount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.tradeCount","typeLabel":"integer | null"},"volume":{"oneOf":[{"type":"object","description":"Traded volume the platform reports, in USD.","required":["value","decimals","currency"],"properties":{"value":{"type":"string","pattern":"^(0|-?[1-9]\\d*)$","description":"An integer in base units, as a string, and negative below zero. Read it with a decimal or big integer type; a float loses digits.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.value","typeLabel":"string"},"decimals":{"type":"integer","minimum":0,"maximum":36,"description":"The power of ten between base units and one whole unit: `value` ÷ 10^`decimals`.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.decimals","typeLabel":"integer"},"currency":{"type":"string","minLength":1,"description":"`USD`, or the token id (`tok_\u003cnetwork>_\u003caddress>`) of a token quantity.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.currency","typeLabel":"string"},"priceAsOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"The time of the price we converted the value with. Absent when no price was used.","uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0.priceAsOf","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded volume the platform reports, in USD.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.volume","typeLabel":"object | null"},"avgHoldSeconds":{"oneOf":[{"description":"The average time the account held a position, in seconds, as the platform reports.","type":"number","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.avgHoldSeconds.oneOf.0","typeLabel":"number"},{"description":"The average time the account held a position, in seconds, as the platform reports.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.avgHoldSeconds.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.avgHoldSeconds","typeLabel":"number | null"},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","description":"When we read this block from the platform. Every value in the block is as of this time.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0.observedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.0","typeLabel":"object"},{"type":"object","description":"Trading figures the platform publishes. The platform's numbers, never ours.","required":["status","retryable"],"properties":{"status":{"type":"string","const":"unavailable","description":"Always `unavailable`.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.1.status","typeLabel":"string"},"retryable":{"type":"boolean","description":"`true` when a later call can return the block.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.1.retryable","typeLabel":"boolean"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats.oneOf.1","typeLabel":"object"}],"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties.tradingStats","typeLabel":"object"}},"uniqueKey":"suggestions.items.[INDEX].trader.sources.additionalProperties","typeLabel":"object"},"description":"Capability blocks keyed by platform. A platform key is absent when the object has no side on that platform. A block is absent when the platform cannot provide it (`GET /v3/capabilities` lists which can) or we hold no reading of it yet. A field is `null` when the platform left it empty at `observedAt` or never fills it (`unfilled` in `GET /v3/capabilities`). Skip platform keys and blocks you do not know.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader.sources","typeLabel":"object"}},"required":["kind","id","canonical","sources"],"description":"The suggested trader, as its envelope.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].trader","typeLabel":"object"},"platform":{"type":"string","enum":["fomo","pump","hyperliquid","markets","polymarket","legend","risex"],"description":"The platform of the account that made the suggestion.","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].platform","typeLabel":"enum\u003cstring>"},"handle":{"oneOf":[{"description":"The handle of that account, `null` when it has none and its name matched.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].handle.oneOf.0","typeLabel":"string"},{"description":"The handle of that account, `null` when it has none and its name matched.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].handle","typeLabel":"string | null"},"name":{"oneOf":[{"description":"The name of that account, `null` when it has none.","type":"string","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"The name of that account, `null` when it has none.","type":"null","isRequired":true,"uniqueKey":"suggestions.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"suggestions.items.[INDEX].name","typeLabel":"string | null"}},"required":["trader","platform","handle","name"],"description":"A trader whose handle or name is close to the handle looked up.","uniqueKey":"suggestions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"suggestions","typeLabel":"object[]"}},"required":["items","hasMore","nextCursor","match"],"description":"The traders that hold or held the handle, one page of them, with `suggestions` when none does.","uniqueKey":"","typeLabel":"object"},"example":{"items":[{"kind":"trader","id":"tdr_01jbst8pvcfp79y0938nkrkayd","canonical":{"display":{"handle":"nightowl","name":"Night Owl","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp"},"platforms":["fomo","pump"],"mergedFrom":["tdr_01jbst8zcefy8b28t5cy4tqkff"],"firstSeenAt":"2025-03-14T16:20:05.412Z","walletAvailable":true},"sources":{"fomo":{"profile":{"handle":"nightowl","name":"Night Owl","bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":null,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":18450,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"},"tradingStats":{"swapCount":1840,"tradeCount":977,"volume":{"value":"482113250000","decimals":6,"currency":"USD"},"avgHoldSeconds":15120.5,"observedAt":"2026-11-01T08:42:10.250Z"}},"pump":{"profile":{"handle":"nightowl","name":null,"bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":false,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":2210,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"}}}}],"hasMore":false,"nextCursor":null,"match":"closest","suggestions":[{"trader":{"kind":"trader","id":"tdr_01jbst8pvcfp79y0938nkrkayd","canonical":{"display":{"handle":"nightowl","name":"Night Owl","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp"},"platforms":["fomo","pump"],"mergedFrom":["tdr_01jbst8zcefy8b28t5cy4tqkff"],"firstSeenAt":"2025-03-14T16:20:05.412Z"},"sources":{"fomo":{"profile":{"handle":"nightowl","name":"Night Owl","bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":null,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":18450,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"},"tradingStats":{"swapCount":1840,"tradeCount":977,"volume":{"value":"482113250000","decimals":6,"currency":"USD"},"avgHoldSeconds":15120.5,"observedAt":"2026-11-01T08:42:10.250Z"}},"pump":{"profile":{"handle":"nightowl","name":null,"bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":false,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":2210,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"}}}},"platform":"fomo","handle":"nightowl","name":"Night Owl"}]},"examples":{"Example":{"title":"Example","value":{"items":[{"kind":"trader","id":"tdr_01jbst8pvcfp79y0938nkrkayd","canonical":{"display":{"handle":"nightowl","name":"Night Owl","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp"},"platforms":["fomo","pump"],"mergedFrom":["tdr_01jbst8zcefy8b28t5cy4tqkff"],"firstSeenAt":"2025-03-14T16:20:05.412Z","walletAvailable":true},"sources":{"fomo":{"profile":{"handle":"nightowl","name":"Night Owl","bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":null,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":18450,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"},"tradingStats":{"swapCount":1840,"tradeCount":977,"volume":{"value":"482113250000","decimals":6,"currency":"USD"},"avgHoldSeconds":15120.5,"observedAt":"2026-11-01T08:42:10.250Z"}},"pump":{"profile":{"handle":"nightowl","name":null,"bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":false,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":2210,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"}}}}],"hasMore":false,"nextCursor":null,"match":"closest","suggestions":[{"trader":{"kind":"trader","id":"tdr_01jbst8pvcfp79y0938nkrkayd","canonical":{"display":{"handle":"nightowl","name":"Night Owl","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp"},"platforms":["fomo","pump"],"mergedFrom":["tdr_01jbst8zcefy8b28t5cy4tqkff"],"firstSeenAt":"2025-03-14T16:20:05.412Z"},"sources":{"fomo":{"profile":{"handle":"nightowl","name":"Night Owl","bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":null,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":18450,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"},"tradingStats":{"swapCount":1840,"tradeCount":977,"volume":{"value":"482113250000","decimals":6,"currency":"USD"},"avgHoldSeconds":15120.5,"observedAt":"2026-11-01T08:42:10.250Z"}},"pump":{"profile":{"handle":"nightowl","name":null,"bio":"Solana memecoins, small size, long holds.","avatarUrl":"https://img.example.com/a/9b1f0c7e3d2a4b5c8e6f1a2b3c4d5e6f.webp","xHandle":"nightowl_sol","verified":false,"observedAt":"2026-11-01T08:42:10.250Z"},"followGraph":{"followers":2210,"following":312,"observedAt":"2026-11-01T08:42:10.250Z"}}}},"platform":"fomo","handle":"nightowl","name":"Night Owl"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"334e91a9-e33b-4765-8772-acb2a788384f":{"description":"`INVALID_ARGUMENT`: a parameter, an id, a cursor or the body is malformed, or the operation does not take it.\n\n- `handle` is empty once the `@` is dropped, or longer than 64 characters.\n- `match` is neither `exact` nor `closest`.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"6c1327e2-9163-4ace-9e21-28e8eddae496":{"description":"`UNAUTHENTICATED`: no key, or the key is unknown, revoked or expired.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"908b0034-d5cd-4415-9a0f-d332b8aed117":{"description":"`QUOTA_EXCEEDED`: the credit balance cannot pay for the call.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b155cc42-881b-4023-95bf-634f258a457b":{"description":"`PERMISSION_DENIED`: the key may not make this call.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b3f4f997-8c12-4285-b9e4-8d38c4520a77":{"description":"`RATE_LIMITED`: too many requests. Retry after the seconds in `Retry-After`.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a3d542df-dd95-4aaf-9c4a-0ba3c46da543":{"description":"`INTERNAL`: the call failed on our side.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"37f52ff2-d0f5-4952-b40d-b393344c324e":{"description":"`OVERLOADED`: the API holds too many requests at once. Retry after the seconds in `Retry-After`.","headers":{"X-Request-Id":{"description":"The id of this request, as in our logs.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","quota","permission","rate_limit","internal","overloaded"],"description":"The group of the error. Each `code` belongs to one type.","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["INVALID_ARGUMENT","UNAUTHENTICATED","QUOTA_EXCEEDED","REVEAL_LIMIT_REACHED","PERMISSION_DENIED","PLAN_REQUIRED","NOT_FOUND","RATE_LIMITED","INTERNAL","OVERLOADED"],"description":"What went wrong, from a closed list. Act on this field.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A sentence for people. It can change; never parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"requestId":{"type":"string","description":"The id of the request, equal to `X-Request-Id`. Quote it when you write to us.","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string"}},"required":["type","code","message","requestId"],"description":"The error.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"The body of every error answer.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"INVALID_ARGUMENT","message":"\u003cstring>","requestId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1dae2ee9-4ade-434c-a812-454ff298e096":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}},"cc08a9cd-c1f8-4037-b1f0-a8a921734bd0":{"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-Api-Key","scopes":[],"schemeName":"apiKeyHeader"}}},"servers":{"5fe32091-bca0-4091-894b-0b0476baa441":{"url":"https://api.fomoscan.sh","description":"The API host"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Key","scopes":[],"schemeName":"apiKeyHeader"},"schema":{"title":"X-Api-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyHeader","name":"X-Api-Key"}],"title":"apiKeyHeader"}]},"originalFileLocation":"https://api.fomoscan.sh/v3/openapi.json"},"subdomain":"socialscan","siteName":"FomoScan","title":"Find traders by handle - FomoScan","navMaps":{"firstHrefInVersion":{"v2":{"href":"/api-reference/identities/read-a-wallet-free-stored-profile","matchLevel":2},"v3":{"href":"/v3/api-reference/traders/find-traders-by-handle","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T20:47:33.975Z","originalFileLocation":"v3/api-reference/traders/find-traders-by-handle.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=\"dark\"}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=\"The traders whose handle on a platform matches handle. Look a trader up once, then store our id and use it from then on. - The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers. - Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile observedAt first, then trader id. - One handle can match several traders, for example two people with the same handle on two platforms. Check canonical.platforms and sources before you pick one. - canonical.walletAvailable is true when GET /v3/traders/{traderId}/wallets lists at least one wallet for the trader and false when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal. - No match answers 200 with an empty page. This operation never answers 404. - The first page of a miss carries suggestions: up to 5 traders whose handle or name looks like handle (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched. - With match=closest that miss answers with the first suggestion as the only item and match: \u0026quot;closest\u0026quot;. Check it before you store the id: a close handle is a guess, not proof. - Paged with cursor and limit (default 50, maximum 200). ## Price The price depends on the answer. | Answer | Credits | Reveals | | --- | --- | --- | | At least one trader holds or held the handle. | 100 | 0 | | None does, and match=closest answers with the first suggestion. | 100 | 0 | | None does, and no trader answers: an empty page with suggestions. | 200 | 0 | ## Limits - 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key. - A key with less than 100 credits left gets 402 QUOTA_EXCEEDED before any work.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FomoScan\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_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/socialscan/Akelxu7vD__0Z47A/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Find traders by handle - FomoScan\">\u003cmeta data-mint-head property=\"og:description\" content=\"The traders whose handle on a platform matches handle. Look a trader up once, then store our id and use it from then on. - The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers. - Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile observedAt first, then trader id. - One handle can match several traders, for example two people with the same handle on two platforms. Check canonical.platforms and sources before you pick one. - canonical.walletAvailable is true when GET /v3/traders/{traderId}/wallets lists at least one wallet for the trader and false when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal. - No match answers 200 with an empty page. This operation never answers 404. - The first page of a miss carries suggestions: up to 5 traders whose handle or name looks like handle (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched. - With match=closest that miss answers with the first suggestion as the only item and match: \u0026quot;closest\u0026quot;. Check it before you store the id: a close handle is a guess, not proof. - Paged with cursor and limit (default 50, maximum 200). ## Price The price depends on the answer. | Answer | Credits | Reveals | | --- | --- | --- | | At least one trader holds or held the handle. | 100 | 0 | | None does, and match=closest answers with the first suggestion. | 100 | 0 | | None does, and no trader answers: an empty page with suggestions. | 200 | 0 | ## Limits - 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key. - A key with less than 100 credits left gets 402 QUOTA_EXCEEDED before any work.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FomoScan\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://socialscan.mintlify.app/_mintlify/api/og/v2?division=Traders\u0026amp;title=Find+traders+by+handle\u0026amp;description=The+traders+whose+handle+on+a+platform+matches+%60handle%60.+Look+a+trader+up+once%2C+then+store+our+id+and+use+it+from+then+on.%0A%0A-+The+match+covers+the+handle+each+a\u0026amp;theme=eee421e92d714c8c3b4eb52f\u0026amp;signature=f509095935ce83a6c2fc844da44f48a31d1ae5d3ce66672341926fdb01d29b94\">\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=\"Find traders by handle - FomoScan\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The traders whose handle on a platform matches handle. Look a trader up once, then store our id and use it from then on. - The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers. - Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile observedAt first, then trader id. - One handle can match several traders, for example two people with the same handle on two platforms. Check canonical.platforms and sources before you pick one. - canonical.walletAvailable is true when GET /v3/traders/{traderId}/wallets lists at least one wallet for the trader and false when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal. - No match answers 200 with an empty page. This operation never answers 404. - The first page of a miss carries suggestions: up to 5 traders whose handle or name looks like handle (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched. - With match=closest that miss answers with the first suggestion as the only item and match: \u0026quot;closest\u0026quot;. Check it before you store the id: a close handle is a guess, not proof. - Paged with cursor and limit (default 50, maximum 200). ## Price The price depends on the answer. | Answer | Credits | Reveals | | --- | --- | --- | | At least one trader holds or held the handle. | 100 | 0 | | None does, and match=closest answers with the first suggestion. | 100 | 0 | | None does, and no trader answers: an empty page with suggestions. | 200 | 0 | ## Limits - 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key. - A key with less than 100 credits left gets 402 QUOTA_EXCEEDED before any work.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://socialscan.mintlify.app/_mintlify/api/og/v2?division=Traders\u0026amp;title=Find+traders+by+handle\u0026amp;description=The+traders+whose+handle+on+a+platform+matches+%60handle%60.+Look+a+trader+up+once%2C+then+store+our+id+and+use+it+from+then+on.%0A%0A-+The+match+covers+the+handle+each+a\u0026amp;theme=eee421e92d714c8c3b4eb52f\u0026amp;signature=f509095935ce83a6c2fc844da44f48a31d1ae5d3ce66672341926fdb01d29b94\">\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/socialscan/Akelxu7vD__0Z47A/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FomoScan\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2D6BF5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v3/api-reference/traders/find-traders-by-handle.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fomoscan.sh/#organization\",\"name\":\"FomoScan\",\"url\":\"https://docs.fomoscan.sh\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/socialscan/HNyN-bTZ1IatgGfu/images/mark.png?fit=max\u0026auto=format\u0026n=HNyN-bTZ1IatgGfu\u0026q=85\u0026s=d477c368ad11635c9133ca701da2f527\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fomoscan.sh#website\",\"name\":\"FomoScan\",\"url\":\"https://docs.fomoscan.sh\",\"publisher\":{\"@id\":\"https://docs.fomoscan.sh/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle#webpage\",\"url\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle\",\"name\":\"Find traders by handle\",\"description\":\"The traders whose handle on a platform matches handle. Look a trader up once, then store our id and use it from then on. - The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers. - Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile observedAt first, then trader id. - One handle can match several traders, for example two people with the same handle on two platforms. Check canonical.platforms and sources before you pick one. - canonical.walletAvailable is true when GET /v3/traders/{traderId}/wallets lists at least one wallet for the trader and false when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal. - No match answers 200 with an empty page. This operation never answers 404. - The first page of a miss carries suggestions: up to 5 traders whose handle or name looks like handle (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched. - With match=closest that miss answers with the first suggestion as the only item and match: \\\"closest\\\". Check it before you store the id: a close handle is a guess, not proof. - Paged with cursor and limit (default 50, maximum 200). ## Price The price depends on the answer. | Answer | Credits | Reveals | | --- | --- | --- | | At least one trader holds or held the handle. | 100 | 0 | | None does, and match=closest answers with the first suggestion. | 100 | 0 | | None does, and no trader answers: an empty page with suggestions. | 200 | 0 | ## Limits - 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key. - A key with less than 100 credits left gets 402 QUOTA_EXCEEDED before any work.\",\"dateModified\":\"2026-11-04T20:47:33.975Z\",\"isPartOf\":{\"@id\":\"https://docs.fomoscan.sh#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.fomoscan.sh/v3/api-reference/traders/read-one-trader\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Traders\",\"item\":\"https://docs.fomoscan.sh/v3/api-reference/traders/read-one-trader\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Find traders by handle\",\"item\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle#apireference\",\"headline\":\"Find traders by handle\",\"name\":\"Find traders by handle\",\"description\":\"The traders whose handle on a platform matches handle. Look a trader up once, then store our id and use it from then on. - The match covers the handle each account holds now and every handle it held in the last 30 days, so a renamed account still answers. - Order: traders whose current handle matches first, then traders who held it in the last 30 days. Inside each group, the newest profile observedAt first, then trader id. - One handle can match several traders, for example two people with the same handle on two platforms. Check canonical.platforms and sources before you pick one. - canonical.walletAvailable is true when GET /v3/traders/{traderId}/wallets lists at least one wallet for the trader and false when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal. - No match answers 200 with an empty page. This operation never answers 404. - The first page of a miss carries suggestions: up to 5 traders whose handle or name looks like handle (a typo, a repeated letter, spaces) or whose handle starts with it, closest first, with a small lift for followed traders. Each names the platform, handle and name of the account that matched. - With match=closest that miss answers with the first suggestion as the only item and match: \\\"closest\\\". Check it before you store the id: a close handle is a guess, not proof. - Paged with cursor and limit (default 50, maximum 200). ## Price The price depends on the answer. | Answer | Credits | Reveals | | --- | --- | --- | | At least one trader holds or held the handle. | 100 | 0 | | None does, and match=closest answers with the first suggestion. | 100 | 0 | | None does, and no trader answers: an empty page with suggestions. | 200 | 0 | ## Limits - 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key. - A key with less than 100 credits left gets 402 QUOTA_EXCEEDED before any work.\",\"url\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fomoscan.sh/v3/api-reference/traders/find-traders-by-handle#webpage\"},\"dateModified\":\"2026-11-04T20:47:33.975Z\",\"publisher\":{\"@id\":\"https://docs.fomoscan.sh/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fomoscan.sh#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FomoScan\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FomoScan","nav":{"global":{"anchors":[{"anchor":"Partner portal","icon":"key","href":"https://partner.fomoscan.sh"},{"anchor":"OpenAPI spec","icon":"code","href":"https://api.fomoscan.sh/openapi.json"}]},"versions":[{"version":"v2","default":true,"pages":[{"title":"v2","href":"/api-reference/identities/read-a-wallet-free-stored-profile"}]},{"version":"v3","tag":"New","tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/v3"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/v3/api-reference/introduction"},{"title":"Traders, wallets and PnL","href":"/v3/guides/traders"},{"title":"Posts","href":"/v3/guides/posts"},{"title":"Leaderboards and rankings","href":"/v3/guides/boards"}]},{"group":"Endpoints","pages":[{"group":"Traders","pages":[{"title":"Read one trader","description":"The trader behind this id. `canonical` says what to show and which platforms the trader is on; `sources` holds the blocks of each platform (`profile`, `followGraph`, `tradingStats`).\n\n- An id merged into another trader answers 200 with the trader that absorbed it: `id` differs from the one you sent, and `canonical.mergedFrom` lists yours. Store the new `id`.\n- Each field of `canonical.display` comes from the newest `profile` block (by `observedAt`) that has it, so a newer profile with an empty field never blanks a value another platform shows.\n- When the trader holds two accounts on one platform, each block comes from the account whose block is newest.\n- The envelope carries no wallets: `GET /v3/traders/{traderId}/wallets` lists them.\n- `canonical.walletAvailable` is `true` when `GET /v3/traders/{traderId}/wallets` lists at least one wallet for the trader and `false` when it lists none, so you know before you pay its reveal whether an address will come back. It never carries the address and takes no reveal.\n\n## Price\n\nThe price depends on the answer.\n\n| Answer | Credits | Reveals |\n| --- | --- | --- |\n| The trader exists. | 100 | 0 |\n| 404: no trader has this id. | 200 | 0 |\n\n## Limits\n\n- 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.\n- A key with less than 100 credits left gets 402 `QUOTA_EXCEEDED` before any work.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}","href":"/v3/api-reference/traders/read-one-trader"},{"title":"Find traders by handle","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/lookup","href":"/v3/api-reference/traders/find-traders-by-handle"},{"title":"List the wallets of a trader","description":"The wallets of a trader, each as a wallet envelope whose `owners` lists this trader alone.\n\n- The list covers every account of the trader on every platform, merges included.\n- Order: tier strongest first, then the earliest `firstVerifiedAt`, then family and address.\n- A link read from the wallet a platform profile shows never counts; every other active link does, at its tier.\n- A trader without wallets answers 200 with an empty page.\n- Paged with `cursor` and `limit` (default 50, maximum 200).\n\n## Price\n\nThe price depends on the answer. The Reveals column says when a reveal is taken.\n\n| Answer | Credits | Reveals |\n| --- | --- | --- |\n| The page lists at least one wallet. | 100 | 1 |\n| The page lists no wallet. | 100 | 0 |\n| 404: no trader has this id. | 200 | 0 |\n\nReveals count against a key with a monthly reveal cap. When the answer needs more reveals than the key has left, the call is refused before any credit is taken: 402 `REVEAL_LIMIT_REACHED`, or 403 `PERMISSION_DENIED` for a key on a free plan without reveals.\n\n## Limits\n\n- 2,000 requests per minute from one address on this operation, beside the per-minute limit of the key.\n- A key with less than 100 credits left gets 402 `QUOTA_EXCEEDED` before any work.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}/wallets","href":"/v3/api-reference/traders/list-the-wallets-of-a-trader"},{"title":"Read a trader's PnL across whole wallets","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}/pnl","href":"/v3/api-reference/traders/read-a-traders-pnl-across-whole-wallets"},{"title":"Read the PnL of up to 100 traders","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json post /v3/traders/pnl","href":"/v3/api-reference/traders/read-the-pnl-of-up-to-100-traders"},{"title":"List the traders who follow a trader","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}/followers","href":"/v3/api-reference/traders/list-the-traders-who-follow-a-trader"},{"title":"List the traders a trader follows","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}/following","href":"/v3/api-reference/traders/list-the-traders-a-trader-follows"}]},{"group":"Wallets","pages":[{"title":"Read one wallet and who owns it","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/wallets/{family}/{address}","href":"/v3/api-reference/wallets/read-one-wallet-and-who-owns-it"},{"title":"Read one wallet's PnL across the whole wallet","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/wallets/{family}/{address}/pnl","href":"/v3/api-reference/wallets/read-one-wallets-pnl-across-the-whole-wallet"},{"title":"Read the PnL of up to 100 wallets","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json post /v3/wallets/pnl","href":"/v3/api-reference/wallets/read-the-pnl-of-up-to-100-wallets"}]},{"group":"Posts","pages":[{"title":"Read the post feed","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/posts","href":"/v3/api-reference/posts/read-the-post-feed"},{"title":"Read the posts about a token","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/tokens/{network}/{address}/posts","href":"/v3/api-reference/posts/read-the-posts-about-a-token"},{"title":"Read the posts of a trader","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}/posts","href":"/v3/api-reference/posts/read-the-posts-of-a-trader"}]},{"group":"Tokens","pages":[{"title":"Read one token","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/tokens/{network}/{address}","href":"/v3/api-reference/tokens/read-one-token"}]},{"group":"Leaderboards","pages":[{"title":"List the leaderboards platforms publish","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/leaderboards","href":"/v3/api-reference/leaderboards/list-the-leaderboards-platforms-publish"},{"title":"Read one capture of a platform leaderboard","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/leaderboards/{platform}/{board}","href":"/v3/api-reference/leaderboards/read-one-capture-of-a-platform-leaderboard"}]},{"group":"Rankings","pages":[{"title":"List our rankings","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/rankings","href":"/v3/api-reference/rankings/list-our-rankings"},{"title":"Read the newest snapshot of one of our rankings","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/rankings/{key}","href":"/v3/api-reference/rankings/read-the-newest-snapshot-of-one-of-our-rankings"}]},{"group":"Account","pages":[{"title":"Read the calling key, its plan and its usage","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/me","href":"/v3/api-reference/account/read-the-calling-key-its-plan-and-its-usage"},{"title":"Read which platform provides which block","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/capabilities","href":"/v3/api-reference/account/read-which-platform-provides-which-block"}]},{"group":"Trades","pages":[{"title":"Read the newest trades of the traders we mapped","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/trades","href":"/v3/api-reference/trades/read-the-newest-trades-of-the-traders-we-mapped"},{"title":"Read the trades of a trader's wallets","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/traders/{traderId}/trades","href":"/v3/api-reference/trades/read-the-trades-of-a-traders-wallets"},{"title":"Read the trades of one wallet","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3/wallets/{family}/{address}/trades","href":"/v3/api-reference/trades/read-the-trades-of-one-wallet"}]},{"group":"WebSocket","pages":[{"title":"Live posts (WebSocket)","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/v3/openapi.json get /v3","href":"/v3/api-reference/websocket/live-posts-websocket"}]}]}]},{"tab":"WebSocket","pages":[{"title":"WebSocket","href":"/v3/websocket/overview"}]}]}]},"basePath":"","title":"Find traders by handle - FomoScan","buildId":"dpl_2gSLkbMoF5kkLsBqYzq9KWtDyJRo","deploymentId":"dpl_2gSLkbMoF5kkLsBqYzq9KWtDyJRo","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-hfTk6MZX.js","utils-Bfp7HcY4.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D8dSW7yV.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CFgQXcZO.js","snippetPresets-dMW1-pV3.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-DyrCOido.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Bwwdcyh3.js","shallow-drVXTg79.js","getApiPlaygroundDisplay-GMPxUzWV.js","CodeSnippet-wTmV0wP6.js","CodeSnippets-D_QxCJEq.js","Page-BsZAA8xk.js","getPastedJson-Dev-X0Xy.js","icon-7L2WL0jD.js","MethodPill-Ble59Dl_.js","DuplicateIcon-r-98uLGh.js","createIcon-DaFzipjW.js","DynamicMarkdown-Jk8YAWGN.js","SectionHeading-nLgrCDOg.js","axios-vUo_bRtp.js","Markdown-_QGow1Wo.js","clsx-v8ssfMzu.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CjboTi0T.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DkAyo-p5.js"]}