Available routes:
| Method | Path | Description | Request | Response |
|---|---|---|---|---|
| GET | /health |
Health check | None | {"status": "ok"} |
| GET | /ready |
Readiness check | None | {"status": "ready"} |
| GET | /tx/:txid |
Get transaction status by txid | Path param: txid | {"txid", "txStatus", "status", "timestamp", "blockHash", "blockHeight", "merklePath", "extraInfo", "competingTxs"} |
| POST | /tx |
Submit a transaction | application/octet-stream (raw), text/plain (hex), or JSON {"rawTx": "<hex>"} | {"status": "submitted"} (202 Accepted) |
| POST | /txs |
Submit a batch of transactions | application/octet-stream (concatenated raw tx bytes) | {"submitted": N} (200 OK) |
| POST | /api/v1/merkle-service/callback |
Receive callbacks from Merkle Service | JSON CallbackMessage with type field. Bearer token auth required (Authorization: Bearer <callback_token>). | 200 OK |
| GET | /events |
Stream transaction status updates as Server-Sent Events. Optional ?callbackToken filters to txids registered under that token. Last-Event-ID header (nanosecond timestamp) replays missed events. | Optional query: callbackToken. Optional header: Last-Event-ID. | text/event-stream — frames: id, event: status, data: {txid, txStatus, timestamp} |