Cookie — human Privy session (forwarded as _medusa_jwt)
PAYMENT-SIGNATURE / X-PAYMENT — x402 settlement
Chains
Anything that touches the launchpad is multi-chain. Endpoints that need to know which chain take a chain parameter — the slugs are base (8453), ethereum (1) and robinhood (4663). The registry stores the chain on each launch row, so a launch recorded on one chain is never confused with another. Two exceptions: the B20 endpoints are Base-only, and paired launches are only possible on Base and Robinhood Chain.
Merkle proof for an allowlisted address. Leaf = keccak256(abi.encodePacked(address, maxMint)), sorted pairs
POST
/api/store/nft-store/report-mint
None
Record a completed onchain purchase so it appears in the buyer's collection
POST
/api/store/nft-store/claim/:tokenId
None
Submit shipping info for a receipt token
POST
/api/store/nft-store/claim/:tokenId/confirm
Session
Confirm the claim. Bound to the buyer wallet the caller owns
GET
/api/store/nft-store/orders
None
Order lookup
POST
/api/merchant/stores/register-nft-store
Session
Register a freshly deployed CC0Store contract against a merchant store
Confirming an order burns the receipt token — the v9 contracts are burn-on-claim, which is why getClaimData and isClaimed no longer exist. Post-claim state lives in the ProductClaimed event and the backend order record.
Phases on ERC1155 v11 are stored ONCHAIN per token via setTokenPhases(tokenId, Phase[]) from the creator wallet. No DB endpoint. See Fully Onchain NFTs → Phases.
Token Launch
A launch is an onchain deployToken call to the factory for the chosen chain — the signer sends it, there is no "deploy" endpoint. Two things are HTTP: the optional gas-sponsored relay, and the registry write that makes the token visible across the platform.
Method
Endpoint
Auth
Purpose
POST
/api/cc0strategy/sponsor-launch
Session
Gas-sponsored ERC-20 launch — the platform wallet signs and pays, the user keeps every control (reward recipient, vault/airdrop admin). Base / Ethereum / Robinhood. Gated by a master switch; fails closed
POST
/api/b20/sponsor-launch
Session
Same, for a B20 launch. Base only
GET / POST
/api/store/token-launches
None
Cross-chain launch registry. POST records a launch (CORS-open so the SDK can register from a creator's own site); GET filters by creator_wallet, protocol, status, token_address, limit, offset
GET / PATCH
/api/store/token-launches/:idOrAddress
None / wallet signature
Single launch — includes chain, split_type and the paired-token fields. PATCH updates image, description and socials; the backend requires an X-Owner-* signature whose signer is the launch's creator_wallet
POST
/api/store/launchpad/pin-image
None
Pin a token image to IPFS so the onchain image URI is content-addressed. Accepts multipart file or JSON { url }
POST
/api/cc0strategy/airdrop-tree
None
Build the launch airdrop merkle tree from an NFT collection's holders. Returns merkleRoot + entries
GET
/api/store/airdrops/:tokenAddress/proofs
None
Claim proofs for an airdrop
GET
/api/robinhood/tokenized-stocks
None
Robinhood's official tokenized stocks (chain 4663), each verified from the issuer's own Deployed logs — the pairing catalogue for a paired launch there
POST
/api/store/coins/create
Session
Store-currency deploy used by the NFT-store wizard (server-side, provider-dispatched). Not the launchpad
GET
/api/store/token-prices
None
Token prices (batch)
GET
/api/store/realtime/prices/:address
None
Realtime price
GET
/api/store/realtime/ohlcv/:address
None
OHLCV candles
GET
/api/store/realtime/swaps/:address
None
Swap volume + LP
Community Coins
Method
Endpoint
Auth
Purpose
GET
/api/cc0strategy/nft-holders?contract=&chain=
None
Holder count, unioned across every same-chain contract the collection spans, plus primary_contract
Resolves maxEligibleTokenId for the distributor. Returns success:false rather than guessing when the collection is not sequential
POST
/api/store/nft-holders/recipients
None
Snapshot a collection's holders into a ready-to-use recipient list (Base or Ethereum) — the primitive behind "airdrop to every holder of X"
Same-chain, server-decided
The eligibility ceiling is derived server-side from the collection on the launch chain, and a collection that is not on the launch chain is rejected before any gas is spent — the distributor calls ownerOf locally, so a cross-chain link could never be claimed. A client-supplied ceiling is never trusted.
Fees, staking and vaults
Method
Endpoint
Auth
Purpose
GET
/api/rewards/creator-fees
None
Total fees generated per token, branching on the token's protocol. Takes parallel arrays incl. pairedTokens / pairedPrices / pairedDecimals for paired launches
GET
/api/cc0strategy/token-cumulative-fees
None
All-time fees a token generated for its creator (claimed + claimable). Pass &paired=0x… on a paired launch — its fees never touch WETH
GET
/api/cc0strategy/staking-fees
None
All-time WETH distributed to $cc0company stakers, plus a cumulative series. Rewards bridged from Ethereum and Robinhood Chain are already included
GET
/api/cc0strategy/stakers
None
Staker leaderboard, read from chain
GET
/api/cc0strategy/vaults?address=
None
Every locked-supply vault a wallet can claim, across chains and suites. Reads are public; the claim itself is signed client-side
GET / POST
/api/cc0strategy/robinhood-bridge
None
GET reports whether bridging is configured; POST pushes the Robinhood staking escrow's balance to the Base pool on demand. Executed by the operator key server-side — 503 without it, 400 below the minimum
Agentic Marketplace (buy side only — sell paused)
Method
Endpoint
Auth
Purpose
GET
/api/store/agent-services
None
Browse models
GET
/api/store/agent-services/:slug
None
Model detail
POST
/api/store/agent-services/:slug/invoke
x402 v2 USDC
Generate
POST
/api/store/agent-services/:slug/pay-and-invoke
None
Human path — the client has already sent the USDC transfer and posts { prompt, tx_hash }. Returns 425 while the tx is still pending, so poll
GET
/api/store/agent-services/jobs/:jobId
None
Poll job
MCP
Method
Endpoint
Auth
Purpose
POST
/api/mcp
x402 per call
Stateless MCP Streamable-HTTP endpoint (JSON-RPC 2.0). tools/list mirrors the live agent-services catalog; tools/call relays to the matching invoke route and passes the x402 challenge straight back
initialize, tools/list and ping are free. Every tools/call is paid: the first attempt returns HTTP 402, your x402 client signs the USDC authorization and retries. See MCP Server.
Upload
Method
Endpoint
Auth
Purpose
POST
/api/upload
API key
IPFS upload (Pinata)
POST
/api/upload/media
API key
Media upload (R2)
POST
/api/upload/metadata
Bearer
Pin product metadata JSON
Feed
Method
Endpoint
Auth
Purpose
GET
/api/store/feed
None
Global feed (paginated)
GET
/api/store/feed/events/:id
None
Event detail
POST
/api/store/feed/:id/like
Session
Like
POST
/api/store/feed/:id/repost
Session
Repost
For dense agent integration use cc0.company/skill.md — same endpoints, denser format, drop-in for LLM context.