ready: figures are served; each window carries its own status. pending: nothing could be read within the wait; ask again after retryAfterSeconds. failed: the last reading failed and nothing is held yet. unavailable: whole-wallet reading is switched off or out of capacity. Only ready is charged the hit price.
One formula on every window: realized profit on average cost plus the unrealized profit of positions last traded in the window. 24h, 7d and 30d are UTC calendar days ending today.
The wallet's standing on the latest pump.fun PnL boards, as pump.fun shows it, for reference. pump.fun computes these itself and they need not match the windows above. Null for a board the wallet is not on.
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","deployBranch":"docs/mintlify","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad9b8401cd014c88d97bc9d","collectionId":"c186b78b-a7c0-4e23-b1cb-ae4e03460857","liveDeploymentHistoryId":"6ad9b8401cd014c88d97bc9d","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adf2f4be705fd92bf16659a","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API reference","count":22},{"language":"default","tag":"Endpoints","count":19},{"language":"default","tag":"Overview","count":12},{"language":"default","tag":"Examples","count":10},{"language":"default","tag":"WebSockets","count":6},{"language":"default","tag":"Identities","count":6},{"language":"default","tag":"Pump","count":6},{"language":"default","tag":"Core concepts","count":4},{"language":"default","tag":"Thesis Feed","count":4},{"language":"default","tag":"Get started","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit","slug":"/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit","pageMetadata":{"title":"One pump.fun wallet's realized and unrealized profit","description":"Profit and trading activity across the whole wallet, on the same formula as\nGET /v2/user/handle/{handle}/pnl.\n\n- `24h`, `7d`, `30d` and `all` each carry `realizedPnlUsd`, `unrealizedPnlUsd` and\n `totalPnlUsd`. `all` covers every trade since 1 January 2025.\n- `unrealized`: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool.\n- `pumpBoard`: the standing pump.fun itself shows on its PnL boards, for reference.\n- The first call for a wallet reads it live, up to 8 seconds. A window that does not\n finish in time comes back `pending` and is ready on the next call.\n- Only a `ready` answer is charged the hit price; every other answer is charged the\n miss price.\n- **404** when the wallet has no pump.fun user.\n\n**Price:** 500 CU per call.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/user/wallet/{wallet}/pnl","href":"/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit","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 li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Profit and trading activity across the whole wallet, on the same formula as\\nGET /v2/user/handle/\", \"/pnl.\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"24h\"\n }), \", \", _jsx(_components.code, {\n children: \"7d\"\n }), \", \", _jsx(_components.code, {\n children: \"30d\"\n }), \" and \", _jsx(_components.code, {\n children: \"all\"\n }), \" each carry \", _jsx(_components.code, {\n children: \"realizedPnlUsd\"\n }), \", \", _jsx(_components.code, {\n children: \"unrealizedPnlUsd\"\n }), \" and\\n\", _jsx(_components.code, {\n children: \"totalPnlUsd\"\n }), \". \", _jsx(_components.code, {\n children: \"all\"\n }), \" covers every trade since 1 January 2025.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"unrealized\"\n }), \": profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"pumpBoard\"\n }), \": the standing pump.fun itself shows on its PnL boards, for reference.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The first call for a wallet reads it live, up to 8 seconds. A window that does not\\nfinish in time comes back \", _jsx(_components.code, {\n children: \"pending\"\n }), \" and is ready on the next call.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Only a \", _jsx(_components.code, {\n children: \"ready\"\n }), \" answer is charged the hit price; every other answer is charged the\\nmiss price.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"404\"\n }), \" when the wallet has no pump.fun user.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Price:\"\n }), \" 500 CU per call.\"]\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":"One pump.fun wallet's realized and unrealized profit","description":"Profit and trading activity across the whole wallet, on the same formula as\nGET /v2/user/handle/{handle}/pnl.\n\n- `24h`, `7d`, `30d` and `all` each carry `realizedPnlUsd`, `unrealizedPnlUsd` and\n `totalPnlUsd`. `all` covers every trade since 1 January 2025.\n- `unrealized`: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool.\n- `pumpBoard`: the standing pump.fun itself shows on its PnL boards, for reference.\n- The first call for a wallet reads it live, up to 8 seconds. A window that does not\n finish in time comes back `pending` and is ready on the next call.\n- Only a `ready` answer is charged the hit price; every other answer is charged the\n miss price.\n- **404** when the wallet has no pump.fun user.\n\n**Price:** 500 CU per call.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/user/wallet/{wallet}/pnl","href":"/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"One pump.fun wallet's realized and unrealized profit","tags":["Pump"],"description":"Profit and trading activity across the whole wallet, on the same formula as\nGET /v2/user/handle/{handle}/pnl.\n\n- `24h`, `7d`, `30d` and `all` each carry `realizedPnlUsd`, `unrealizedPnlUsd` and\n `totalPnlUsd`. `all` covers every trade since 1 January 2025.\n- `unrealized`: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool.\n- `pumpBoard`: the standing pump.fun itself shows on its PnL boards, for reference.\n- The first call for a wallet reads it live, up to 8 seconds. A window that does not\n finish in time comes back `pending` and is ready on the next call.\n- Only a `ready` answer is charged the hit price; every other answer is charged the\n miss price.\n- **404** when the wallet has no pump.fun user.\n\n**Price:** 500 CU per call.","parameters":["20271036-bb7a-4a94-acd8-d9a1455ef06b"],"security":["453cfb50-7258-46bf-a5b9-b9e1250e5f3e"],"responses":{"200":"a2fc5bb1-4fda-443f-a234-b7adda82e049","404":"5d902a77-1d14-449e-9f8c-6895c72608b1"},"method":"get","type":"path","servers":["b77ad147-c485-42b8-aa9a-cac81c6dba4f"],"path":"/v2/pump/user/wallet/{wallet}/pnl","baseUrlOptions":["https://api.fomoscan.sh"],"title":"One pump.fun wallet's realized and unrealized profit","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"20271036-bb7a-4a94-acd8-d9a1455ef06b":{"schema":{"type":"string","minLength":1,"maxLength":128,"isRequired":true,"description":"pump.fun wallet (Solana address).","uniqueKey":"","typeLabel":"string"},"in":"path","name":"wallet","required":true,"description":"pump.fun wallet (Solana address)."}},"responses":{"a2fc5bb1-4fda-443f-a234-b7adda82e049":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["wallet","username","status","retryAfterSeconds","updatedAt","windows","unrealized","pumpBoard"],"properties":{"wallet":{"type":"string","isRequired":true,"uniqueKey":"wallet","typeLabel":"string"},"username":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"username.oneOf.0","typeLabel":"null"},{"type":"string","isRequired":true,"uniqueKey":"username.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"username","typeLabel":"null | string"},"status":{"type":"string","enum":["ready","pending","failed","unavailable"],"description":"`ready`: figures are served; each window carries its own status. `pending`: nothing could be read within the wait; ask again after retryAfterSeconds. `failed`: the last reading failed and nothing is held yet. `unavailable`: whole-wallet reading is switched off or out of capacity. Only `ready` is charged the hit price.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"retryAfterSeconds":{"oneOf":[{"type":"null","description":"Set only when status is pending or failed.","isRequired":true,"uniqueKey":"retryAfterSeconds.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Set only when status is pending or failed.","isRequired":true,"uniqueKey":"retryAfterSeconds.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"retryAfterSeconds","typeLabel":"null | integer"},"updatedAt":{"oneOf":[{"type":"null","description":"Epoch ms of the oldest figure served. Null unless status is ready.","isRequired":true,"uniqueKey":"updatedAt.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Epoch ms of the oldest figure served. Null unless status is ready.","isRequired":true,"uniqueKey":"updatedAt.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"updatedAt","typeLabel":"null | integer"},"windows":{"type":"object","required":["24h","7d","30d","all"],"description":"One formula on every window: realized profit on average cost plus the unrealized profit of positions last traded in the window. 24h, 7d and 30d are UTC calendar days ending today.","properties":{"24h":{"type":"object","required":["realizedPnlUsd","unrealizedPnlUsd","totalPnlUsd","returnPct","volumeUsd","buyVolumeUsd","sellVolumeUsd","trades","buys","sells","tokensTraded","winningTokens","status","updatedAt"],"properties":{"realizedPnlUsd":{"oneOf":[{"type":"null","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.24h.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.24h.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.24h.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.24h.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.unrealizedPnlUsd","typeLabel":"null | number"},"totalPnlUsd":{"oneOf":[{"type":"null","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.24h.totalPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.24h.totalPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.totalPnlUsd","typeLabel":"null | number"},"returnPct":{"oneOf":[{"type":"null","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.24h.returnPct.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.24h.returnPct.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.returnPct","typeLabel":"null | number"},"volumeUsd":{"oneOf":[{"type":"null","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.24h.volumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.24h.volumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.volumeUsd","typeLabel":"null | number"},"buyVolumeUsd":{"oneOf":[{"type":"null","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.24h.buyVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.24h.buyVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.buyVolumeUsd","typeLabel":"null | number"},"sellVolumeUsd":{"oneOf":[{"type":"null","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.24h.sellVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.24h.sellVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.24h.sellVolumeUsd","typeLabel":"null | number"},"trades":{"oneOf":[{"type":"null","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.24h.trades.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.24h.trades.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.24h.trades","typeLabel":"null | integer"},"buys":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.24h.buys.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.24h.buys.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.24h.buys","typeLabel":"null | integer"},"sells":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.24h.sells.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.24h.sells.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.24h.sells","typeLabel":"null | integer"},"tokensTraded":{"oneOf":[{"type":"null","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.24h.tokensTraded.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.24h.tokensTraded.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.24h.tokensTraded","typeLabel":"null | integer"},"winningTokens":{"oneOf":[{"type":"null","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.24h.winningTokens.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.24h.winningTokens.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.24h.winningTokens","typeLabel":"null | integer"},"status":{"type":"string","enum":["ready","pending"],"description":"`ready`: the figures are filled. `pending`: this window is still being read for the first time; its figures are null and a call a few seconds later carries them.","isRequired":true,"uniqueKey":"windows.24h.status","typeLabel":"enum\u003cstring>"},"updatedAt":{"oneOf":[{"type":"null","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.24h.updatedAt.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.24h.updatedAt.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.24h.updatedAt","typeLabel":"null | integer"}},"isRequired":true,"uniqueKey":"windows.24h","typeLabel":"object"},"7d":{"type":"object","required":["realizedPnlUsd","unrealizedPnlUsd","totalPnlUsd","returnPct","volumeUsd","buyVolumeUsd","sellVolumeUsd","trades","buys","sells","tokensTraded","winningTokens","status","updatedAt"],"properties":{"realizedPnlUsd":{"oneOf":[{"type":"null","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.7d.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.7d.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.7d.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.7d.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.unrealizedPnlUsd","typeLabel":"null | number"},"totalPnlUsd":{"oneOf":[{"type":"null","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.7d.totalPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.7d.totalPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.totalPnlUsd","typeLabel":"null | number"},"returnPct":{"oneOf":[{"type":"null","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.7d.returnPct.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.7d.returnPct.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.returnPct","typeLabel":"null | number"},"volumeUsd":{"oneOf":[{"type":"null","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.7d.volumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.7d.volumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.volumeUsd","typeLabel":"null | number"},"buyVolumeUsd":{"oneOf":[{"type":"null","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.7d.buyVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.7d.buyVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.buyVolumeUsd","typeLabel":"null | number"},"sellVolumeUsd":{"oneOf":[{"type":"null","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.7d.sellVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.7d.sellVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.7d.sellVolumeUsd","typeLabel":"null | number"},"trades":{"oneOf":[{"type":"null","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.7d.trades.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.7d.trades.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.7d.trades","typeLabel":"null | integer"},"buys":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.7d.buys.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.7d.buys.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.7d.buys","typeLabel":"null | integer"},"sells":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.7d.sells.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.7d.sells.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.7d.sells","typeLabel":"null | integer"},"tokensTraded":{"oneOf":[{"type":"null","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.7d.tokensTraded.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.7d.tokensTraded.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.7d.tokensTraded","typeLabel":"null | integer"},"winningTokens":{"oneOf":[{"type":"null","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.7d.winningTokens.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.7d.winningTokens.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.7d.winningTokens","typeLabel":"null | integer"},"status":{"type":"string","enum":["ready","pending"],"description":"`ready`: the figures are filled. `pending`: this window is still being read for the first time; its figures are null and a call a few seconds later carries them.","isRequired":true,"uniqueKey":"windows.7d.status","typeLabel":"enum\u003cstring>"},"updatedAt":{"oneOf":[{"type":"null","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.7d.updatedAt.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.7d.updatedAt.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.7d.updatedAt","typeLabel":"null | integer"}},"isRequired":true,"uniqueKey":"windows.7d","typeLabel":"object"},"30d":{"type":"object","required":["realizedPnlUsd","unrealizedPnlUsd","totalPnlUsd","returnPct","volumeUsd","buyVolumeUsd","sellVolumeUsd","trades","buys","sells","tokensTraded","winningTokens","status","updatedAt"],"properties":{"realizedPnlUsd":{"oneOf":[{"type":"null","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.30d.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.30d.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.30d.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.30d.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.unrealizedPnlUsd","typeLabel":"null | number"},"totalPnlUsd":{"oneOf":[{"type":"null","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.30d.totalPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.30d.totalPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.totalPnlUsd","typeLabel":"null | number"},"returnPct":{"oneOf":[{"type":"null","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.30d.returnPct.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.30d.returnPct.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.returnPct","typeLabel":"null | number"},"volumeUsd":{"oneOf":[{"type":"null","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.30d.volumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.30d.volumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.volumeUsd","typeLabel":"null | number"},"buyVolumeUsd":{"oneOf":[{"type":"null","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.30d.buyVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.30d.buyVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.buyVolumeUsd","typeLabel":"null | number"},"sellVolumeUsd":{"oneOf":[{"type":"null","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.30d.sellVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.30d.sellVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.30d.sellVolumeUsd","typeLabel":"null | number"},"trades":{"oneOf":[{"type":"null","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.30d.trades.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.30d.trades.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.30d.trades","typeLabel":"null | integer"},"buys":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.30d.buys.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.30d.buys.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.30d.buys","typeLabel":"null | integer"},"sells":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.30d.sells.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.30d.sells.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.30d.sells","typeLabel":"null | integer"},"tokensTraded":{"oneOf":[{"type":"null","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.30d.tokensTraded.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.30d.tokensTraded.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.30d.tokensTraded","typeLabel":"null | integer"},"winningTokens":{"oneOf":[{"type":"null","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.30d.winningTokens.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.30d.winningTokens.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.30d.winningTokens","typeLabel":"null | integer"},"status":{"type":"string","enum":["ready","pending"],"description":"`ready`: the figures are filled. `pending`: this window is still being read for the first time; its figures are null and a call a few seconds later carries them.","isRequired":true,"uniqueKey":"windows.30d.status","typeLabel":"enum\u003cstring>"},"updatedAt":{"oneOf":[{"type":"null","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.30d.updatedAt.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.30d.updatedAt.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.30d.updatedAt","typeLabel":"null | integer"}},"isRequired":true,"uniqueKey":"windows.30d","typeLabel":"object"},"all":{"type":"object","required":["realizedPnlUsd","unrealizedPnlUsd","totalPnlUsd","returnPct","volumeUsd","buyVolumeUsd","sellVolumeUsd","trades","buys","sells","tokensTraded","winningTokens","status","updatedAt"],"properties":{"realizedPnlUsd":{"oneOf":[{"type":"null","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.all.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit in the window across the whole wallet, every venue, USD: what sells received minus the average cost of the tokens sold. On all, every trade since 1 January 2025. Null while pending, and when the figure is one no real wallet reaches or a realized profit larger than sellVolumeUsd.","isRequired":true,"uniqueKey":"windows.all.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.all.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"What the tokens held now are worth minus what they cost, USD, for the positions last traded in the window. On all, every position counted in unrealized. Null until the positions have been read.","isRequired":true,"uniqueKey":"windows.all.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.unrealizedPnlUsd","typeLabel":"null | number"},"totalPnlUsd":{"oneOf":[{"type":"null","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.all.totalPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"realizedPnlUsd plus unrealizedPnlUsd, USD. Null when either part is null.","isRequired":true,"uniqueKey":"windows.all.totalPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.totalPnlUsd","typeLabel":"null | number"},"returnPct":{"oneOf":[{"type":"null","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.all.returnPct.oneOf.0","typeLabel":"null"},{"type":"number","description":"Realized profit as a percentage of what the sold tokens cost.","isRequired":true,"uniqueKey":"windows.all.returnPct.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.returnPct","typeLabel":"null | number"},"volumeUsd":{"oneOf":[{"type":"null","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.all.volumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Bought plus sold in the window, USD.","isRequired":true,"uniqueKey":"windows.all.volumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.volumeUsd","typeLabel":"null | number"},"buyVolumeUsd":{"oneOf":[{"type":"null","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.all.buyVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Paid on buys in the window, USD.","isRequired":true,"uniqueKey":"windows.all.buyVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.buyVolumeUsd","typeLabel":"null | number"},"sellVolumeUsd":{"oneOf":[{"type":"null","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.all.sellVolumeUsd.oneOf.0","typeLabel":"null"},{"type":"number","description":"Received on sells in the window, USD.","isRequired":true,"uniqueKey":"windows.all.sellVolumeUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"windows.all.sellVolumeUsd","typeLabel":"null | number"},"trades":{"oneOf":[{"type":"null","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.all.trades.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Trades in the window.","isRequired":true,"uniqueKey":"windows.all.trades.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.all.trades","typeLabel":"null | integer"},"buys":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.all.buys.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.all.buys.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.all.buys","typeLabel":"null | integer"},"sells":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"windows.all.sells.oneOf.0","typeLabel":"null"},{"type":"integer","isRequired":true,"uniqueKey":"windows.all.sells.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.all.sells","typeLabel":"null | integer"},"tokensTraded":{"oneOf":[{"type":"null","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.all.tokensTraded.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Distinct tokens bought or sold in the window.","isRequired":true,"uniqueKey":"windows.all.tokensTraded.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.all.tokensTraded","typeLabel":"null | integer"},"winningTokens":{"oneOf":[{"type":"null","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.all.winningTokens.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Tokens that closed the window with positive realized profit.","isRequired":true,"uniqueKey":"windows.all.winningTokens.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.all.winningTokens","typeLabel":"null | integer"},"status":{"type":"string","enum":["ready","pending"],"description":"`ready`: the figures are filled. `pending`: this window is still being read for the first time; its figures are null and a call a few seconds later carries them.","isRequired":true,"uniqueKey":"windows.all.status","typeLabel":"enum\u003cstring>"},"updatedAt":{"oneOf":[{"type":"null","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.all.updatedAt.oneOf.0","typeLabel":"null"},{"type":"integer","description":"Epoch ms when this window's figures were read. Null while pending.","isRequired":true,"uniqueKey":"windows.all.updatedAt.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"windows.all.updatedAt","typeLabel":"null | integer"}},"isRequired":true,"uniqueKey":"windows.all","typeLabel":"object"}},"isRequired":true,"uniqueKey":"windows","typeLabel":"object"},"unrealized":{"oneOf":[{"type":"null","required":["unrealizedPnlUsd","holdingsUsd","positions","excludedPositions","status","updatedAt"],"properties":{"unrealizedPnlUsd":{"type":"number","description":"What the tokens held now are worth minus what they cost, USD. A token held without any buy, such as a transfer in or an airdrop, has no cost to measure against and is left out."},"holdingsUsd":{"type":"number","description":"Current value of the positions counted, USD."},"positions":{"type":"integer","description":"Open positions counted."},"excludedPositions":{"type":"integer","description":"Open positions left out: flagged as spam, a pool under $10,000 of liquidity, or a position worth more than its pool holds, since none of those can be sold at the quoted price; and a token held without any buy, which has no cost."},"status":{"type":"string","enum":["ready"],"description":"Always `ready` when present."},"updatedAt":{"type":"integer","description":"Epoch ms when the positions were read."}},"description":"Profit on what the wallet holds now. It has no window. Null until the positions have been read at least once.","isRequired":true,"uniqueKey":"unrealized.oneOf.0","typeLabel":"null"},{"type":"object","required":["unrealizedPnlUsd","holdingsUsd","positions","excludedPositions","status","updatedAt"],"properties":{"unrealizedPnlUsd":{"type":"number","description":"What the tokens held now are worth minus what they cost, USD. A token held without any buy, such as a transfer in or an airdrop, has no cost to measure against and is left out.","isRequired":true,"uniqueKey":"unrealized.oneOf.1.unrealizedPnlUsd","typeLabel":"number"},"holdingsUsd":{"type":"number","description":"Current value of the positions counted, USD.","isRequired":true,"uniqueKey":"unrealized.oneOf.1.holdingsUsd","typeLabel":"number"},"positions":{"type":"integer","description":"Open positions counted.","isRequired":true,"uniqueKey":"unrealized.oneOf.1.positions","typeLabel":"integer"},"excludedPositions":{"type":"integer","description":"Open positions left out: flagged as spam, a pool under $10,000 of liquidity, or a position worth more than its pool holds, since none of those can be sold at the quoted price; and a token held without any buy, which has no cost.","isRequired":true,"uniqueKey":"unrealized.oneOf.1.excludedPositions","typeLabel":"integer"},"status":{"type":"string","enum":["ready"],"description":"Always `ready` when present.","isRequired":true,"uniqueKey":"unrealized.oneOf.1.status","typeLabel":"enum\u003cstring>"},"updatedAt":{"type":"integer","description":"Epoch ms when the positions were read.","isRequired":true,"uniqueKey":"unrealized.oneOf.1.updatedAt","typeLabel":"integer"}},"description":"Profit on what the wallet holds now. It has no window. Null until the positions have been read at least once.","isRequired":true,"uniqueKey":"unrealized.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"unrealized","typeLabel":"null | object"},"pumpBoard":{"type":"object","required":["daily","weekly","monthly"],"description":"The wallet's standing on the latest pump.fun PnL boards, as pump.fun shows it, for reference. pump.fun computes these itself and they need not match the windows above. Null for a board the wallet is not on.","properties":{"daily":{"oneOf":[{"type":"null","required":["rank","pnlUsd","realizedPnlUsd","unrealizedPnlUsd","asOf"],"properties":{"rank":{"type":"integer"},"pnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"realizedPnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"unrealizedPnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"asOf":{"type":"integer","description":"Epoch ms of the board this standing is from."}},"isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.0","typeLabel":"null"},{"type":"object","required":["rank","pnlUsd","realizedPnlUsd","unrealizedPnlUsd","asOf"],"properties":{"rank":{"type":"integer","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.rank","typeLabel":"integer"},"pnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.pnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.pnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.pnlUsd","typeLabel":"null | number"},"realizedPnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.unrealizedPnlUsd","typeLabel":"null | number"},"asOf":{"type":"integer","description":"Epoch ms of the board this standing is from.","isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1.asOf","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"pumpBoard.daily.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"pumpBoard.daily","typeLabel":"null | object"},"weekly":{"oneOf":[{"type":"null","required":["rank","pnlUsd","realizedPnlUsd","unrealizedPnlUsd","asOf"],"properties":{"rank":{"type":"integer"},"pnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"realizedPnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"unrealizedPnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"asOf":{"type":"integer","description":"Epoch ms of the board this standing is from."}},"isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.0","typeLabel":"null"},{"type":"object","required":["rank","pnlUsd","realizedPnlUsd","unrealizedPnlUsd","asOf"],"properties":{"rank":{"type":"integer","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.rank","typeLabel":"integer"},"pnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.pnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.pnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.pnlUsd","typeLabel":"null | number"},"realizedPnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.unrealizedPnlUsd","typeLabel":"null | number"},"asOf":{"type":"integer","description":"Epoch ms of the board this standing is from.","isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1.asOf","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"pumpBoard.weekly.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"pumpBoard.weekly","typeLabel":"null | object"},"monthly":{"oneOf":[{"type":"null","required":["rank","pnlUsd","realizedPnlUsd","unrealizedPnlUsd","asOf"],"properties":{"rank":{"type":"integer"},"pnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"realizedPnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"unrealizedPnlUsd":{"oneOf":[{"type":"null"},{"type":"number"}]},"asOf":{"type":"integer","description":"Epoch ms of the board this standing is from."}},"isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.0","typeLabel":"null"},{"type":"object","required":["rank","pnlUsd","realizedPnlUsd","unrealizedPnlUsd","asOf"],"properties":{"rank":{"type":"integer","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.rank","typeLabel":"integer"},"pnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.pnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.pnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.pnlUsd","typeLabel":"null | number"},"realizedPnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.realizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.realizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.realizedPnlUsd","typeLabel":"null | number"},"unrealizedPnlUsd":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.unrealizedPnlUsd.oneOf.0","typeLabel":"null"},{"type":"number","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.unrealizedPnlUsd.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.unrealizedPnlUsd","typeLabel":"null | number"},"asOf":{"type":"integer","description":"Epoch ms of the board this standing is from.","isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1.asOf","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"pumpBoard.monthly.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"pumpBoard.monthly","typeLabel":"null | object"}},"isRequired":true,"uniqueKey":"pumpBoard","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"wallet":"\u003cstring>","username":"\u003cstring>","status":"ready","retryAfterSeconds":123,"updatedAt":123,"windows":{"24h":{"realizedPnlUsd":123,"unrealizedPnlUsd":123,"totalPnlUsd":123,"returnPct":123,"volumeUsd":123,"buyVolumeUsd":123,"sellVolumeUsd":123,"trades":123,"buys":123,"sells":123,"tokensTraded":123,"winningTokens":123,"status":"ready","updatedAt":123},"7d":{"realizedPnlUsd":123,"unrealizedPnlUsd":123,"totalPnlUsd":123,"returnPct":123,"volumeUsd":123,"buyVolumeUsd":123,"sellVolumeUsd":123,"trades":123,"buys":123,"sells":123,"tokensTraded":123,"winningTokens":123,"status":"ready","updatedAt":123},"30d":{"realizedPnlUsd":123,"unrealizedPnlUsd":123,"totalPnlUsd":123,"returnPct":123,"volumeUsd":123,"buyVolumeUsd":123,"sellVolumeUsd":123,"trades":123,"buys":123,"sells":123,"tokensTraded":123,"winningTokens":123,"status":"ready","updatedAt":123},"all":{"realizedPnlUsd":123,"unrealizedPnlUsd":123,"totalPnlUsd":123,"returnPct":123,"volumeUsd":123,"buyVolumeUsd":123,"sellVolumeUsd":123,"trades":123,"buys":123,"sells":123,"tokensTraded":123,"winningTokens":123,"status":"ready","updatedAt":123}},"unrealized":{"unrealizedPnlUsd":123,"holdingsUsd":123,"positions":123,"excludedPositions":123,"status":"ready","updatedAt":123},"pumpBoard":{"daily":{"rank":123,"pnlUsd":123,"realizedPnlUsd":123,"unrealizedPnlUsd":123,"asOf":123},"weekly":{"rank":123,"pnlUsd":123,"realizedPnlUsd":123,"unrealizedPnlUsd":123,"asOf":123},"monthly":{"rank":123,"pnlUsd":123,"realizedPnlUsd":123,"unrealizedPnlUsd":123,"asOf":123}}}}},"exampleType":"generated"}},"exampleType":"generated"},"5d902a77-1d14-449e-9f8c-6895c72608b1":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable, lower-snake-case error code.","enum":["BAD_REQUEST","B2B_DISABLED","CONFLICT","FORBIDDEN","FORBIDDEN_SCOPE","FREE_TIER_DISABLED","INTERNAL_ERROR","NOT_FOUND","OVERLOADED","QUOTA_EXCEEDED","RATE_LIMITED","REVEAL_LIMIT_REACHED","SAMPLE_SET_ONLY","TIMEOUT","UNAUTHORIZED","VALIDATION_ERROR","WEBSOCKET_PLAN_REQUIRED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfter":{"type":"integer","description":"Seconds; only on RATE_LIMITED.","uniqueKey":"error.retryAfter","typeLabel":"integer"},"addUrl":{"type":"string","description":"Hint URL, present on some NOT_FOUND responses.","uniqueKey":"error.addUrl","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"title":"ErrorBody","uniqueKey":"","typeLabel":"ErrorBody · object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BAD_REQUEST","message":"\u003cstring>","retryAfter":123,"addUrl":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"453cfb50-7258-46bf-a5b9-b9e1250e5f3e":{"b2bApiKey":{"type":"http","scheme":"bearer","description":"B2B API key (`fsk_live_…` / `fsk_test_…`), issued by FomoScan. Also accepted via `X-Api-Key`.","scopes":[],"schemeName":"b2bApiKey"}}},"servers":{"b77ad147-c485-42b8-aa9a-cac81c6dba4f":{"url":"https://api.fomoscan.sh","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"B2B API key (`fsk_live_…` / `fsk_test_…`), issued by FomoScan. Also accepted via `X-Api-Key`.","scopes":[],"schemeName":"b2bApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"B2B API key (`fsk_live_…` / `fsk_test_…`), issued by FomoScan. Also accepted via `X-Api-Key`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"b2bApiKey","name":"Authorization"}],"title":"b2bApiKey"}]},"originalFileLocation":"https://api.fomoscan.sh/openapi.json"},"subdomain":"socialscan","siteName":"FomoScan","title":"One pump.fun wallet's realized and unrealized profit - FomoScan","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T10:45:36.029Z","originalFileLocation":"api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit.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=\"Profit and trading activity across the whole wallet, on the same formula as GET /v2/user/handle/{handle}/pnl. - 24h, 7d, 30d and all each carry realizedPnlUsd, unrealizedPnlUsd and totalPnlUsd. all covers every trade since 1 January 2025. - unrealized: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool. - pumpBoard: the standing pump.fun itself shows on its PnL boards, for reference. - The first call for a wallet reads it live, up to 8 seconds. A window that does not finish in time comes back pending and is ready on the next call. - Only a ready answer is charged the hit price; every other answer is charged the miss price. - 404 when the wallet has no pump.fun user. Price: 500 CU per call.\">\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=\"One pump.fun wallet\u0026#x27;s realized and unrealized profit - FomoScan\">\u003cmeta data-mint-head property=\"og:description\" content=\"Profit and trading activity across the whole wallet, on the same formula as GET /v2/user/handle/{handle}/pnl. - 24h, 7d, 30d and all each carry realizedPnlUsd, unrealizedPnlUsd and totalPnlUsd. all covers every trade since 1 January 2025. - unrealized: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool. - pumpBoard: the standing pump.fun itself shows on its PnL boards, for reference. - The first call for a wallet reads it live, up to 8 seconds. A window that does not finish in time comes back pending and is ready on the next call. - Only a ready answer is charged the hit price; every other answer is charged the miss price. - 404 when the wallet has no pump.fun user. Price: 500 CU per call.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FomoScan\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit\">\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=Pump\u0026amp;title=One+pump.fun+wallet%27s+realized+and+unrealized+profit\u0026amp;description=Profit+and+trading+activity+across+the+whole+wallet%2C+on+the+same+formula+as%0AGET+%2Fv2%2Fuser%2Fhandle%2F%7Bhandle%7D%2Fpnl.%0A%0A-+%6024h%60%2C+%607d%60%2C+%6030d%60+and+%60all%60+each+carry+%60realiz\u0026amp;theme=eee421e92d714c8c3b4eb52f\u0026amp;signature=b6fd8c6374d216d6f0cf019e484b13713f68e413bf9501c4fbdba31a12142015\">\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=\"One pump.fun wallet\u0026#x27;s realized and unrealized profit - FomoScan\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Profit and trading activity across the whole wallet, on the same formula as GET /v2/user/handle/{handle}/pnl. - 24h, 7d, 30d and all each carry realizedPnlUsd, unrealizedPnlUsd and totalPnlUsd. all covers every trade since 1 January 2025. - unrealized: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool. - pumpBoard: the standing pump.fun itself shows on its PnL boards, for reference. - The first call for a wallet reads it live, up to 8 seconds. A window that does not finish in time comes back pending and is ready on the next call. - Only a ready answer is charged the hit price; every other answer is charged the miss price. - 404 when the wallet has no pump.fun user. Price: 500 CU per call.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://socialscan.mintlify.app/_mintlify/api/og/v2?division=Pump\u0026amp;title=One+pump.fun+wallet%27s+realized+and+unrealized+profit\u0026amp;description=Profit+and+trading+activity+across+the+whole+wallet%2C+on+the+same+formula+as%0AGET+%2Fv2%2Fuser%2Fhandle%2F%7Bhandle%7D%2Fpnl.%0A%0A-+%6024h%60%2C+%607d%60%2C+%6030d%60+and+%60all%60+each+carry+%60realiz\u0026amp;theme=eee421e92d714c8c3b4eb52f\u0026amp;signature=b6fd8c6374d216d6f0cf019e484b13713f68e413bf9501c4fbdba31a12142015\">\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/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit.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/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit#webpage\",\"url\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit\",\"name\":\"One pump.fun wallet's realized and unrealized profit\",\"description\":\"Profit and trading activity across the whole wallet, on the same formula as GET /v2/user/handle/{handle}/pnl. - 24h, 7d, 30d and all each carry realizedPnlUsd, unrealizedPnlUsd and totalPnlUsd. all covers every trade since 1 January 2025. - unrealized: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool. - pumpBoard: the standing pump.fun itself shows on its PnL boards, for reference. - The first call for a wallet reads it live, up to 8 seconds. A window that does not finish in time comes back pending and is ready on the next call. - Only a ready answer is charged the hit price; every other answer is charged the miss price. - 404 when the wallet has no pump.fun user. Price: 500 CU per call.\",\"dateModified\":\"2026-10-26T10:45:36.029Z\",\"isPartOf\":{\"@id\":\"https://docs.fomoscan.sh#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.fomoscan.sh/api-reference/identities/resolve-a-fomo-handle-to-the-user-and-their-verified-wallet\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pump\",\"item\":\"https://docs.fomoscan.sh/api-reference/pump/a-pumpfun-user-by-wallet\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"One pump.fun wallet's realized and unrealized profit\",\"item\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit#apireference\",\"headline\":\"One pump.fun wallet's realized and unrealized profit\",\"name\":\"One pump.fun wallet's realized and unrealized profit\",\"description\":\"Profit and trading activity across the whole wallet, on the same formula as GET /v2/user/handle/{handle}/pnl. - 24h, 7d, 30d and all each carry realizedPnlUsd, unrealizedPnlUsd and totalPnlUsd. all covers every trade since 1 January 2025. - unrealized: profit on what the wallet holds now. It leaves out spam, pools under $10,000 of liquidity and positions larger than their pool. - pumpBoard: the standing pump.fun itself shows on its PnL boards, for reference. - The first call for a wallet reads it live, up to 8 seconds. A window that does not finish in time comes back pending and is ready on the next call. - Only a ready answer is charged the hit price; every other answer is charged the miss price. - 404 when the wallet has no pump.fun user. Price: 500 CU per call.\",\"url\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fomoscan.sh/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit#webpage\"},\"dateModified\":\"2026-10-26T10:45:36.029Z\",\"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"}]},"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/api-reference/introduction"},{"title":"Identity and PnL","href":"/api/identity"},{"title":"Theses and pump.fun","href":"/api/theses"}]},{"group":"Endpoints","pages":[{"group":"Identities","pages":[{"title":"Resolve a FOMO handle to the user and their verified wallet","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/user/handle/{handle}","href":"/api-reference/identities/resolve-a-fomo-handle-to-the-user-and-their-verified-wallet"},{"title":"Resolve a wallet address to the user(s) behind it","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/user/wallet/{address}","href":"/api-reference/identities/resolve-a-wallet-address-to-the-users-behind-it"},{"title":"Resolve a FOMO user id to the user and their verified wallet","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/user/id/{id}","href":"/api-reference/identities/resolve-a-fomo-user-id-to-the-user-and-their-verified-wallet"},{"title":"Resolve a handle to its wallets (temporarily unavailable)","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json post /v2/user/handle/{handle}/resolve","href":"/api-reference/identities/resolve-a-handle-to-its-wallets-temporarily-unavailable"},{"title":"One trader's realized and unrealized profit across their whole wallet","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/user/handle/{handle}/pnl","href":"/api-reference/identities/one-traders-realized-and-unrealized-profit-across-their-whole-wallet"},{"title":"Whole-wallet profit for up to 100 traders in one call","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json post /v2/user/handles/pnl","href":"/api-reference/identities/whole-wallet-profit-for-up-to-100-traders-in-one-call"}]},{"group":"Thesis Feed","pages":[{"title":"Every thesis, newest first — the unfiltered feed","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/thesis","href":"/api-reference/thesis-feed/every-thesis-newest-first-—-the-unfiltered-feed"},{"title":"Theses for a token, newest first, ask on a timer for a live feed","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/thesis/token/{tokenAddress}","href":"/api-reference/thesis-feed/theses-for-a-token-newest-first-ask-on-a-timer-for-a-live-feed"},{"title":"Theses by a user, newest first, ask on a timer for their feed","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/thesis/user/{id}","href":"/api-reference/thesis-feed/theses-by-a-user-newest-first-ask-on-a-timer-for-their-feed"},{"title":"Theses by a user about one token","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/thesis/user/{id}/token/{tokenAddress}","href":"/api-reference/thesis-feed/theses-by-a-user-about-one-token"}]},{"group":"Account","pages":[{"title":"Introspect the calling API key","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/me","href":"/api-reference/account/introspect-the-calling-api-key"}]},{"group":"Pump","pages":[{"title":"A pump.fun user by wallet","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/user/wallet/{wallet}","href":"/api-reference/pump/a-pumpfun-user-by-wallet"},{"title":"Every pump.fun callout, newest first","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/thesis","href":"/api-reference/pump/every-pumpfun-callout-newest-first"},{"title":"A coin's callout wall, newest first","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/thesis/token/{mint}","href":"/api-reference/pump/a-coins-callout-wall-newest-first"},{"title":"A wallet's callouts, newest first","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/thesis/wallet/{wallet}","href":"/api-reference/pump/a-wallets-callouts-newest-first"},{"title":"The pump.fun PnL leaderboard","description":"pump.fun's top 100 traders by realized+unrealized PnL, as a snapshot.\n\n- `period` is `daily`, `weekly` (default) or `monthly`.\n- `capturedAt` is the time of the snapshot.\n- **Point-in-time:** `?at=` (epoch ms or ISO) returns the latest snapshot at or\n before that instant.\n\n**Price:** 10 CU per call.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/leaderboard/traders","href":"/api-reference/pump/the-pumpfun-pnl-leaderboard"},{"title":"One pump.fun wallet's realized and unrealized profit","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/pump/user/wallet/{wallet}/pnl","href":"/api-reference/pump/one-pumpfun-wallets-realized-and-unrealized-profit"}]},{"group":"WebSocket","pages":[{"title":"Live theses, every token or a token list (WebSocket)","description":"The live thesis feed. pump.fun callouts have their own socket at\n`/v2/ws/pump`, described below. Attach\nonce, then declare what you want, every token or a list of tokens, and\nchange it at any time without reconnecting.\n\n**This path is an upgrade, not a request.** A plain `GET` returns `404`;\nonly a request carrying the WebSocket handshake headers is served.\n\n**The key cannot come from a browser.** Authentication is the same\n`authorization: Bearer \u003ckey>` header as every other endpoint, and the\nbrowser `WebSocket` constructor cannot set headers. Hold the socket in your\nbackend and relay to your front end from there.\n\n**The socket is included from Growth ($899).** Growth, Scale and Enterprise\ncan connect. Keys on legacy plans keep the websocket access they already\nhave. Self-serve free keys, Starter and Builder are refused during the\nhandshake with `403 WEBSOCKET_PLAN_REQUIRED`.\n\nA key that lacks the scope for this path is refused during the handshake\nwith a `403`, before the upgrade, so you read it as an HTTP status rather\nthan a dropped socket.\n\n### Subscribing\n\nA connection holds **one** subscription. It is one of two shapes:\n\n```json\n{ \"type\": \"subscribe\", \"subscription\": { \"type\": \"all\" } }\n{ \"type\": \"subscribe\", \"subscription\": { \"type\": \"tokens\", \"tokens\": [\"So1111…\", \"0xabc…\"] } }\n```\n\nA `subscribe` **replaces** whatever you had before — it does not add to it.\nTo change your watchlist, send the new list in full. To stop receiving:\n\n```json\n{ \"type\": \"unsubscribe\" }\n```\n\nThat is the one thing here likely to catch you out, so we say it out loud\non the wire too — see the `replaced` frame below.\n\nYou attach unsubscribed and receive nothing until you ask. A `tokens`\nsubscription may name up to **50** addresses. Past that, use `all`: it is\none subscription and it already carries every token.\n\n### Frames you receive\n\nOn attach:\n\n```json\n{ \"type\": \"ready\", \"connectionId\": \"4f9c…\" }\n```\n\nAfter every accepted frame, your current subscription — the whole of it, so\nthere is nothing to reconcile (`null` once you unsubscribe):\n\n```json\n{ \"type\": \"subscription\", \"subscription\": { \"type\": \"tokens\", \"tokens\": [\"So1111…\"] } }\n```\n\nAnd, when a `subscribe` tore down an earlier subscription, one frame ahead\nof it saying what stopped:\n\n```json\n{ \"type\": \"replaced\", \"previous\": { \"type\": \"tokens\", \"tokens\": [\"EPjF…\"] } }\n```\n\nThe two always arrive in that order, so a client applying frames as they\nland never ends up holding the dead subscription. A rejected `subscribe`\nproduces neither — nothing was torn down.\n\nThen one frame per matching thesis:\n\n```json\n{ \"type\": \"thesis\", \"data\": { \"id\": \"…\", \"tokenAddress\": \"…\", \"tokenNetwork\": \"sol\", … } }\n```\n\n`data` is the **same object** `GET /v2/thesis/token/{tokenAddress}` returns\nin `items` — same field names (including `authorAvatarUrl` and\n`tokenImageUrl`), same `id`, same epoch-millisecond timestamps. It is not a\nsecond shape to code against. Read `data.tokenAddress` to route a frame back\nto its token.\n\n`authorAvatarUrl` points at our image host, at a path of the form\n`/a/\u003ckey>.webp`. A new picture gets a new URL. A picture added in the last\nfew minutes can show a neutral placeholder until it is ready.\n\n### The pump feed\n\npump.fun callouts are on `wss://api.fomoscan.sh/v2/ws/pump`. Same\nhandshake, same plan rule, same subscribe messages and the same\nper-minute price as this path. The path picks the feed, so the messages\nare identical:\n\n```json\n{ \"type\": \"subscribe\", \"subscription\": { \"type\": \"all\" } }\n{ \"type\": \"subscribe\", \"subscription\": { \"type\": \"tokens\", \"tokens\": [\"So1111…\"] } }\n```\n\nTo receive theses and callouts at once, open one socket on each path. Each\nsocket is metered on its own.\n\nA subscription on `/v2/ws/pump` receives one frame per new callout:\n\n```json\n{ \"type\": \"pump_callout\", \"callout\": { \"id\": \"…\", \"wallet\": \"…\", \"coinMint\": \"…\", \"thesis\": \"…\", \"createdAt\": … } }\n```\n\n`callout` is the **same object** `GET /v2/pump/thesis` returns in `items` —\nsame field names, same `id`, same epoch-millisecond `createdAt`. Read\n`callout.coinMint` to route a frame back to its token.\n\nThere is no replay on this feed either. Take a snapshot from\n`GET /v2/pump/thesis` and reconcile on `callout.id`, the same `id` that\nendpoint returns. A callout is sent once per socket, and only while it is\nrecent. Anything older is on `GET /v2/pump/thesis`.\n\nA rejected frame is answered, does not close the socket, and does **not**\nchange what you are subscribed to — so a typo costs you nothing:\n\n```json\n{ \"type\": \"error\", \"error\": \"too many addresses: 91 named, 50 is the cap; subscribe to \\\"all\\\" to receive every token\" }\n```\n\n### What you have to know before you build on it\n\n- **There is no replay.** You hear what arrives after you subscribe,\n nothing before it. Take a snapshot from the REST endpoint\n (`GET /v2/thesis/token/{tokenAddress}`, or `GET /v2/pump/thesis` on the\n pump socket) and reconcile on `id`, which is stable and is the same id\n the REST endpoint returns. If the socket drops, fetch the newest page\n from the REST endpoint to close the gap, then reattach and resubscribe.\n- **Subscriptions do not survive a reconnect.** A new socket starts empty.\n- **A thesis is sent once.** It is never re-sent on the same socket.\n- **The socket carries recent theses.** Anything outside that window is on\n the REST endpoint instead.\n- **Frames are not ordered by `fomoCreatedAt`.** Sort client-side if order\n matters.\n- **`null` means the value was not observed.** An absent `likeCount` is not\n a zero.\n- **The pong is mandatory.** The server pings on a fixed interval and\n closes with `1011` a socket it has not heard from for three ping\n intervals. A pong or any frame you send counts. Browser and Node `ws` clients\n answer pings automatically; a hand-rolled client must reply itself. A\n socket killed mid-path by a proxy stays open and silent at both ends,\n and the pong is the only thing that detects it.\n\nBefore initial billing completes, the server queues at most 32 frames or 64 KiB\nof application frames. Exceeding either limit sends an error frame with\n`initialization queue limit exceeded` and closes with `1009`. A single frame\nlarger than 64 KiB also closes with `1009`.\n\n### Close codes\n\n| code | meaning |\n|---|---|\n| `1001` | the server is going away; reconnect and resubscribe |\n| `1008` | the key is out of quota |\n| `1009` | a frame exceeds 64 KiB or the initialization queue exceeds its limits |\n| `1011` | no pong or frame from you for three ping intervals |\n| `1013` | frames are queueing faster than you read them |\n\n### Billing\n\nThis path is metered by the minute held open rather than by the call, from\nthe same credits as your REST calls. A minute starts when the socket opens,\nand the meter stops when it closes. See `GET /v2/me` for your remaining\nbalance.\n\nThe price is **per socket, not per token**: one address, fifty, or every\ntoken all read the same on the meter.\n\n**Price:** 20,000 CU per minute held open.","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/ws","href":"/api-reference/websocket/live-theses-every-token-or-a-token-list-websocket"},{"title":"Live pump.fun callouts, every token or a token list (WebSocket)","deprecated":null,"version":null,"openapi":"https://api.fomoscan.sh/openapi.json get /v2/ws/pump","href":"/api-reference/websocket/live-pumpfun-callouts-every-token-or-a-token-list-websocket"}]}]}]},{"tab":"WebSockets","pages":[{"title":"WebSockets","href":"/websockets/overview"}]},{"tab":"Examples","pages":[{"title":"Examples","href":"/examples/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"One pump.fun wallet's realized and unrealized profit - FomoScan","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}