{"record":{"id":"238254432a7ebda2","repo":"DIYgod/RSSHub","slug":"this-profile-or-page-does-not-exist","errorCode":null,"errorMessage":"This profile or page does not exist.","messagePattern":"This profile or page does not exist\\.","errorType":"validation","errorClass":"InvalidParameterError","httpStatus":null,"severity":"error","filePath":"lib/routes/fansly/utils.tsx","lineNumber":29,"sourceCode":"const findAccountById = (accountId, accounts) => {\n    const account = accounts.find((account) => account.id === accountId);\n    return {\n        displayName: account.displayName,\n        username: account.username,\n    };\n};\n\nconst getAccountByUsername = (username) =>\n    cache.tryGet(`fansly:account:${username.toLowerCase()}`, async () => {\n        const { data: accountResponse } = await got(`${apiBaseUrl}/api/v1/account`, {\n            searchParams: {\n                usernames: username,\n                'ngsw-bypass': true,\n            },\n        });\n\n        if (!accountResponse.response.length) {\n            throw new InvalidParameterError('This profile or page does not exist.');\n        }\n\n        return accountResponse.response[0];\n    });\n\nconst getTimelineByAccountId = async (accountId) => {\n    const { data: timeline } = await got(`${apiBaseUrl}/api/v1/timelinenew/${accountId}`, {\n        searchParams: {\n            before: 0,\n            after: 0,\n            wallId: '',\n            contentSearch: '',\n            'ngsw-bypass': true,\n        },\n    });\n\n    return timeline.response;\n};","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/fansly/utils.tsx#L11-L47","documentation":"getAccountByUsername queries the Fansly `/account` endpoint with the supplied username and caches the result under `fansly:account:<username>`. If the response array is empty the handler throws InvalidParameterError. Because the negative result is cached, a later retry with the corrected name works, but a typo can be masked until the cache entry expires.","triggerScenarios":"`/fansly/user/<username>` where the username has no Fansly account; the account was deleted or renamed.","commonSituations":"Typo in the username; the creator renamed their account; a stale cached 'not found' result.","solutions":["Verify the exact username on fansly.com.","If you previously tried a wrong name, remember the negative lookup is cached — wait for expiry or clear the `fansly:account:<wrong>` cache key.","Use the account's current display URL as the source of truth for the slug."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"async function fanslyUserExists(username: string): Promise<boolean> {\n  const { data } = await got(`${apiBaseUrl}/api/v1/account`, { searchParams: { usernames: username, 'ngsw-bypass': true } });\n  return data.response.length > 0;\n}","typeGuard":null,"tryCatchPattern":"try {\n  await getAccountByUsername(username);\n} catch (e) {\n  // clear the cached negative lookup before retrying with a corrected name\n  cache.tryGet(`fansly:account:${username.toLowerCase()}`, async () => { throw e; });\n}","preventionTips":["Remember the negative result is cached — clear the key when correcting a typo.","Validate the username against the live fansly.com profile URL before subscribing."],"tags":["validation","not-found","cache"],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}