{"openapi":"3.1.0","info":{"title":"FomoScan","description":"Resolve FOMO trader handles to verified Solana and EVM wallets, and the other way. Thesis feeds by token or author.","version":"1.0.0","x-guidance":"GET /v2/user/handle/{handle} ($0.10) — handle to verified wallets.\nGET /v2/user/wallet/{address} ($2.00) — wallet to trader. EVM addresses must be 0x-prefixed.\nGET /v2/user/id/{id} ($0.10) — stable FOMO user id.\nGET /v2/thesis ($0.01) — unfiltered thesis feed, newest first. Optional ?before= thesis id.\nGET /v2/thesis/token/{tokenAddress} ($0.01) — theses for one token.\nGET /v2/thesis/user/{id} ($0.01) — theses by one author.\nGET /v2/thesis/user/{id}/token/{tokenAddress} ($0.01) — one author about one token.\n\nSolana x402 only. Pay every call. 200 settles; 404/429/5xx do not. Dedupe thesis items on id. Store user id, not handle."},"servers":[{"url":"https://fomoscan-x402.vercel.app"}],"tags":[{"name":"V2"}],"paths":{"/v2/user/handle/{handle}":{"get":{"operationId":"v2_user_handle_{handle}","summary":"Resolve a FOMO trader by public handle (the @name on FOMO, without @). Use when you have a handle and not a stored user id. Returns id, handle, name, bio, and verified solanaAddress/evmAddress. Persist id — handles can change. Do not pass a wallet or numeric id.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"solanaAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"evmAddress":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","handle","name","bio","banner","profilePicture","twitter","solanaAddress","evmAddress"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/v2/user/wallet/{address}":{"get":{"operationId":"v2_user_wallet_{address}","summary":"Resolve a FOMO trader by verified Solana or 0x-prefixed EVM wallet. Use only when you have an on-chain address and neither handle nor user id — $2.00 vs $0.10 for those. Same User profile. EVM addresses must include 0x.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.20"},"protocols":[{"x402":{}}]},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"solanaAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"evmAddress":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","handle","name","bio","banner","profilePicture","twitter","solanaAddress","evmAddress"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/v2/user/id/{id}":{"get":{"operationId":"v2_user_id_{id}","summary":"Resolve a FOMO trader by stable user id (User.id or thesis authorId from a prior call). Prefer this once you have stored an id — cheaper and stable vs handle. Returns the current profile including wallets. Do not pass a handle or wallet.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"profilePicture":{"anyOf":[{"type":"string"},{"type":"null"}]},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"solanaAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"evmAddress":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","handle","name","bio","banner","profilePicture","twitter","solanaAddress","evmAddress"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/v2/thesis":{"get":{"operationId":"v2_thesis","summary":"Newest-first global feed of FOMO theses (short trade write-ups: token, author, PnL, holdings). Use only when you have no token or author filter. Page with ?before= from nextBefore; stop when hasMore is false. Dedupe items on id. Prefer the token/user-scoped routes when you know those.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"before","schema":{"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true.","type":"string"},"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"hasMore":{"type":"boolean"},"nextBefore":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"authorHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}]},"fomoCreatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenNetwork":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenSymbol":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorIsDev":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"segments":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["text","link","provider"],"additionalProperties":false}},{"type":"null"}]},"likeCount":{"anyOf":[{"type":"number"},{"type":"null"}]},"holdingsUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"authorTradeUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"pnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"realizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"unrealizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageRealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageUnrealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"closedAt":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","authorHandle","thesis","fomoCreatedAt","tokenAddress","tokenNetwork","tokenSymbol","authorId","authorName","authorIsDev","segments","likeCount","holdingsUsd","authorTradeUsd","pnl","realizedPnlUsd","unrealizedPnlUsd","percentageRealizedPnl","percentageUnrealizedPnl","tokenAmount","closedAt"],"additionalProperties":false}}},"required":["count","hasMore","nextBefore","updatedAt","items"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/v2/thesis/token/{tokenAddress}":{"get":{"operationId":"v2_thesis_token_{tokenAddress}","summary":"Theses about one token (mint or 0x contract), newest first — what traders are saying plus their PnL/holdings on that token. Use when you have a token address. Page with ?before= from nextBefore. Do not pass a user id or handle as tokenAddress.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"before","schema":{"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true.","type":"string"},"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"hasMore":{"type":"boolean"},"nextBefore":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"authorHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}]},"fomoCreatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenNetwork":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenSymbol":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorIsDev":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"segments":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["text","link","provider"],"additionalProperties":false}},{"type":"null"}]},"likeCount":{"anyOf":[{"type":"number"},{"type":"null"}]},"holdingsUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"authorTradeUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"pnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"realizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"unrealizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageRealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageUnrealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"closedAt":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","authorHandle","thesis","fomoCreatedAt","tokenAddress","tokenNetwork","tokenSymbol","authorId","authorName","authorIsDev","segments","likeCount","holdingsUsd","authorTradeUsd","pnl","realizedPnlUsd","unrealizedPnlUsd","percentageRealizedPnl","percentageUnrealizedPnl","tokenAmount","closedAt"],"additionalProperties":false}},"tokenAddress":{"type":"string"},"tokenNetwork":{"anyOf":[{"type":"string"},{"type":"null"}]},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["count","hasMore","nextBefore","updatedAt","items","tokenAddress","tokenNetwork","symbol"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/v2/thesis/user/{id}":{"get":{"operationId":"v2_thesis_user_{id}","summary":"Theses written by one FOMO trader, newest first. {id} is the stable user id (User.id / authorId), not a handle — resolve handle→id first if needed. Page with ?before= from nextBefore. Use the /token/{tokenAddress} sibling when you also know the token.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"before","schema":{"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true.","type":"string"},"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"hasMore":{"type":"boolean"},"nextBefore":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"authorHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}]},"fomoCreatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenNetwork":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenSymbol":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorIsDev":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"segments":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["text","link","provider"],"additionalProperties":false}},{"type":"null"}]},"likeCount":{"anyOf":[{"type":"number"},{"type":"null"}]},"holdingsUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"authorTradeUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"pnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"realizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"unrealizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageRealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageUnrealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"closedAt":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","authorHandle","thesis","fomoCreatedAt","tokenAddress","tokenNetwork","tokenSymbol","authorId","authorName","authorIsDev","segments","likeCount","holdingsUsd","authorTradeUsd","pnl","realizedPnlUsd","unrealizedPnlUsd","percentageRealizedPnl","percentageUnrealizedPnl","tokenAmount","closedAt"],"additionalProperties":false}},"userId":{"type":"string"},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["count","hasMore","nextBefore","updatedAt","items","userId","tokenAddress"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}},"/v2/thesis/user/{id}/token/{tokenAddress}":{"get":{"operationId":"v2_thesis_user_{id}_token_{tokenAddress}","summary":"Theses by one trader about one token. Use when you have both a stable user id and a token address — more targeted than listing all of a user's theses. {id} is user id, not handle. Page with ?before= from nextBefore.","tags":["V2"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"before","schema":{"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true.","type":"string"},"description":"Thesis id cursor from the previous page's nextBefore. Omit for the newest page. Pass nextBefore as-is while hasMore is true."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"hasMore":{"type":"boolean"},"nextBefore":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"authorHandle":{"anyOf":[{"type":"string"},{"type":"null"}]},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}]},"fomoCreatedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenNetwork":{"anyOf":[{"type":"string"},{"type":"null"}]},"tokenSymbol":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}]},"authorIsDev":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"segments":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["text","link","provider"],"additionalProperties":false}},{"type":"null"}]},"likeCount":{"anyOf":[{"type":"number"},{"type":"null"}]},"holdingsUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"authorTradeUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"pnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"realizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"unrealizedPnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageRealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"percentageUnrealizedPnl":{"anyOf":[{"type":"number"},{"type":"null"}]},"tokenAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"closedAt":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","authorHandle","thesis","fomoCreatedAt","tokenAddress","tokenNetwork","tokenSymbol","authorId","authorName","authorIsDev","segments","likeCount","holdingsUsd","authorTradeUsd","pnl","realizedPnlUsd","unrealizedPnlUsd","percentageRealizedPnl","percentageUnrealizedPnl","tokenAmount","closedAt"],"additionalProperties":false}},"userId":{"type":"string"},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["count","hasMore","nextBefore","updatedAt","items","userId","tokenAddress"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}}}}}}