Once a pump.fun coin’s fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without strategy. A build that carried strategy doesn’t need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. config is the short form or the full config. registered: false with a feeWallet means the fees aren’t routed yet, or the chain hasn’t shown us the routing yet. Wait a few seconds and call again.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"PURPS API","description":"Everything purps.lol can do, as JSON. No signup, no API key from us.","colors":{"primary":"#3A49B8","light":"#4757CC","dark":"#3A49B8"},"logo":{"light":"https://mintcdn.com/purp/-N_uFz0qN2utvXEe/logo/light.svg?fit=max\u0026auto=format\u0026n=-N_uFz0qN2utvXEe\u0026q=85\u0026s=75b29cbe72c25a0015688d26e165660b","dark":"https://mintcdn.com/purp/-N_uFz0qN2utvXEe/logo/dark.svg?fit=max\u0026auto=format\u0026n=-N_uFz0qN2utvXEe\u0026q=85\u0026s=bf404567f1e242313ac8c8b92904f8ab","href":"https://purps.lol"},"favicon":"https://mintcdn.com/purp/TSg6G_rOooQDaevZ/favicon.svg?fit=max\u0026auto=format\u0026n=TSg6G_rOooQDaevZ\u0026q=85\u0026s=3e1ffbc5f4caf4e680241a0b97c77bc2","appearance":{"default":"dark","strict":false},"background":{"color":{"light":"#F2F1EF","dark":"#0E0F1A"}},"navbar":{"links":[{"href":"https://purps.lol","label":"purps.lol"}],"primary":{"type":"button","label":"Create a coin","href":"https://purps.lol/create"}},"footer":{"socials":{"x":"https://x.com/buypurps","telegram":"https://t.me/buypurps"}},"fonts":{"family":"Geist"},"icons":{"library":"lucide"},"styling":{"codeblocks":"system","latex":false},"navigation":{"global":{"anchors":[{"anchor":"purps.lol","icon":"globe","href":"https://purps.lol"},{"anchor":"llms.txt","icon":"bot","href":"https://purps.lol/llms.txt"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"purp","hasAudioNarration":false,"actualSubdomain":"purp","customDomains":["docs.purps.lol"],"gitSource":{"type":"github","owner":"will8bit","repo":"purps-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aba67e46006b83dea4c4805","collectionId":"a1c695a6-e009-488d-aa78-0fc4b9cab646","liveDeploymentHistoryId":"6aba67e46006b83dea4c4805","schemaVersion":"v3"},"entitlements":{},"buildId":"6aba67e46006b83dea4c4805","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API reference","count":28},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Launch on Pons","count":6},{"language":"default","tag":"Coins","count":5},{"language":"default","tag":"Start here","count":4},{"language":"default","tag":"Launch","count":4},{"language":"default","tag":"Creator authority","count":4},{"language":"default","tag":"Launch on pump.fun","count":4},{"language":"default","tag":"Before you launch","count":3},{"language":"default","tag":"After launch","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/redirect-a-pumpfun-coin/register-the-strategy","slug":"/api-reference/redirect-a-pumpfun-coin/register-the-strategy","pageMetadata":{"title":"Register the strategy","description":"Once a pump.fun coin's fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without `strategy`. A build that carried `strategy` doesn't need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. `config` is the short form or the full config. `registered: false` with a `feeWallet` means the fees aren't routed yet, or the chain hasn't shown us the routing yet. Wait a few seconds and call again.","deprecated":null,"version":null,"openapi":"/openapi.json post /redirects","href":"/api-reference/redirect-a-pumpfun-coin/register-the-strategy","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Once a pump.fun coin’s fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without \", _jsx(_components.code, {\n children: \"strategy\"\n }), \". A build that carried \", _jsx(_components.code, {\n children: \"strategy\"\n }), \" doesn’t need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. \", _jsx(_components.code, {\n children: \"config\"\n }), \" is the short form or the full config. \", _jsx(_components.code, {\n children: \"registered: false\"\n }), \" with a \", _jsx(_components.code, {\n children: \"feeWallet\"\n }), \" means the fees aren’t routed yet, or the chain hasn’t shown us the routing yet. Wait a few seconds and call again.\"]\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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Register the strategy","description":"Once a pump.fun coin's fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without `strategy`. A build that carried `strategy` doesn't need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. `config` is the short form or the full config. `registered: false` with a `feeWallet` means the fees aren't routed yet, or the chain hasn't shown us the routing yet. Wait a few seconds and call again.","deprecated":null,"version":null,"openapi":"/openapi.json post /redirects","href":"/api-reference/redirect-a-pumpfun-coin/register-the-strategy","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Redirect a pump.fun coin"],"operationId":"submitRedirect","summary":"Register the strategy","description":"Once a pump.fun coin's fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without `strategy`. A build that carried `strategy` doesn't need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. `config` is the short form or the full config. `registered: false` with a `feeWallet` means the fees aren't routed yet, or the chain hasn't shown us the routing yet. Wait a few seconds and call again.","requestBody":"dd443a39-09b7-4d6d-872f-b2536d4f3796","x-rate-limit":"10 a minute","x-cache":"none","x-flow":"redirect","x-example":"/redirects","responses":{"200":"a7ccdc87-ecea-4a67-969b-234b9d3307b3","400":"5aa5053f-31d9-4b48-b8dd-4cfea532be4b","403":"52bc12e1-8946-49a9-ad88-e006c2a4c9d3","404":"ec435f62-82fe-4562-84fd-ad87573c92bc","409":"c46d81f8-5a55-4668-89c2-607ba41dba50","422":"d09070fe-bb52-4733-860d-a121784a7230","429":"90042484-98e8-4dbe-815c-a03667a95f21","503":"d6cc3233-28df-4c09-adcf-ca35f6f7aa15"},"method":"post","type":"path","servers":["4d1e1a5c-b518-42e8-8ec2-fdd7d18e0027"],"security":[],"path":"/redirects","baseUrlOptions":["https://purps.lol/api/v2"],"title":"Register the strategy","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mint":{"type":"string","description":"The pump.fun coin.","required":true,"uniqueKey":"mint","typeLabel":"string"},"config":{"oneOf":[{"type":"object","description":"The strategy to run: the short form (`{ preset, markets }`) or the full config.","required":true,"properties":{"preset":{"type":"string","description":"`steady`, `balanced` or `degen` set the fee split, the take-profit and dip-buy rules and each leg's reserve mode (none for `degen`, defensive otherwise), exactly as /launch-options lists them. `airdrop` is the coin with no perps: every fee goes to the buyback and is paid to holders.","enum":["steady","balanced","degen","airdrop"],"required":true,"uniqueKey":"config.oneOf.0.preset","typeLabel":"enum\u003cstring>"},"markets":{"type":"array","items":{"type":"string","uniqueKey":"config.oneOf.0.markets.items.[INDEX]","typeLabel":"string"},"description":"The simplest form: market names from /markets, up to 10, each once. Every leg is long at 2x with the weight split evenly. For a short, or a different leverage, send `legs` instead of this; for uneven weights, your own fee split or a take-profit, send the full Strategy. The `airdrop` preset takes neither.","uniqueKey":"config.oneOf.0.markets","typeLabel":"string[]"},"legs":{"type":"array","items":{"type":"object","uniqueKey":"config.oneOf.0.legs.items.[INDEX]","typeLabel":"object"},"description":"Instead of `markets`, to set a side or a leverage per market: `[{ market, direction?, leverage? }]`. `direction` is `long` (default) or `short`; `leverage` a whole number from 1 to 100 (default 2), within the market's cap on /markets. Leave a field out to take its default. Weights are still split evenly; for uneven weights send the full Strategy.","uniqueKey":"config.oneOf.0.legs","typeLabel":"object[]"},"rewardMode":{"type":"string","description":"What profits do: `burn` (the default), `holders` pays the coin itself, `backed` pays `payoutMint`. Defaults to `backed` when `payoutMint` is given. The `airdrop` preset is `holders`, or `backed` with a `payoutMint`; it cannot burn.","enum":["burn","holders","backed"],"uniqueKey":"config.oneOf.0.rewardMode","typeLabel":"enum\u003cstring>"},"payoutMint":{"oneOf":[{"type":"string","description":"The asset holders are paid in, for `backed`; the same rules as the full form's `payoutMint`. Naming it makes the mode `backed` unless `rewardMode` says otherwise.","uniqueKey":"config.oneOf.0.payoutMint.oneOf.0","typeLabel":"string"},{"type":"null","description":"The asset holders are paid in, for `backed`; the same rules as the full form's `payoutMint`. Naming it makes the mode `backed` unless `rewardMode` says otherwise.","uniqueKey":"config.oneOf.0.payoutMint.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.payoutMint","typeLabel":"string | null"},"payoutMintsExtra":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"config.oneOf.0.payoutMintsExtra.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Up to four more payout assets for a paying coin, as in the full form.","uniqueKey":"config.oneOf.0.payoutMintsExtra.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Up to four more payout assets for a paying coin, as in the full form.","uniqueKey":"config.oneOf.0.payoutMintsExtra.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.payoutMintsExtra","typeLabel":"string[] | null"},"ownerControls":{"type":"boolean","description":"Creator authority from launch, as in the full form.","uniqueKey":"config.oneOf.0.ownerControls","typeLabel":"boolean"}},"uniqueKey":"config.oneOf.0","typeLabel":"object"},{"type":"object","description":"The strategy to run: the short form (`{ preset, markets }`) or the full config.","required":true,"properties":{"splitBuybackBps":{"type":"integer","description":"Share of each fee that buys the coin back.","required":true,"uniqueKey":"config.oneOf.1.splitBuybackBps","typeLabel":"integer"},"splitMarginBps":{"type":"integer","description":"Share sent to the perp exchange as margin.","required":true,"uniqueKey":"config.oneOf.1.splitMarginBps","typeLabel":"integer"},"splitReserveBps":{"type":"integer","description":"Share kept as a reserve that backs the positions.","required":true,"uniqueKey":"config.oneOf.1.splitReserveBps","typeLabel":"integer"},"perpLegs":{"type":"array","description":"The positions to hold: `{ market, direction, leverage, weightBps, reserveMode }`. `market` from /markets, `leverage` a whole number within its cap, weights summing to 10000, `reserveMode` `defensive` or `none` (use the preset's `legReserveMode`); optional `takeProfitPct` and `stopLossPct` (percent, shown in the signed words when set) and `reserveTranches`. Empty means no perps, in which case margin and reserve must be 0.","items":{"type":"object","uniqueKey":"config.oneOf.1.perpLegs.items.[INDEX]","typeLabel":"object"},"required":true,"uniqueKey":"config.oneOf.1.perpLegs","typeLabel":"object[]"},"rewardMode":{"type":"string","description":"What profits do: `burn` (default), `holders` pays the coin itself, `backed` pays `payoutMint`. Paying coins need `holderPayoutsEnabled` in /launch-options.","enum":["burn","holders","backed"],"uniqueKey":"config.oneOf.1.rewardMode","typeLabel":"enum\u003cstring>"},"payoutMint":{"oneOf":[{"type":"string","description":"`backed` only: the asset holders are paid in. On Solana, a mint from /launch-options `payoutAssets` or any Solana mint with a real market. On Robinhood Chain, a `0x` token address that passes the depth check: one of the launchpad's `payoutAssets`, or any token /pons/assets/{address} reports as payable. ETH itself cannot be a payout asset there.","uniqueKey":"config.oneOf.1.payoutMint.oneOf.0","typeLabel":"string"},{"type":"null","description":"`backed` only: the asset holders are paid in. On Solana, a mint from /launch-options `payoutAssets` or any Solana mint with a real market. On Robinhood Chain, a `0x` token address that passes the depth check: one of the launchpad's `payoutAssets`, or any token /pons/assets/{address} reports as payable. ETH itself cannot be a payout asset there.","uniqueKey":"config.oneOf.1.payoutMint.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.1.payoutMint","typeLabel":"string | null"},"payoutMintsExtra":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"config.oneOf.1.payoutMintsExtra.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Further payout assets for any paying coin, up to four beyond the first; every buyback splits evenly across all of them and holders receive each. Same rules per asset as `payoutMint`.","uniqueKey":"config.oneOf.1.payoutMintsExtra.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Further payout assets for any paying coin, up to four beyond the first; every buyback splits evenly across all of them and holders receive each. Same rules per asset as `payoutMint`.","uniqueKey":"config.oneOf.1.payoutMintsExtra.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.1.payoutMintsExtra","typeLabel":"string[] | null"},"payoutMint2":{"oneOf":[{"type":"string","description":"Older form of `payoutMintsExtra` with one asset; still accepted.","uniqueKey":"config.oneOf.1.payoutMint2.oneOf.0","typeLabel":"string"},{"type":"null","description":"Older form of `payoutMintsExtra` with one asset; still accepted.","uniqueKey":"config.oneOf.1.payoutMint2.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.1.payoutMint2","typeLabel":"string | null"},"strategy":{"oneOf":[{"type":"object","description":"The trading rules: `{ preset, tpTriggerPct, tpSlicePct, rungCount, rungMode }`. Take a preset's `config.strategy` from /launch-options, or set your own.","uniqueKey":"config.oneOf.1.strategy.oneOf.0","typeLabel":"object"},{"type":"null","description":"The trading rules: `{ preset, tpTriggerPct, tpSlicePct, rungCount, rungMode }`. Take a preset's `config.strategy` from /launch-options, or set your own.","uniqueKey":"config.oneOf.1.strategy.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.1.strategy","typeLabel":"object | null"},"ownerControls":{"type":"boolean","description":"Creator authority from launch: the creator can steer the coin from its page or through /coins/{mint}/authority, every move signed and shown to holders. Off unless set; honoured only while the platform has creator authority open (see `openToPublic` on /coins/{mint}/authority). It is part of the signed words when set.","uniqueKey":"config.oneOf.1.ownerControls","typeLabel":"boolean"}},"uniqueKey":"config.oneOf.1","typeLabel":"object"}],"uniqueKey":"config","typeLabel":"object"},"name":{"type":"string","description":"Fallback name if the chain has none.","uniqueKey":"name","typeLabel":"string"},"symbol":{"type":"string","description":"Fallback ticker if the chain has none.","uniqueKey":"symbol","typeLabel":"string"},"imageUrl":{"type":"string","description":"Fallback logo if the chain has none: an http(s) link.","uniqueKey":"imageUrl","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"mint":"\u003cstring>","config":{"markets":["\u003cstring>"],"legs":[{}],"payoutMint":"\u003cstring>","payoutMintsExtra":["\u003cstring>"],"ownerControls":true},"name":"\u003cstring>","symbol":"\u003cstring>","imageUrl":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"a7ccdc87-ecea-4a67-969b-234b9d3307b3":{"description":"Registered, or what is missing.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true],"uniqueKey":"ok","typeLabel":"enum\u003cboolean>"},"data":{"type":"object","properties":{"registered":{"type":"boolean","description":"True once the strategy is attached.","uniqueKey":"data.registered","typeLabel":"boolean"},"mint":{"type":"string","description":"The coin.","uniqueKey":"data.mint","typeLabel":"string"},"symbol":{"oneOf":[{"type":"string","description":"Its ticker.","uniqueKey":"data.symbol.oneOf.0","typeLabel":"string"},{"type":"null","description":"Its ticker.","uniqueKey":"data.symbol.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.symbol","typeLabel":"string | null"},"url":{"type":"string","description":"Its page.","uniqueKey":"data.url","typeLabel":"string"},"feeWallet":{"oneOf":[{"type":"string","description":"When not registered: where the fees must go first.","uniqueKey":"data.feeWallet.oneOf.0","typeLabel":"string"},{"type":"null","description":"When not registered: where the fees must go first.","uniqueKey":"data.feeWallet.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.feeWallet","typeLabel":"string | null"},"creator":{"oneOf":[{"type":"string","description":"When not registered: who the fees currently go to.","uniqueKey":"data.creator.oneOf.0","typeLabel":"string"},{"type":"null","description":"When not registered: who the fees currently go to.","uniqueKey":"data.creator.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.creator","typeLabel":"string | null"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"data":{"registered":true,"mint":"\u003cstring>","symbol":"\u003cstring>","url":"\u003cstring>","feeWallet":"\u003cstring>","creator":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"5aa5053f-31d9-4b48-b8dd-4cfea532be4b":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"52bc12e1-8946-49a9-ad88-e006c2a4c9d3":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"ec435f62-82fe-4562-84fd-ad87573c92bc":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"c46d81f8-5a55-4668-89c2-607ba41dba50":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"d09070fe-bb52-4733-860d-a121784a7230":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"90042484-98e8-4dbe-815c-a03667a95f21":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"},"d6cc3233-28df-4c09-adcf-ca35f6f7aa15":{"description":"Every failure carries the same envelope.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Always false on a failure.","uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"A short reason in plain words: `coin not found`, `too many requests`, `invalid wallet signature`. For people; the wording may change. Branch on `code`.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"The fixed word to branch on. `invalid_request` (400) something in the request is wrong; `unauthorized` (401) a signature, timestamp or nonce failed; `forbidden` (403) the wallet may not do this or the feature is closed; `blocked` (403) this address is blocked; `not_found` (404); `conflict` (409) the action does not fit the state; `gone` (410) an old v1 write address; `payload_too_large` (413); `refused` (422) a strategy or money check said no; `frozen` (423) creator authority is frozen; `rate_limited` (429); `expired` (400) a relayed transaction's blockhash aged out, rebuild and sign again; `rejected` (400) the chain refused a relayed transaction; `helius_key_required` (401) this call runs on your own Helius key and none was sent; `helius_key_rejected` (401) Helius refused the key you sent; `internal` (500); `unavailable` (503) something we depend on is down; `paused` (503) the whole API is switched off for a while.","enum":["invalid_request","unauthorized","forbidden","blocked","not_found","conflict","gone","payload_too_large","refused","frozen","rate_limited","expired","rejected","helius_key_required","helius_key_rejected","internal","unavailable","paused"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"retryable":{"type":"boolean","description":"True when the same request may succeed later without any change: rate limits, our own failures, a paused API.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"integer","description":"On a per-minute rate limit or a pause: how long to wait. The same figure as the Retry-After header.","uniqueKey":"retryAfterSeconds","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":true,"error":"\u003cstring>","code":"invalid_request","retryable":true,"retryAfterSeconds":123}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"4d1e1a5c-b518-42e8-8ec2-fdd7d18e0027":{"url":"https://purps.lol/api/v2"}}},"originalFileLocation":"openapi.json"},"subdomain":"purp","siteName":"PURPS API","title":"Register the strategy - PURPS API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T13:13:12.758Z","originalFileLocation":"api-reference/redirect-a-pumpfun-coin/register-the-strategy.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=\"Once a pump.fun coin\u0026#x27;s fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without strategy. A build that carried strategy doesn\u0026#x27;t need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. config is the short form or the full config. registered: false with a feeWallet means the fees aren\u0026#x27;t routed yet, or the chain hasn\u0026#x27;t shown us the routing yet. Wait a few seconds and call again.\">\u003cmeta data-mint-head name=\"application-name\" content=\"PURPS API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_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/purp/MiDdXJzgaAdddi-F/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Register the strategy - PURPS API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Once a pump.fun coin\u0026#x27;s fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without strategy. A build that carried strategy doesn\u0026#x27;t need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. config is the short form or the full config. registered: false with a feeWallet means the fees aren\u0026#x27;t routed yet, or the chain hasn\u0026#x27;t shown us the routing yet. Wait a few seconds and call again.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PURPS API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://purp.mintlify.app/_mintlify/api/og/v2?division=Launch+on+pump.fun\u0026amp;title=Register+the+strategy\u0026amp;description=Once+a+pump.fun+coin%27s+fees+point+at+its+PURPS+wallet%2C+this+registers+the+strategy+that+will+run+on+them%3A+for+a+coin+you+launched+elsewhere%2C+or+a+build+sent+wit\u0026amp;theme=7c74560e82591d1ea97ea5ba\u0026amp;signature=8a75267abc021d615d055cbf59e780e70769013f0e94210f50f896e808c29dda\">\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=\"Register the strategy - PURPS API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Once a pump.fun coin\u0026#x27;s fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without strategy. A build that carried strategy doesn\u0026#x27;t need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. config is the short form or the full config. registered: false with a feeWallet means the fees aren\u0026#x27;t routed yet, or the chain hasn\u0026#x27;t shown us the routing yet. Wait a few seconds and call again.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purp.mintlify.app/_mintlify/api/og/v2?division=Launch+on+pump.fun\u0026amp;title=Register+the+strategy\u0026amp;description=Once+a+pump.fun+coin%27s+fees+point+at+its+PURPS+wallet%2C+this+registers+the+strategy+that+will+run+on+them%3A+for+a+coin+you+launched+elsewhere%2C+or+a+build+sent+wit\u0026amp;theme=7c74560e82591d1ea97ea5ba\u0026amp;signature=8a75267abc021d615d055cbf59e780e70769013f0e94210f50f896e808c29dda\">\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/purp/MiDdXJzgaAdddi-F/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PURPS API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3A49B8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/redirect-a-pumpfun-coin/register-the-strategy.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.purps.lol/#organization\",\"name\":\"PURPS API\",\"url\":\"https://docs.purps.lol\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/purp/-N_uFz0qN2utvXEe/logo/light.svg?fit=max\u0026auto=format\u0026n=-N_uFz0qN2utvXEe\u0026q=85\u0026s=75b29cbe72c25a0015688d26e165660b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.purps.lol#website\",\"name\":\"PURPS API\",\"url\":\"https://docs.purps.lol\",\"publisher\":{\"@id\":\"https://docs.purps.lol/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy#webpage\",\"url\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy\",\"name\":\"Register the strategy\",\"description\":\"Once a pump.fun coin's fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without strategy. A build that carried strategy doesn't need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. config is the short form or the full config. registered: false with a feeWallet means the fees aren't routed yet, or the chain hasn't shown us the routing yet. Wait a few seconds and call again.\",\"dateModified\":\"2026-09-28T13:13:12.758Z\",\"isPartOf\":{\"@id\":\"https://docs.purps.lol#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Launch on pump.fun\",\"item\":\"https://docs.purps.lol/api-reference/launch-on-pumpfun/build-a-pumpfun-launch\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Register the strategy\",\"item\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy#apireference\",\"headline\":\"Register the strategy\",\"name\":\"Register the strategy\",\"description\":\"Once a pump.fun coin's fees point at its PURPS wallet, this registers the strategy that will run on them: for a coin you launched elsewhere, or a build sent without strategy. A build that carried strategy doesn't need it; we register that one ourselves. No signature: the on-chain fee routing is the proof of authority. config is the short form or the full config. registered: false with a feeWallet means the fees aren't routed yet, or the chain hasn't shown us the routing yet. Wait a few seconds and call again.\",\"url\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purps.lol/api-reference/redirect-a-pumpfun-coin/register-the-strategy#webpage\"},\"dateModified\":\"2026-09-28T13:13:12.758Z\",\"publisher\":{\"@id\":\"https://docs.purps.lol/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.purps.lol#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PURPS API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PURPS API","nav":{"global":{"anchors":[{"anchor":"purps.lol","icon":"globe","href":"https://purps.lol"},{"anchor":"llms.txt","icon":"bot","href":"https://purps.lol/llms.txt"}]},"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","icon":"code","groups":[{"group":"Coins","icon":"coins","pages":[{"title":"List coins","deprecated":null,"version":null,"openapi":"/openapi.json get /coins","href":"/api-reference/coins/list-coins"},{"title":"One coin","deprecated":null,"version":null,"openapi":"/openapi.json get /coins/{mint}","href":"/api-reference/coins/one-coin"},{"title":"Flat index","deprecated":null,"version":null,"openapi":"/openapi.json get /index","href":"/api-reference/coins/flat-index"},{"title":"Search","deprecated":null,"version":null,"openapi":"/openapi.json get /search","href":"/api-reference/coins/search"},{"title":"Coins launched on purps.lol","deprecated":null,"version":null,"openapi":"/openapi.json get /launches","href":"/api-reference/coins/coins-launched-on-purpslol"}]},{"group":"Before you launch","icon":"list-checks","pages":[{"title":"Launch options","deprecated":null,"version":null,"openapi":"/openapi.json get /launch-options","href":"/api-reference/launch-on-purpslol/launch-options"},{"title":"Launch pairs","deprecated":null,"version":null,"openapi":"/openapi.json get /pairs","href":"/api-reference/coins/launch-pairs"},{"title":"Perp markets","deprecated":null,"version":null,"openapi":"/openapi.json get /markets","href":"/api-reference/coins/perp-markets"}]},{"group":"Launch on purps.lol","icon":"https://mintlify.s3.us-west-1.amazonaws.com/purp/icons/purps.svg","pages":[{"title":"Build a purps.lol launch","deprecated":null,"version":null,"openapi":"/openapi.json post /launches","href":"/api-reference/launch-on-purpslol/build-a-purpslol-launch"},{"title":"Launch status","deprecated":null,"version":null,"openapi":"/openapi.json get /launches/{mint}","href":"/api-reference/launch-on-purpslol/launch-status"}]},{"group":"Launch on pump.fun","icon":"https://mintlify.s3.us-west-1.amazonaws.com/purp/icons/pumpfun.svg","pages":[{"title":"Build a pump.fun launch","deprecated":null,"version":null,"openapi":"/openapi.json post /pumpfun/launches","href":"/api-reference/launch-on-pumpfun/build-a-pumpfun-launch"},{"title":"Check a pump.fun coin","deprecated":null,"version":null,"openapi":"/openapi.json get /redirects/{mint}","href":"/api-reference/redirect-a-pumpfun-coin/check-a-pumpfun-coin"},{"title":"Lock fee routing","description":"Builds pump.fun's fee-sharing transaction that sends the coin's creator fees to its PURPS wallet permanently. Only the coin's on-chain creator can sign it. A launch built through /pumpfun/launches already comes with this transaction as `feeRouting`; call this when that one's blockhash has aged out, when `feeRouting` was null, or as the first step for redirecting a pump.fun coin you launched elsewhere. `done: true` means it's already in place.","deprecated":null,"version":null,"openapi":"/openapi.json post /pumpfun/fees","href":"/api-reference/launch-on-pumpfun/lock-fee-routing"},{"title":"Register the strategy","deprecated":null,"version":null,"openapi":"/openapi.json post /redirects","href":"/api-reference/redirect-a-pumpfun-coin/register-the-strategy"}]},{"group":"Launch on Pons","icon":"https://mintlify.s3.us-west-1.amazonaws.com/purp/icons/pons.svg","pages":[{"title":"Prepare a Pons launch","description":"Step 1: the message to sign with your EVM wallet (`personal_sign`, EIP-191). Pons is the one launchpad that signs a message before the build: launching there is invite-only, and the signature is how we check the invite before anything is spent. Send the launch terms and the `config` the coin will run (the short form or the full config); a malformed config is a 400 here, so you don't sign anything for nothing. The message carries a `launches:` line with the launch in words (name, ticker, pair, creator tax and first buy), a `sets:` line with the strategy in words when a config is sent, and a `launch:` hash that covers the terms and the config. Send the same `devBuy`, `creatorTaxBps` and `config` to submit; they're part of what you sign. This is the only message a Pons launch signs. We attach the strategy once the launch lands.","deprecated":null,"version":null,"openapi":"/openapi.json post /pons/launches/prepare","href":"/api-reference/launch-on-pons/prepare-a-pons-launch"},{"title":"Build the Pons launch","deprecated":null,"version":null,"openapi":"/openapi.json post /pons/launches/submit","href":"/api-reference/launch-on-pons/build-the-pons-launch"},{"title":"Find a Pons launch","deprecated":null,"version":null,"openapi":"/openapi.json get /pons/launches/{ref}","href":"/api-reference/launch-on-pons/find-a-pons-launch"},{"title":"Check a Pons payout asset","deprecated":null,"version":null,"openapi":"/openapi.json get /pons/assets/{address}","href":"/api-reference/launch-on-pons/check-a-pons-payout-asset"},{"title":"Prepare the registration","deprecated":null,"version":null,"openapi":"/openapi.json post /pons/register/prepare","href":"/api-reference/launch-on-pons/prepare-the-registration"},{"title":"Register the strategy","deprecated":null,"version":null,"openapi":"/openapi.json post /pons/register/submit","href":"/api-reference/launch-on-pons/register-the-strategy"}]},{"group":"Send a transaction","icon":"send","pages":[{"title":"Send a signed transaction","deprecated":null,"version":null,"openapi":"/openapi.json post /transactions/send","href":"/api-reference/transactions/send-a-signed-transaction"},{"title":"Transaction status","deprecated":null,"version":null,"openapi":"/openapi.json get /transactions/{signature}","href":"/api-reference/transactions/transaction-status"}]},{"group":"Manage a coin","icon":"sliders-horizontal","pages":[{"title":"Prepare a strategy","deprecated":null,"version":null,"openapi":"/openapi.json post /coins/{mint}/strategy/prepare","href":"/api-reference/manage-a-coin/prepare-a-strategy"},{"title":"Attach the strategy","deprecated":null,"version":null,"openapi":"/openapi.json post /coins/{mint}/strategy/submit","href":"/api-reference/manage-a-coin/attach-the-strategy"}]},{"group":"Creator authority","icon":"shield-check","pages":[{"title":"Where creator authority stands","deprecated":null,"version":null,"openapi":"/openapi.json get /coins/{mint}/authority","href":"/api-reference/creator-authority/where-creator-authority-stands"},{"title":"The Changes log","deprecated":null,"version":null,"openapi":"/openapi.json get /coins/{mint}/changes","href":"/api-reference/creator-authority/the-changes-log"},{"title":"Prepare a change","deprecated":null,"version":null,"openapi":"/openapi.json post /coins/{mint}/authority/prepare","href":"/api-reference/creator-authority/prepare-a-change"},{"title":"Submit the signed change","deprecated":null,"version":null,"openapi":"/openapi.json post /coins/{mint}/authority/submit","href":"/api-reference/creator-authority/submit-the-signed-change"}]}]}]},"title":"Register the strategy - PURPS API","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}