Skip to main content
The Sundial node exposes an unversioned, RPC-style HTTP API that lets you submit transactions to the L2 mempool, query UTxO and transaction history, inspect block data, and monitor node health — all without any API key or authentication for public endpoints. The testnet node is available at https://rpc.testnet.sundialprotocol.com.

Base URL

All paths in this reference are relative to this base URL. There is no /v1 or versioning prefix — endpoints are served at the root.

API Style

The Sundial node API is RPC-style HTTP, not REST. Endpoints are named after operations rather than resources, and their HTTP methods (GET vs POST) reflect implementation details rather than strict REST semantics. Two notable examples:
  • GET /commit and GET /merge are side-effecting even though they use GET.
  • POST /submit accepts a raw hex string as its body, not a JSON object.

Authentication

Public read and submission endpoints require no authentication. The POST /faucet/claims endpoint requires a static bearer token (Authorization: Bearer <FAUCET_API_KEY>) — this is a server-to-server endpoint and is not intended for direct end-user access.
No endpoint other than POST /faucet/claims performs authentication or rate-limiting at the application layer. On testnet there are no rate limits enforced on public endpoints. Do not expose the node directly to the public internet without an external proxy in production environments.

Request Format

Most endpoints accept a JSON body with Content-Type: application/json. The exception is POST /submit, which takes the raw hex-encoded CBOR transaction as a plain text body:
Query parameters are used for all GET endpoints.

Response Format

All endpoints return JSON responses. The POST /submit success response carries a Redis stream entry ID, not a transaction hash — compute the hash client-side from the CBOR if you need it.

Error Handling

Most unexpected failures return a generic 500 response:
Validation errors return 400 with a descriptive message, and not-found conditions return 404. The faucet endpoint returns structured error objects with a stable code field rather than generic messages — see the Faucet API page for the full error code table.

Endpoint Summary

The table below lists all 17 endpoints on the full (monolith) node. The Router column shows which deployments serve each endpoint: full means any node running NODE_ROLE=all (the default); api means it is also served by NODE_ROLE=api nodes used in horizontally scaled public deployments.
/init, /commit, /merge, /reset, /logBlocksTxsDB, and /logGlobals are operator and debug endpoints. They mutate node or on-chain state and are not intended for general application use. /reset is destructive and not available on api-role nodes.

Quick Start

Run a liveness check to confirm the node is reachable:
A healthy node responds immediately with:
For a deeper readiness check — which validates the database, Redis, and the L1 provider connection — use the ready endpoint:
A fully ready node returns:
If any dependency is unavailable, the response is 503 with a failing array identifying the affected subsystems.

Explore the API

Transactions

Submit transactions to the L2 mempool, look up individual transactions, and query address history.

UTxOs

Fetch spendable unspent outputs for any address on the Sundial L2 ledger.

Blocks

Query block data by header hash and inspect the state queue committed to L1.

Faucet API

Claim testnet ADA programmatically for automated testing and CI pipelines.