POST /submit enqueues a signed transaction for processing, GET /tx retrieves a single transaction by hash, and GET /txs returns paginated address history. Together they cover the full lifecycle of an L2 transaction from submission through confirmation.
These endpoints are available on full (monolith) nodes.
POST /submit is also served by api-role nodes in horizontally scaled deployments. If you are connecting to a public api-role endpoint, /tx and /txs may not be reachable — use the full node URL for read operations.POST /submit — Submit an L2 Transaction
Submit a fully built and signed transaction to the Sundial L2 processing queue. The node reads the raw CBOR hex from the request body, validates it, and enqueues it for mempool insertion.Request
Example
Responses
- Success (200)
- Invalid CBOR (400)
- Enqueue Failure (500)
id field is a Redis stream entry ID, not a transaction hash. Compute the transaction hash client-side from the CBOR if you need it for tracking:Processing Pipeline
After a successful enqueue, a background worker pool picks up the transaction from the Redis stream and:1
Batch claim
Workers claim batches from the Redis consumer group, automatically reclaiming stale-pending entries.
2
Parse
Each CBOR hex string is parsed into an L1 transaction in a worker-thread pool.
3
Validate
The transaction hash is computed, spent inputs and produced outputs are extracted, and the transaction is validated — including a minimum fee check against
minFeeA: 44 and minFeeB: 155381.4
Insert
Valid transactions are inserted into the mempool ledger and the stream entry is acknowledged. Invalid transactions are rejected and dead-lettered after the configured maximum delivery attempts — they do not affect other in-flight submissions.
Building a Transaction for Submission
The node has no transaction-building endpoint — you must build and sign the transaction yourself before callingPOST /submit. Use a custom Provider that sources UTxOs from GET /utxos and routes submission to POST /submit:
Standard Lucid providers (Blockfrost, Kupmios, Maestro) talk to L1 — they are unaware of the Sundial L2 ledger. Always use a custom provider that routes UTxO lookups to
GET /utxos and submission to POST /submit.GET /tx — Look Up a Transaction
Retrieve the raw CBOR of a single transaction by its hash. The node searches the mempool first, then immutable (confirmed) storage.Query Parameters
string
required
The 64-character hex transaction hash to look up. Must be a valid hex string of exactly 64 characters.
Example
Responses
- Success (200)
- Not Found (404)
- Invalid Hash (400)
tx field contains the full CBOR-encoded transaction as a hex string. Decode it with any CML-compatible library.GET /txs — Query Address Transaction History
Return a paginated list of transaction CBORs for a given address, sourced from the L2 address history database.Query Parameters
string
required
Bech32 address. On testnet this must start with
addr_test1. The address must parse successfully and carry a valid payment credential.integer
Maximum number of results to return. Defaults to
100. Values above 500 are silently clamped to 500. Must be a non-negative integer ≥ 1 if supplied.integer
Zero-based offset for pagination. Defaults to
0. Must be a non-negative integer if supplied.Example
Responses
- Success (200)
- Invalid Address (400)
- Invalid Pagination (400)
txs is a hex-encoded CBOR transaction. The hasMore field is true when exactly limit rows were returned, indicating additional pages may exist. Fetch the next page by incrementing offset by limit.