Skip to main content
Serialized and Codex cover a similar problem space: real-time token, pool, trade, holder, and wallet data for trading apps across Solana and EVM chains. Serialized’s endpoints map cleanly onto Codex queries and subscriptions, and most of your integration has a direct equivalent. This guide maps every Serialized endpoint and stream to its Codex query, subscription, or webhook, shows working side-by-side examples for the most common patterns, and ends with a copy-paste prompt you can hand to an LLM to migrate the rest of your codebase.

Mental model

Serialized is a REST API at https://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/token and POST /v1/token become one tokens or filterTokens query 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.
If you’ve never used GraphQL, Learn GraphQL is a 10-minute primer that’s enough to follow the rest of this guide.

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 an Authorization 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
For browser-facing apps, generate a short-lived JWT with 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 a POST 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, 5s5S, 15s15S, 30s30S, 1m1, 5m5, 15m15, 30m30, 1h60, 4h240, 12h720, 1d1D, 1w7D. 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.
Pulse’s 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.
filterTokens has a real-time twin: onFilterTokensUpdated pushes the live, re-ranked result set for a filter as the market moves, so a Pulse column or trending board stays current without polling. Serialized has no streaming equivalent for Pulse or the screener.

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 from GET /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

Codex takes a 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

Serialized’s 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.
For per-token positions with entry price and realized / unrealized PnL (Serialized’s 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 at wss://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 / dexPaid fields 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-tokens aggregate read). Codex lists every token a wallet created via filterTokens(filters: { creatorAddresses }) and exposes tokensCreatedCount / tokensMigratedCount on 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, .sol on /v1/wallet/profile). Codex exposes a resolved displayName and social handles but does not return the underlying name records separately.
  • Wash-trade flags (isWash on trades). No Codex equivalent. Codex exposes tradeSource and maker labels instead.
  • Pool-level top traders and sparklines (/v1/pool/top-traders, /v1/pools/sparklines). Codex ranks traders and builds sparklines per token; use getBars on the pool for a pool-scoped series.
  • Native coin price list (/v1/prices/native). Query the wrapped native token per network through getTokenPrices.

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 networkId argument. 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. filterTokens filters and ranks across 100+ attributes and does phrase search. It replaces Pulse, the screener, and search, and its subscription twin onFilterTokensUpdated streams the same re-ranked list live, which Serialized has no equivalent for.
  • Multi-timeframe stats in a single call. getDetailedTokenStats and getDetailedPairStats return 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 filterPredictionEvents and 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. filterWallets queries for wallets matching PnL, win-rate, or volume criteria across all networks, not just for a single token.
  • Trade source attribution. tradeSource on events and tradeSourceIds on wallets tell you which terminal or wallet app originated a swap.
  • Liquidity locks. liquidityLocksV2 surfaces 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.
Pair this prompt with our Codex Skills and docs MCP server so the agent can look up Codex queries on demand instead of guessing at field names.

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.
Last modified on September 10, 2026