HADRON
ARC TESTNET

HADRON Developer Surface

Developer API for market queries and signed trading workflows

A lightweight REST interface for partners that need to inspect RWA instruments, order depth, and settlement activity while keeping transaction authority at the wallet or signed-transaction layer.

Read-only query APIs are live
Trading APIs require issued keys

Access

Team-issued keys, no public signup

API keys are issued directly by the HADRON team.
No public application flow is exposed in the product.
Every trading action remains bound to wallet authorization or a signed chain transaction.
Authorization: Bearer hadron_live_xxx
X-Hadron-Client: partner-desk
Content-Type: application/json

REST surface

Query first, trade with explicit signatures

GET/v1/assets

Asset catalog

List tokenized RWA instruments, issuers, categories, share scale, and current offering state.

GET/v1/orders/listings

Sell-side listings

Query active sell orders by token, seller, price range, or remaining share amount.

GET/v1/orders/bids

Buy-side bids

Query active buy orders by token, bidder, price range, or remaining share amount.

GET/v1/trades

Trade tape

Read primary sales, listing fills, bid fills, cancellations, and settlement transaction hashes.

POST/v1/trades/broadcast

Signed transaction broadcast

Broadcast caller-signed raw transactions after partners prepare calldata and collect wallet authorization client-side.

Examples

Minimal request shapes

curl https://api.hadron.exchange/v1/orders/listings?tokenId=1 \
  -H "Authorization: Bearer hadron_live_xxx"
POST /v1/trades/broadcast
{
  "signedTx": "0x02f8...",
  "idempotencyKey": "desk-20260707-002"
}

Trading API

Practical order operations, still wallet-authorized

These endpoints are callable with a team-issued API key. Prepare routes return calldata and value; broadcast accepts only caller-signed raw transactions.

POST/v1/orders/listings/prepare

Prepare sell listing

Build market contract calldata for list(tokenId, amount, pricePerShare) after the caller confirms ERC-1155 approval requirements.

Request
tokenId, amount, pricePerShare, idempotencyKey
Returns
to, calldata, value, chainId, approvalRequired
POST/v1/orders/bids/prepare

Prepare buy bid

Build calldata and native USDC value for placeBid(tokenId, amount, pricePerShare) without moving funds server-side.

Request
tokenId, amount, pricePerShare, idempotencyKey
Returns
to, calldata, value, chainId
POST/v1/orders/listings/{listingId}/buy/prepare

Prepare listing purchase

Read the active listing, build buy(listingId, amount) calldata, and return the native USDC value required for the caller-signed transaction.

Request
amount, idempotencyKey
Returns
to, calldata, value, pricePerShare, chainId
POST/v1/orders/bids/{bidId}/fill/prepare

Prepare bid fill

Read the active bid, build fillBid(bidId, amount) calldata, and flag the holder-side ERC-1155 approval requirement.

Request
amount, idempotencyKey
Returns
to, calldata, value, pricePerShare, approvalRequired
POST/v1/orders/cancel/prepare

Prepare listing or bid cancellation

Build cancel(orderId) or cancelBid(orderId) calldata while preserving the same chain ownership rules as the app.

Request
orderType, orderId, idempotencyKey
Returns
to, calldata, value, chainId
POST/v1/trades/broadcast

Broadcast signed transaction

Submit an already signed raw transaction to Arc RPC. HADRON never receives or stores the caller private key.

Request
signedTx, idempotencyKey
Returns
txHash, status, explorerUrl
GET/v1/transactions/{txHash}

Transaction status

Check broadcast, pending, confirmed, or reverted state for a transaction hash plus decoded HADRON action metadata.

Request
txHash
Returns
status, confirmations, eventType, blockNumber
POST /v1/orders/listings/prepare
{
  "tokenId": "1",
  "amount": "1050",
  "pricePerShare": "1012500000000000000",
  "idempotencyKey": "desk-20260707-001"
}
{
  "to": "0xmarket...",
  "chainId": 5042002,
  "functionName": "list",
  "calldata": "0x...",
  "value": "0",
  "approvalRequired": true
}
POST /v1/orders/listings/{listingId}/buy/prepare
{
  "amount": "200",
  "idempotencyKey": "desk-20260707-002"
}
{
  "functionName": "buy",
  "calldata": "0x...",
  "value": "202500000000000000000",
  "pricePerShare": "1012500000000000000"
}

Error model

Small set of predictable failures

400 INVALID_ORDER

Malformed amount, price, token, listing, or bid input.

401 INVALID_API_KEY

Missing or disabled team-issued partner key.

409 NONCE_REPLAY

Duplicate idempotencyKey or already-used signed payload.

422 SIGNATURE_REQUIRED

Broadcast requires a caller-signed raw transaction.

429 RATE_LIMITED

Partner request budget exceeded; retry after the returned interval.