Skip to main content
Updates and announcements will be posted here as they become available.
Check back for the latest news and updates from Raze.bot.

2026-07-19 — /utils/sol/* moved to History API

History API

  • Write utilities (transfer, burn, distribute, consolidate, launch, fees/claim, fees/config, agent/initialize) now live on https://api.raze.bot alongside /api/sol/* reads. Same paths and bodies as before.
  • Docs + OpenAPI moved under History → Utilities.

Trading API

  • router.raze.bot is swap / quote / buy / sell / instructions / perps only. Calls to https://router.raze.bot/utils/sol/* will 404 after the fleet cutover — point clients at api.raze.bot.

2026-07-15 — Perpetuals, executable swaps, and sendBundle tip policy

Trading API

  • Perpetuals are live. /perp/sol/* builds Jupiter Perps + Phoenix positions — markets, quote, order, close, tpsl, modify, cancel. Historical perp data ships under /api/sol/perp/* (fills, liquidations, positions, funding) with matching GraphQL resolvers.
  • Executable swaps. POST /swap/sol/instructions accepts serialize: true and returns an unsigned v0 transaction with feePayer set to your wallet, a fresh blockhash, and address-lookup tables resolved server-side — sign and send it directly. The same endpoint adds swapMode: exactOut and maxHops / includeDex / excludeDex route filters.
  • Utilities distribute, consolidate, and fees/config are implemented (previously stubs) and return real partially-signed transactions. The fees/claim pump.fun creator-fee path is live; the Meteora partner/creator path is still pending. The mixer endpoint has been removed.

Solana RPC

  • sendBundle no longer sponsors a Jito tip. Your bundle must include its own tip transaction to a Jito tip wallet or it is rejected (-32602). sendBundle also now requires a pro or enterprise entitlement (-32001), and the default transaction encoding is base64.
  • Rate limits are now documented: per API key, per minute — 60 (free) / 300 (pro) / 1000 (enterprise), each with a daily cap.

2026-06-02 — GraphQL batch token enrichment + typed topTokens

History API — GraphQL

  • topTokens now returns a typed TopTokensPage (not free-form JSON) with sort (VOLUME | TXNS), platform, and hours (1–168) — parity with REST GET /api/sol/tokens/top.
  • tokens(mints: [String!]!) — batch up to 500 mints; nested fields mirror REST enrichment (deploy, priceChanges, tradingVolume, metadata, holders, supply, sniperBundleStats, topTraders, ohlcv). Request only the fields you need.
  • Root shortcuts: tokenMetadata, tokenHolders, tokenSupply, topTraders, sniperBundleStats.
  • Live board queries: liveDeploys, liveMigrations, migratingDeploys.
  • searchTokens and stats return typed SearchToken / PlatformStats instead of opaque JSON.
Use the Trending board GraphQL example to replace multi-hundred REST fan-out on top-token pages (one HTTP round trip for leaderboards + enrichment). REST GET /api/sol/tokens/top documents the sort query parameter (volume | txns). References: GraphQL overview, GraphQL tokens.

2026-05-26 — Enriched trade fields + USDC-pool retrocompat fix

Streaming + History APIs

USDC-quoted Token-2022 pools (TRALALERO, Bank, others launching direct on PumpSwap with USDC as the pool’s quote) were emitting solAmount set to the priority-fee delta (~0.0001 SOL) and avgPrice in USDC/token units. The parser now detects aggregate-level USDC pools and:
  • Normalises solAmount and avgPrice into SOL units via the live SOL/USD price hook — old clients keep rendering price × supply correctly.
  • Drops the trade (rather than emitting wrong units) when the price hook hasn’t been set yet (early startup) — the trade reappears on the next price tick.
Additive enriched fields now ship on every trade payload — old clients ignore them; new clients can render the native pool quote directly: WS payload shape, REST /api/sol/tx/parse/{sig}, GraphQL Trade type, and raze.trades columns all updated 1:1. Pre-fix rows for USDC-quoted pools may be backfilled separately; filter by quoteSymbol != '' (or source != '') to restrict to post-fix rows in the meantime. References: GraphQL trades, AsyncAPI.

2026-05-23 — DexScreener “DEX Paid” event + enriched migration payload

Streaming API

  • New event type dex_paid on /ws/sol. Subscribe via either:
    • By event type: {"action": "subscribe", "subscriptions": ["dex_paid"]} — receive every newly-paid Solana mint.
    • By mint: {"action": "subscribe", "tokenMint": "<mint>"} — receive a dex_paid event for that mint alongside trades and other events.
    The payload carries the full DexScreener profile (url, icon, header, description, links[]) so clients can render the badge and project socials without a follow-up REST call. Source: DexScreener’s public /token-profiles/{latest,recent-updates}/v1 WS, filtered to chainId=solana on the streaming bridge. Status is monotonic — once true for a mint, never demoted. See the Streaming API reference for the full schema.
  • The existing migration event payload is now documented in full — data.platform, data.mint, data.quoteMint, data.pool, data.poolDex, data.slot, data.signature, plus the delay-0 reserves data.baseReserve / data.quoteReserve. The broadcaster already coalesces pump.fun’s Complete+Migrate pair into one event per (mint, kind) inside a 2-second window, so consumers see a single migration per token.

History API

  • GET /api/sol/tokens/metadata/{tokenMint} now returns metadata.dexPaid (boolean, nullable) and metadata.dexscreenerUrl (string, nullable):
    • dexPaid: true — the team paid for DexScreener Enhanced Token Info.
    • dexPaid: false — confirmed not paid (resolved via DexScreener /orders).
    • dexPaid: null — the backend hasn’t resolved this mint yet; an on-demand check is enqueued in the background, and the next call returns the answer.
    • dexscreenerUrl — present when the live WS feed has delivered a profile URL for this mint (always populated for tokens that became paid while the streaming bridge was running).
    The backend rate-limits its DexScreener /orders calls well under the 60 req/min ceiling, so you cannot trip the upstream limit by hitting this endpoint hard.