Skip to main content
SQD offers three ways to consume blockchain data: the Portal API, the Pipes SDK, and the Squid SDK. This page gives you a default recommendation, shows the same task implemented with each tool, and ends with a feature matrix for the details.

Which tool should I use?

  • Portal API: use the Portal API when you work in any language other than TypeScript, or when you want raw data with zero dependencies. It is plain HTTP: no SDK, no API key required to start.
  • Pipes SDK: recommended for new TypeScript indexers that write to your own database or warehouse. It decodes events for you and includes ready-made targets for ClickHouse, PostgreSQL, BigQuery, and Parquet.
  • Squid SDK: use the Squid SDK when you want a batteries-included framework that serves a GraphQL API from PostgreSQL, or when you index Substrate, Fuel, or Starknet networks. The Squid SDK is stable, fully supported, and actively developed.
At a glance: In short: pick the Portal API for language freedom, the Pipes SDK for TypeScript pipelines into your own store, and the Squid SDK for a GraphQL-served PostgreSQL backend.

How the tools relate

The Portal serves raw, server-side-filtered blockchain data over HTTP; the Pipes SDK and the Squid SDK both consume the Portal and add decoding, transformation, and persistence on top.
Portal data flow showing raw blockchain data being transformed by SDK and stored in your database
Both SDKs use the Portal internally. When you use an SDK, you are still accessing blockchain data through the Portal. The SDK adds decoding, type safety, batching, and database persistence.
The Ponder + Portal integration (beta) routes Ponder historical backfills through the SQD Portal while realtime stays on your RPC. In the published Euler V2 benchmark, the Portal path completed the full Ethereum history in 1,819 seconds, 3.6x faster than the 6,543-second stock Ponder run over a metered RPC endpoint on the same host.

The same task with each tool

All three examples below fetch USDC Transfer logs on Ethereum mainnet. Every snippet was tested against the live Portal and the published packages in July 2026.

Portal API

Send an HTTP request, get one JSON line per block back. Works from any language.
The response is newline-delimited JSON: one object per block, containing only the fields you asked for.
From here, decoding the ABI-encoded topics and data is your job. That is the trade-off for language freedom. See the Portal API quickstart for pagination, real-time streaming, and more.

Pipes SDK

The Pipes SDK turns the same query into a typed stream of decoded events. commonAbis includes a ready-made ERC20 ABI, so no typegen step is needed here:
In a real project you would replace createTarget with a built-in target such as PostgreSQL via Drizzle, ClickHouse, BigQuery, or Parquet, which also persists the cursor and rolls back reorganized blocks for you (the ClickHouse target needs a one-line onRollback callback). The Pipes SDK quickstart scaffolds a complete project, including the database, in one command.

Squid SDK

The Squid SDK is schema-first: you define entities in schema.graphql, and the framework generates the models, the migrations, and a GraphQL API. The processor fills PostgreSQL:
Start with the Squid SDK quickstart. Note that its template currently shows the equivalent EvmBatchProcessor API rather than the newer @subsquid/evm-stream data source used above. Existing squids that read from v2.archive.subsquid.io gateways should follow the gateway-to-Portal migration guide: self-hosted squids on gateway endpoints require API keys since May 19, 2026 (SQD Cloud deployments are unaffected), while Portal-based squids need no RPC endpoint or finality configuration.

When to choose each tool

Choose the Portal API when

  • You work in Python, Go, Rust, or any language other than TypeScript.
  • You are filling a data warehouse or lake (ClickHouse, BigQuery, Snowflake) with your own ingestion tooling.
  • You want to prototype a query in minutes with zero dependencies.
  • You need full control over every byte you download. The Portal filters server-side, so you only receive the fields you request.
The trade-off: you decode ABI data, track your own progress cursor, and handle chain reorganizations yourself.

Choose the Pipes SDK when

  • You are starting a new TypeScript indexer and want decoded, typed data with minimal ceremony.
  • Your data belongs in ClickHouse, PostgreSQL, BigQuery, or Parquet files. The built-in targets persist cursors and roll back reorganized blocks automatically.
  • You want to embed indexing into an existing application or microservice rather than run a separate framework process.
  • You need factory-contract tracking (for example Uniswap pools), Prometheus metrics, or portal response caching, all included.
The trade-offs: the Pipes SDK does not include a GraphQL API, and it currently supports EVM, Solana, Bitcoin, Tron, and Hyperliquid networks, but not Substrate, Fuel, or Starknet.

Choose the Squid SDK when

  • You are building a dApp backend and need a GraphQL API. It is generated from your schema, with pagination and filtering included.
  • You prefer a schema-first workflow: entities, migrations, and TypeScript models are all generated for you.
  • You index Substrate, Fuel, or Starknet networks, which the Pipes SDK does not cover.
  • You deploy to SQD Cloud with sqd deploy and want managed hosting, monitoring, and scaling.
The trade-offs: it is a heavier, more opinionated framework than the Pipes SDK, and its primary store is PostgreSQL (CSV/JSON/Parquet/S3 and BigQuery stores exist for analytics use cases).

Pipes SDK vs Squid SDK: feature reference

Legend: โœ… built in ยท ๐ŸŸก partial or manual ยท โŒ not included ยน Built-in targets roll back reorganized blocks automatically; the ClickHouse target needs a one-line onRollback callback, and fully custom targets implement fork handling themselves. In short: the Pipes SDK is the lighter, embeddable toolkit, with no GraphQL layer and self-hosted deployment. The Squid SDK is the stable full framework with a generated GraphQL API and one-command SQD Cloud deployment. For the reasoning behind the Pipes SDKโ€™s design, see Why Pipes SDK?. Coming from The Graph? See Squid SDK vs The Graph.

Next steps

Try the Portal API

Run your first query in minutes with plain HTTP

Try the Pipes SDK

Scaffold a pipeline that indexes into your database

Try the Squid SDK

Build an indexer with a generated GraphQL API

Use Ponder + Portal

Back an existing Ponder app with the Portal (beta)