# info.summary
Public proxy surface for the Helius demo at demo.helius.dev.

# info.description
These endpoints proxy to Helius infrastructure with a shared, server-held API key. For production use, get your own Helius key at https://dashboard.helius.dev/signup and use the Helius API directly. Canonical Helius API spec: https://docs.helius.dev/api-reference/openapi.json.

Versioning: URL-path strategy. /api/rpc and /api/v1/rpc are aliases of the same handler; /api/v2/* would ship a breaking change. Deprecated paths emit the RFC 9745 Deprecation header.

Idempotency: pass an Idempotency-Key header on POSTs to deduplicate retries (24h retention).

Pagination: cursor + limit on Enhanced and DAS list endpoints.

# servers[].description
Production demo (mainnet via Helius RPC)

# servers[].description
Production demo — explicit /v1 path prefix

# servers[].description
Devnet sandbox — same endpoints, devnet data

# tags[].description
API catalog and capability discovery endpoints.

# tags[].description
Solana JSON-RPC 2.0 proxy (mainnet + devnet).

# tags[].description
Bulk/batch dispatch — many requests in one HTTP call.

# tags[].description
Helius Enhanced Transactions REST API — parsed swaps, transfers, NFT events.

# tags[].description
Cursor + limit pagination on list endpoints.

# tags[].description
Real-time block / slot / transaction streaming via SSE.

# tags[].description
URL-path /v1 aliases (identical behavior to unversioned paths).

# components.securitySchemes.publicProxy.description
No authentication required — the demo proxy holds the upstream Helius API key server-side.

# components.securitySchemes.heliusApiKey.description
Helius API key obtained from https://dashboard.helius.dev/signup. Required when calling Helius directly (NOT this demo). Scoped keys can be issued with rpc:read, das:read, and laserstream:read scopes.

# components.parameters.IdempotencyKey.description
Client-generated idempotency token (UUID v4 recommended). The proxy caches the first response for 24h and replays it on retries with the same key — safe for sendTransaction and other mutations.

# components.parameters.Cursor.description
Opaque pagination cursor returned by the previous response. Omit on the first page.

# components.parameters.Limit.description
Maximum items to return per page (1–1000, default 100).

# components.parameters.Network.description
Network selector. `devnet` routes the request to Solana devnet, intended for non-production testing.

# components.schemas.JsonRpcRequest.properties.id.description
Client-chosen request identifier. Echoed back in the response. Null for notifications.

# components.schemas.JsonRpcRequest.properties.method.description
Solana RPC or Helius DAS method name. Restricted to the allowlist.

# components.schemas.JsonRpcBatch.description
JSON-RPC 2.0 batch — multiple requests in a single HTTP call. Responses returned as a matching array in the same order.

# components.schemas.JsonRpcBatchResponse.description
Response array matching the request batch order.

# components.schemas.EnhancedRequest.properties.params.properties.before.description
Cursor — fetch txns before this signature.

# components.schemas.EnhancedRequest.properties.params.properties.until.description
Cursor — fetch txns until this signature.

# components.schemas.EnhancedRequest.properties.params.properties.type.description
Filter by parsed transaction type (e.g. SWAP, TRANSFER, NFT_SALE).

# components.schemas.EnhancedResponse.properties.nextCursor.description
Pass back as `before` (or `cursor`) on the next request. Null when no more pages.

# components.schemas.AsyncJobAccepted.properties.callbackUrl.description
Optional webhook the proxy POSTs the final result to when the job completes.

# components.schemas.SseFrame.description
Server-Sent Events frame. Format: `event: <name>\ndata: <json>\n\n`. Event names include `slot`, `block`, `result`, `intent`, `done`.

# components.responses.RateLimited.description
Too many requests. Honor the `retry-after` header before retrying.

# paths./api.get.summary
List available API endpoints on this demo

# paths./api.get.description
Typed JSON catalog of all proxy endpoints, version aliases, pagination/idempotency policies, and async-job pattern. Intended for agents probing the surface before deciding which path to call.

# paths./api/rpc.get.description
Returns the allowed methods list, rate-limit policy, and links to documentation. Emits live x-ratelimit-* headers without consuming a token.

# paths./api/rpc.post.summary
Call a Solana JSON-RPC method via the demo proxy (single request)

# paths./api/rpc.post.description
Accepts a single JSON-RPC 2.0 request. For multi-request bulk dispatch use the JSON-RPC batch shape — documented as the separate operation `callRpcBatch`. The demo holds the Helius API key server-side, so callers do not authenticate. Methods are restricted to the allowlist; everything else returns -32005.

# paths./api/rpc.post.responses.400.description
Invalid request (parse error, missing method, invalid params).

# paths./api/rpc/batch.post.summary
Bulk dispatch a JSON-RPC 2.0 batch (array of requests) via the demo proxy

# paths./api/rpc/batch.post.description
Send a JSON array (1–100 requests) to dispatch them in a single HTTP round-trip. Responses return as a matching array in the same order. Same allowlist, same rate-limit, one token consumed per HTTP request regardless of batch size. /api/rpc/batch and /api/rpc are aliases — both accept either a single request object or an array of requests.

# paths./api/rpc/batch.post.requestBody.content.application/json.examples.twoCallBatch.summary
Get balance + epoch info in one round-trip

# paths./api/rpc/batch.post.responses.200.description
Array of JSON-RPC responses matching the request batch order.

# paths./api/v1/rpc.post.summary
/v1 alias of callRpc — identical behavior

# paths./api/v1/rpc.post.description
URL-versioned alias of /api/rpc. Use this path if your SDK or agent client requires a /v1/ path prefix to namespace versioned APIs. Behavior is identical to callRpc.

# paths./api/helius/enhanced.post.summary
Call a Helius Enhanced Transactions endpoint via the demo proxy

# paths./api/helius/enhanced.post.description
Proxies to https://api.helius.xyz Enhanced Transactions. Allowed endpoints: getTransactionsByAddress, getTransactions. Supports cursor pagination via `params.before` / `params.until` and per-page sizing via `params.limit`. The `nextCursor` field in the response is the cursor for the following page.

# paths./api/helius/enhanced.post.requestBody.content.application/json.examples.byAddress.summary
Parsed history for a wallet (first page)

# paths./api/helius/enhanced.post.requestBody.content.application/json.examples.paginatedPage2.summary
Continue from a previous page using `before` as cursor

# paths./api/helius/enhanced.post.responses.200.description
Parsed transactions plus optional pagination cursor.

# paths./api/helius/enhanced.post.responses.202.description
Async accepted — returned when a large backfill is queued via callbackUrl. Poll statusUrl or wait for the webhook callback.

# paths./api/jobs/{jobId}.get.description
Long-running operations (large transaction backfills, webhook delivery) return 202 Accepted with a jobId. Poll this endpoint to track progress, or set a callbackUrl on the original request to receive a push notification on completion.

# paths./api/laserstream.get.summary
Subscribe to real-time slot updates via Server-Sent Events

# paths./api/laserstream.get.description
Opens a long-lived SSE connection bridged to a Helius Laserstream WebSocket. Each event has the form `event: slot\ndata: { ... }`. Requires LASERSTREAM_API_KEY on the server (Helius Professional plan or above).

# paths./api/laserstream.get.responses.503.description
Laserstream not configured on this deployment.

# paths./api/laserstream/status.get.summary
Check whether Laserstream is configured on this deployment

# paths./ask.get.description
Documents how to POST a query to /ask and the available response formats.

# paths./ask.post.summary
NLWeb-compatible natural language search over the demo content

# paths./ask.post.description
Implements the NLWeb /ask conformance profile (https://github.com/microsoft/NLWeb). Accepts a JSON body with a `query` string and returns Server-Sent Events with schema.org-typed items found across the homepage, method pages, FAQ, and AGENTS.md. Pass `streaming: false` to receive a single application/ld+json ItemList instead.

# paths./ask.post.responses.200.description
Streamed JSON-LD items via SSE, or a typed ItemList when streaming=false.