REST API reference
Full-node REST API for the Arrekta post-quantum, multi-asset blockchain.
Stability: v1 is frozen. Within v1 only additive changes are made (new optional fields, new endpoints); clients must ignore unknown fields. Hashes are lowercase hex; amounts are decimal strings of base units; errors are RFC 9457 problem+json with a stable code. Both node implementations (Rust and the Python reference) serve this contract.
Caching: every successful GET /v1/… response except the event stream carries a weak ETag; send it back in If-None-Match and an unchanged resource answers 304 Not Modified with no body.
| API | Arrekta Node API |
| Version | 1.0.0 |
| OpenAPI | 3.1.0 |
| Licence | MIT OR Apache-2.0 |
| Path prefix | /v1 (a breaking change would get a new prefix, see §15 Versioning) |
| Live schema | every node serves /openapi.json |
Default local base URL: http://127.0.0.1:28332 (regtest API port). Through the platform gateway the same routes are under /v1/* with an X-API-Key header.
Groups
| Group | Endpoints |
|---|---|
| Chain | 7 |
| Blocks | 4 |
| Transactions | 6 |
| Addresses | 3 |
| Assets | 4 |
| Mempool | 2 |
| Mining | 2 |
| Light Clients | 2 |
| Events | 1 |
| Network | 1 |
| Ops | 3 |
| Admin | 6 |
Conventions
- Amounts are decimal strings in base units (1 ARRK = 10⁸ base units), so they survive JSON number limits.
- Hashes are lowercase hex in natural byte order; Arrekta never byte-reverses hashes (merged-mining RPC values are the documented exception).
- Raw objects (transactions, blocks, checkpoints) are posted as hex in a
{"hex": …}body. - The merged-mining JSON-RPC endpoint
POST /rpcis not part of the OpenAPI document; see Merged mining for pools.
Error model
Errors are RFC 9457 problem details, media type application/problem+json, with a stable machine-readable code. Branch on code, never on title or detail.
{
"type": "https://docs.arrekta.com/errors/missing-inputs",
"title": "consensus rule violated",
"status": 422,
"code": "missing-inputs",
"detail": "…"
}Problem
RFC 9457 problem details (media type application/problem+json).
| Field | Type | Required | Notes |
|---|---|---|---|
code | string | yes | stable machine-readable code (PROTOCOL.md error codes) |
detail | string | no | |
status | integer | yes | |
title | string | yes | |
type | string | yes | URI reference identifying the problem type |
Unknown fields may be added within v1; clients must ignore them.
| Status | Meaning |
|---|---|
| 400 | bad encoding, bad hex, bad address |
| 401 / 403 | admin authentication (Bearer token) missing or wrong, admin disabled |
| 404 | block, transaction, asset or filter not found |
| 409 | rejected by node policy (mempool conflict, already known, fee too low) |
| 422 | consensus rule violated (the code is the rule's error code) |
| 429 | rate limited |
| 503 | node not ready |
Every code has a page in the error code reference, and the type URI resolves to it. The SDKs map problems to ArrektaError { status, code, title, detail } (see TypeScript errors and Python errors).