Skip to main content
Railnet indexes its contracts and exposes the indexed state as a read-only GraphQL API. Use it to display balances, track deposits and redeems through the STEAM lifecycle, and build dashboards without running your own indexer.

Endpoint

The API is read-only and currently unauthenticated — send a GraphQL query as an HTTP POST.
This is the staging endpoint. The production endpoint will be provided when available.

Open in Apollo Sandbox

Run these queries against the live endpoint in your browser — with schema autocomplete and docs.

Query conventions

The API follows Hasura’s argument and filter grammar, not the subgraph conventions used by The Graph.

Root fields

Each entity gets two root fields, named exactly like the entity type in PascalCaseVehicle, Query, Conduit. There is no pluralized or camelCase alias.
GraphQL
Entity IDs are deterministic and chain-scoped (for example 8453_contract_0x6eea217d…). Prefer filtering on address or owner over reconstructing an ID.

Filtering

where accepts one input object per entity, with a key per scalar field, per relationship, and the boolean combinators _and, _or, _not.
Addresses are stored lowercase. Filter them with _ilike so a checksummed address from a wallet or block explorer still matches: where: { address: { _ilike: $address } }.
Relationships are filterable, so you can select through the graph instead of chaining round-trips:
GraphQL

Sorting and pagination

order_by takes an object (or a list of objects for multi-key sorts) with asc or desc, and nested relationships are sortable. limit and offset work as expected; for large result sets, prefer passing the last id you saw as a cursor.
GraphQL

Value types

GraphQL
Variables

Core entities

These are the entities you need for balances, product state, and operation tracking. The schema covers considerably more — engines, queues, roles, fees, and automation — which you can explore through introspection.

Vehicle

Every yield source and strategy is a Vehicle row.

Query

One row per STEAM query — the unit of every deposit and redeem. id is the on-chain query id. state is updated in place, so the row always reflects the current state. SETTLED and REJECTED are terminal — treat everything else as in-flight. See the STEAM standard for the state machine.

Balance

Share balance of one holder in one vehicle: owner, value (18 decimals), vehicle.

Conduit

A distribution channel wrapping a vehicle with its own ERC-20 share token.

ConduitQuery and ConduitBalance

Example queries

Vehicle overview

GraphQL

Conduit overview

GraphQL

Holder position across vehicles and conduits

GraphQL

One query’s current state

GraphQL

In-flight queries for a vehicle

GraphQL
Variables

Indexer health

Check sync progress before trusting a result as current.
GraphQL
sourceBlock - progressBlock is the indexing lag in blocks. isReady: false means the indexer is still backfilling and rows are incomplete.

Explore the schema

The endpoint has introspection enabled, so any GraphQL client can discover entities and fields beyond the core set above. It does not serve a browser playground itself — use the Apollo Sandbox link for that.
GraphQL

Next steps

Integrate a Conduit

Combine on-chain calls with indexed data to build an earn experience.

STEAM standard

The state machine behind Query.state and Query.mode.