Mental model
Serialized is a REST API athttps://api.serialized.xyz/v1/... where every call takes a chain query parameter (evm:8453, solana), single-item endpoints have POST batch twins, each endpoint has its own credit cost, and every response is wrapped in { data, meta } with millisecond timestamps. Codex is a single GraphQL Supergraph: one endpoint (https://graph.codex.io/graphql), one auth header, one query language, and the network is a numeric networkId argument on each field.
What that means in practice:
- Single and batch endpoints collapse into one field.
GET /v1/tokenandPOST /v1/tokenbecome onetokensorfilterTokensquery that takes an array, and GraphQL aliases batch anything else. - Per-endpoint credit costs go away. Every Codex query response counts as one request, whether it returns a price, a candle set, or a holder list. See Rate Limits.
- Network selection lives next to the data, so the same query covers Solana, Ethereum, Base, BNB, and 80+ networks instead of 18 EVM chains plus Solana.
- Real-time data has two delivery options instead of one. Serialized is WebSocket-only with three channels; Codex gives you WebSocket subscriptions and webhooks, and you can mix them in the same app.
Conventions that change
The data is the same; the shapes differ. Keep this table next to you while migrating.
Codex network IDs used below:
evm:1 → 1, evm:8453 → 8453, evm:56 → 56, evm:42161 → 42161, evm:43114 → 43114, evm:130 → 130, evm:143 → 143, evm:4326 → 4326, evm:4663 → 4663, solana → 1399811149. For anything else, call getNetworks once; for evm:<id> the numeric part is the Codex networkId on every network Codex supports.
Authentication
Serialized uses anAuthorization header set to your raw API key against https://api.serialized.xyz, with an unauthenticated demo host at https://demo.serialized.xyz. Codex also uses an Authorization header with your API key from the dashboard, so the header itself doesn’t change. The difference is network moves from a query parameter to a field argument, and the request body becomes GraphQL. For trying queries without writing code, use the explorer or the “Try it” panels throughout the reference.
Serialized
Codex
createApiTokens and pass it as Bearer <token>. See Authentication for the full pattern.
Endpoint mapping
The tables cover every Serialized endpoint, grouped the way their docs group them. Where Serialized splits a concept into a single endpoint and aPOST batch twin, the Codex equivalent on the right replaces both.
Token snapshot, prices, and metadata
Security and deployer
Dedicated token safety is coming soon. Today, Codex surfaces safety flags on
token (isScam, mintable, freezable, creatorAddress, top10HoldersPercent), distribution-based risk signals through filterTokens (insider / sniper / bundler / dev held %, potentialScam), and locked-LP context through liquidityLocksV2. A dedicated token contract scanner for honeypot and hidden-tax detection, closer to Serialized’s /v1/audit/contract, is in active development. If contract-level security is core to your product, flag those call sites during migration and reach out so we can share timelines.Holders and traders
Pools and markets
Charts and OHLCV
Interval names change. Serialized
1s → Codex 1S, 5s → 5S, 15s → 15S, 30s → 30S, 1m → 1, 5m → 5, 15m → 15, 30m → 30, 1h → 60, 4h → 240, 12h → 720, 1d → 1D, 1w → 7D. Serialized’s 3m, 2h, 6h, and 1M have no direct Codex resolution; request the next finer resolution and roll up client-side. Sub-minute resolutions are only populated for the last 24 hours. Serialized’s quote=usd is the currencyCode: "USD" argument on Codex; quote=native is currencyCode: "TOKEN".
Trades
Serialized’s
fromAt is milliseconds; Codex timestamp: { from, to } is seconds. Serialized’s isWash flag has no Codex equivalent. Codex events carry tradeSource (the wallet or terminal that originated the swap) on Solana and major EVM networks, which Serialized does not expose.
Wallets
Discovery, screening, and launchpads
Serialized’s discovery surface (/v1/pulse for launchpad columns, /v1/screener for trending markets, /v1/search) collapses into a single Codex query: filterTokens. It is the most flexible endpoint in the API and worth understanding well before you migrate, because it replaces every Pulse view, every screener sort, and search at once.
filterTokens takes a set of filters (range or boolean conditions on token attributes), optional rankings (sort by any attribute, ascending or descending), an optional phrase for search, and a network scope. In one request you can filter and rank across 100+ attributes, including:
- Price and valuation:
priceUSD,marketCap,circulatingMarketCap,fdv, and all-time highs / lows. - Windowed trading stats (5m / 1h / 4h / 12h / 24h):
volume*,buyVolume*,sellVolume*,txnCount*,uniqueBuys*,uniqueSells*,change*,high*,low*. - Liquidity and fees:
liquidity,totalLiquidityUsd,totalFees*,poolFees*. - Holders and age:
holders,top10HoldersPercent,age,createdAt,lastTransaction. - Safety and distribution signals:
potentialScam,mintable,freezable,isVerified,insiderHeldPercentage,sniperHeldPercentage,bundlerHeldPercentage,devHeldPercentage. - Launchpad state:
launchpadName,launchpadProtocol,launchpadGraduationPercent,launchpadCompleted,launchpadMigrated. - Creator:
creatorAddresses.
view=new is a createdAt range with launchpadCompleted: false; view=bonding is launchpadGraduationPercent between 0 and 100 with launchpadMigrated: false; view=graduated is launchpadMigrated: true ranked by launchpadMigratedAt. Pulse’s ageMin / liquidityMin / marketCapMin / bondingMin / volumeMin / txnsMin / feesMin ranges are the same attributes as filterTokens range filters (age, liquidity, marketCap, launchpadGraduationPercent, volume*, txnCount*, totalFees*), and factories is launchpadProtocol. There is no socials filter; read token.socialLinks on each result instead. See the Launchpads recipe and Discover Tokens recipe for worked examples.
Utility
Side-by-side examples
The four patterns below are the ones trading apps migrate first. Token and wallet addresses are real (DEGEN on Base) and the queries are runnable.1. Token snapshot (metadata + price + 24h stats)
Serialized returns this fromGET /v1/token. On Codex, filterTokens with a tokens list returns the same picture for up to 200 tokens in one call.
change24 is a decimal (0.0375 = 3.75%), and priceUSD, marketCap, and volume24 are strings. For the full 5m through weekly picture with unique buyers and sellers, add getDetailedTokenStats. The Detailed Token Page recipe shows the full pattern.
2. OHLCV chart
from / to window in unix seconds instead of limit + endTime. Resolutions run from 1S to 7D. For live chart updates, layer in onTokenBarsUpdated. See the Charts recipe for a full Lightweight Charts integration.
3. Trade tape, then stream it
trades channel and GET /v1/token/trades share one shape; Codex’s onTokenEventsCreated and getTokenEvents do too. To backfill after a disconnect, re-query getTokenEvents with timestamp: { from } set a couple of seconds before your last seen event and dedupe on transactionHash + logIndex. See the Events recipe.
4. Wallet positions and PnL
Serialized splits this across/v1/wallet/positions and /v1/wallet/pnl. Codex returns holdings from balances and the PnL summary from detailedWalletStats in one request.
realizedPnlUsd and totalPnlUsd per row), use filterTokenWallets with wallets: [...]. See Wallet PnL for how Codex computes cost basis, and the Trader Dashboard recipe for the full screen.
Real-time data
Serialized streams over one WebSocket atwss://api.serialized.xyz/v1/stream with three channels (trades, token-updates, pool-updates), an {"op":"auth"} handshake, and per-key limits of 5 connections, 20 subscriptions per connection, and 50 watched tokens or pools in total. Token and pool updates are throttled to one event per second per token. Codex gives you the same data with two delivery options, and you can use both at once:
- WebSocket subscriptions: persistent connection, updates pushed inline, API key in the connection auth. Best for dashboards, trading UIs, anything user-facing. Growth plans get 300 connections per key, and each connection can carry many subscriptions.
- Webhooks: Codex calls an HTTP endpoint you control when an event fires. Best for background jobs, alerts, and queue-driven systems.
Cadence differs. Serialized throttles token and pool updates to one per second; Codex’s
onPricesUpdated fires once per token per block that contains a trade, and onTokenEventsCreated fires per swap. Codex bills one request per delivered message, so scope subscriptions to what you render. See Rate Limits for connection sizing.
Gaps
Things Serialized does that Codex doesn’t, and what to do about them:- Contract auditing (
/v1/audit/contract,/v1/audit/chains, and the taxes /dexPaidfields on/v1/token/security). Serialized reads contract source for honeypot and hidden-tax verdicts. Codex surfaces on-chain safety signals (authorities,isScam, holder concentration, sniper / bundler / insider holdings, locked LP) but does not audit source today. A dedicated scanner is in development; keep a security provider for source-level verdicts until then. - Deployer risk verdicts (
/v1/token/dev-tokensaggregate read). Codex lists every token a wallet created viafilterTokens(filters: { creatorAddresses })and exposestokensCreatedCount/tokensMigratedCounton the wallet, but does not score the deployer. - Wallet transfers (
/v1/wallet/transfers). Codex returns swap and token-lifecycle events, not deposits, withdrawals, or plain transfers. Pair with an RPC provider or an Etherscan-family API if transfer history is core to your product. - Name resolution (ENS, Basename,
.solon/v1/wallet/profile). Codex exposes a resolveddisplayNameand social handles but does not return the underlying name records separately. - Wash-trade flags (
isWashon trades). No Codex equivalent. Codex exposestradeSourceand maker labels instead. - Pool-level top traders and sparklines (
/v1/pool/top-traders,/v1/pools/sparklines). Codex ranks traders and builds sparklines per token; usegetBarson the pool for a pool-scoped series. - Native coin price list (
/v1/prices/native). Query the wrapped native token per network throughgetTokenPrices.
What you pick up
Things Codex offers that Serialized’s data API doesn’t:- 80+ networks, not 19. Everything Serialized covers plus Polygon, Optimism, Linea, Sui, Aptos, Starknet, and dozens more, all through the same
networkIdargument. See Networks. - One query, many shapes. GraphQL lets you combine token metadata, price, holders, recent trades, and chart data into a single request and only pull the fields you render. A Serialized token page hits
/v1/token,/v1/token/stats,/v1/token/holders, and/v1/token/trades; the Codex equivalent is one request. - Flat billing. One request per query response, no per-endpoint credit multipliers. A candle query costs the same as a price query.
- One endpoint for almost any discovery need.
filterTokensfilters and ranks across 100+ attributes and does phrase search. It replaces Pulse, the screener, and search, and its subscription twinonFilterTokensUpdatedstreams the same re-ranked list live, which Serialized has no equivalent for. - Multi-timeframe stats in a single call.
getDetailedTokenStatsandgetDetailedPairStatsreturn volume, buys, sells, price change, and unique-maker counts across every window from 5-minute to weekly at once, each with its own change value. - Streaming without hard caps. Serialized allows 5 connections and 50 watched tokens per key. Codex Growth plans get 300 connections, each carrying many subscriptions, plus webhooks for server-side delivery.
- Prediction markets. Polymarket and Kalshi events, markets, trades, and trader analytics via
filterPredictionEventsand related queries. See Prediction Markets. - Launchpad lifecycle as events. Serialized surfaces new / bonding / graduated columns; Codex models the full lifecycle (creation, bonding, graduation, migration) as queryable and streamable events across 200+ launchpads. See Launchpads.
- Wallet discovery by performance.
filterWalletsqueries for wallets matching PnL, win-rate, or volume criteria across all networks, not just for a single token. - Trade source attribution.
tradeSourceon events andtradeSourceIdson wallets tell you which terminal or wallet app originated a swap. - Liquidity locks.
liquidityLocksV2surfaces locked-LP context across major EVM chains and Solana. - Categories and community notes. Curated token categories and community notes.
- Built for AI agents. A docs MCP server, prebuilt Codex Skills for Claude / Cursor / Codex CLI, and pay-per-query access via MPP.
AI migration prompt
Most Serialized integrations span dozens of call sites: a price service here, a chart loader there, a Pulse column, a websocket handler. Hand the prompt below to an IDE agent (Claude Code, Cursor, Codex CLI, or similar), run it from the repo root, and it will discover every Serialized touchpoint, propose a plan, and execute the migration with your approval.Getting help
- Browse the API Reference for the full schema.
- Skim the Recipes for end-to-end examples that solve specific product problems.
- Ask in our community if you hit a wall during migration.