Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.quantumapi.io/llms.txt

Use this file to discover all available pages before exploring further.

The Qustody API is a non-custodial orchestration layer. It manages transaction lifecycle, policy enforcement, and event delivery, but never holds private keys.

Non-custodial signing model

Unlike traditional custodial solutions, the Custody API delegates all signing to your infrastructure. This means:
  • You control the keys. Post-quantum private keys live in your HSM, secure enclave, or key management system
  • The API orchestrates. It creates transactions, enforces policies, and broadcasts signed transactions to the Quantum Chain network
  • Signing is a callback. When a transaction needs signing, you retrieve the payload, sign it externally, and submit the signature back

Transaction lifecycle

Every transaction moves through a deterministic state machine of 14 states. The diagram below shows the most common transitions; see Transaction state machine for the full table.
StateDescription
SUBMITTEDAccepted; awaiting policy and screening evaluation
QUEUEDHeld briefly because of an idempotency conflict or rate limit
PENDING_AUTHORIZATIONAwaiting manual approval per policy
PENDING_AML_SCREENINGCompliance screening in flight
APPROVEDAuthorization granted, transitioning to signing
PENDING_SIGNATUREReady for external post-quantum signature
SIGNEDSignature received and verified
BROADCASTINGSubmitted to Quantum Chain nodes
CONFIRMINGIncluded in a block, waiting for confirmation depth
COMPLETEDConfirmed with sufficient block depth
FAILEDTransaction reverted, broadcast failure, or invalid signature
REJECTEDDenied by policy or approver
CANCELLEDCancelled before signing or broadcasting
BLOCKEDCompliance screening flagged or blocked the transaction

Request flow

A typical transfer follows this sequence:
1

Create transaction

Your application calls POST /v1/transactions with source, destination, and amount. The API validates the request and runs it through the policy engine.
2

Policy evaluation

Configured policies are evaluated: spending limits, whitelist/blacklist checks, approval requirements, and time windows. If a policy requires approval, the transaction moves to PENDING_AUTHORIZATION.
3

Retrieve signing payload

Call GET /v1/transactions/{id}/signing_payload to get the unsigned transaction digest as a hex-encoded byte array.
4

Sign externally

Sign the digest with your post-quantum private key using your key management solution.
5

Submit signature

Call POST /v1/transactions/{id}/signature with the base64-encoded signature and the signer’s public key. The API verifies the signature before accepting it.
6

Broadcast and confirm

The API broadcasts the signed transaction to the Quantum Chain network via the node pool and tracks confirmation depth.
7

Webhook notification

Status change events are delivered to your registered webhook endpoints with HMAC-SHA256 signatures.

System components

ComponentRole
API ServerHTTP handlers, authentication, rate limiting
Policy EnginePre-broadcast rule evaluation and enforcement
Node PoolManages multiple Quantum Chain RPC connections with failover
Deposit MonitorWatches for inbound transfers to registered wallets
Confirmation TrackerMonitors block depth for pending transactions
Webhook DispatcherDelivers events with HMAC signing, retry, and dead-letter
Recovery WorkerRe-processes stuck transactions after restarts
Idempotency CleanupPrunes expired idempotency keys

Multi-tenancy

The API supports multiple tenants with full isolation:
  • Each tenant has its own API credentials, vaults, wallets, policies, and webhook endpoints
  • Cross-tenant access is prevented at the middleware layer
  • Tenant context is extracted from the API key and propagated through all service calls

Post-quantum signatures

Quantum Chain uses a post-quantum digital signature scheme offering security equivalent to ~192-bit classical cryptography:
PropertyValue
Security~192-bit classical equivalent
Digest size32 bytes
The API verifies signatures server-side before broadcasting to ensure only valid transactions reach the network.