EventTrader
AI-Native Trading
PAPER
Menu
Dark Mode
Plain English Mode
PAPER TRADING MODE — Enable real trading on your Account page
Back

Launchpad SDK

Two ways to drive the Arc launchpad from code: a single-file SDK you drop into any project (Python with requests, or dependency-free JavaScript), or the launchpad service of the full cymetica-eventtrader package. Both wrap the endpoints on the REST API page, so the surface is identical. Reads need no auth; writes return unsigned transactions that you sign — the SDK never sees a key unless you pass one to the optional local-signing helper.

Download

Python: pip install cymetica-eventtrader ships this exact module as eventtrader_launchpad (or download the file and pip install requests; web3 only if you want sign_and_send). JavaScript: nothing — native fetch, Node 18+ or the browser; pass an ethers v6 Signer to sendWith to broadcast. The typed npm package: npm install cymetica-eventtrader.

Python — quickstart

from eventtrader_launchpad import EventTraderLaunchpad

lp = EventTraderLaunchpad()                       # https://cymetica.com, no key

cfg = lp.config()                                 # factory, RPC, fees, ABIs
hot = lp.list_tokens(sort="volume", limit=5)      # a list of token rows
token = lp.get_token(hot[0]["address"])
print(token["symbol"], token["page_url"])

risk = lp.holders(token["address"])               # rug-check before buying
print("top-10 hold", risk["top10_concentration_pct"], "%")

# Quote a 0.01 USDC buy → unsigned tx to sign with YOUR wallet
q = lp.trade_quote(token["address"], side="buy", amount=0.01, slippage_bps=100)
print(q["quote"]["tokens_out"], q["unsigned_transactions"][0])

Launch a token ($0)

prep = lp.prepare_launch(
    "Night Owl", "OWL",
    description="Nocturnal alpha",
    image_url="https://example.com/owl.png",
    website="https://owl.example", twitter="https://x.com/owl",
    creator_tax_bps=0, share_fees_with_holders=False,
)
tx = prep["unsigned_transaction"]   # {chain_id, to, value_wei, data, gas_hint, function}

# Option A — sign locally with web3.py (your key never leaves this process)
receipt = lp.sign_and_send(tx, private_key=os.environ["MY_KEY"])
print(receipt["tx_hash"], receipt["token_address"], receipt["page_url"])

# Option B — hand `tx` to any wallet: it is plain {to, value, data, chainId}

Sell (approve, then sell)

q = lp.trade_quote(token["address"], side="sell", amount=1_000_000)   # tokens
for unsigned in q["unsigned_transactions"]:     # 1/2 approve, 2/2 sell
    lp.sign_and_send(unsigned, private_key=os.environ["MY_KEY"])

Creator links, gas-free

from eth_account import Account
from eth_account.messages import encode_defunct

m = lp.socials_message(token["address"], website="https://owl.example",
                       twitter="https://x.com/owl")
sig = Account.sign_message(encode_defunct(text=m["message"]),
                           private_key=os.environ["MY_KEY"]).signature.hex()
lp.set_socials(token["address"], wallet=m["creator_address"], signature=sig,
               timestamp=m["timestamp"], website="https://owl.example",
               twitter="https://x.com/owl")

JavaScript — quickstart

import { EventTraderLaunchpad } from './eventtrader-launchpad.js';
import { ethers } from 'ethers';

const lp = new EventTraderLaunchpad();
const tokens = await lp.listTokens({ sort: 'volume', limit: 5 });   // an array
const token = await lp.getToken(tokens[0].address);

const q = await lp.tradeQuote(token.address, { side: 'buy', amount: 0.01 });
const signer = new ethers.Wallet(process.env.MY_KEY,
  new ethers.JsonRpcProvider('https://rpc.mainnet.arc.io'));
const r = await lp.sendWith(signer, q.unsigned_transactions[0]);
console.log(r.hash, r.status);

// Launch
const prep = await lp.prepareLaunch({ name: 'Night Owl', symbol: 'OWL',
                                      website: 'https://owl.example' });
const launched = await lp.sendWith(signer, prep.unsigned_transaction);
console.log(launched.tokenAddress, launched.pageUrl);

In the browser, signer can be await new ethers.BrowserProvider(window.ethereum).getSigner() — the same non-custodial flow the launchpad page uses.

Method reference

PythonJavaScriptREST
config()config()GET /config
list_tokens(sort, limit, offset, chain_id, creator)listTokens({sort, limit, offset, chainId, creator})GET /tokens
screener(limit, include_external, chain_id)screener({limit, includeExternal, chainId})GET /screener
get_token(address)getToken(address)GET /tokens/{address}
get_token_onchain(address, chain_id)getTokenOnchain(address, chainId)GET /tokens/{address}/onchain
trades(address, limit)trades(address, limit)GET /tokens/{address}/trades
holders(address, limit)holders(address, limit)GET /tokens/{address}/holders
fee_boost(wallet)feeBoost(wallet)GET /boost/{wallet}
trader_rewards(wallet)traderRewards(wallet)GET /rewards/{wallet}
backing(address)backing(address)GET /backing/{address}
prepare_launch(name, symbol, …)prepareLaunch({name, symbol, …})POST /launch/prepare
trade_quote(address, side, amount, slippage_bps)tradeQuote(address, {side, amount, slippageBps})GET /tokens/{address}/quote
socials_message(address, …)socialsMessage(address, {…})GET /tokens/{address}/socials/message
set_socials(address, wallet, signature, timestamp, …)setSocials(address, {wallet, signature, timestamp, …})POST /tokens/{address}/socials
sign_and_send(tx, private_key)sendWith(signer, tx)— local signing helper

All paths are relative to https://cymetica.com/api/v1/launchpad/onchain. Errors raise EventTraderLaunchpadError with .status and .code (e.g. UNKNOWN_TOKEN, GRADUATED, QUOTE_UNAVAILABLE).

Full package (async, typed)

The same service ships inside the platform SDKs as client.launchpad:

# pip install cymetica-eventtrader
from event_trader import EventTrader

async with EventTrader() as client:
    hot = await client.launchpad.list_tokens(sort="volume", limit=5)
    q = await client.launchpad.trade_quote(hot[0]["address"], side="buy", amount=0.01)
    prep = await client.launchpad.prepare_launch("Night Owl", "OWL", website="https://owl.example")
// npm install cymetica-eventtrader
import { EventTrader } from "cymetica-eventtrader";
const client = new EventTrader();
const hot = await client.launchpad.listTokens({ sort: "volume", limit: 5 });   // array
const q = await client.launchpad.tradeQuote(hot[0].address, { side: "buy", amount: 0.01 });
const prep = await client.launchpad.prepareLaunch({ name: "Night Owl", symbol: "OWL" });
Non-custodial, always. The SDK builds calldata; your wallet signs. Creation is $0, you pay chain gas (well under 1 USDC per launch on Arc, chain id 5042 — Arc pays gas in USDC). Zero platform fees on Arc: no trading fee, and 100% of the locked-liquidity fees go to the creator forever. EventTrader is an independent platform built on Arc, a public blockchain developed by Circle — not affiliated with Circle Internet Group, Inc.