Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.aura.markets/llms.txt

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

Aura is non-custodial — the API never holds private keys. Endpoints under /v1/tx/* return an unsigned transaction that the caller must sign with its own wallet (passkey, mobile wallet, hardware wallet, etc.) and submit to an Alephium node.

Anatomy of a build-tx response

Every /v1/tx/* endpoint returns the same shape:
{
  "unsignedTx":         "00010001...",
  "txId":               "abc123...",
  "fromGroup":          0,
  "toGroup":            0,
  "gasAmount":          20000,
  "gasPrice":           "100000000000",
  "collateralRequired": "666250000000000000",
  "attoAlphAmount":     "1000000000000000",
  "tokens": [
    { "id": "<usdt-id>", "amount": "666250000000000000" }
  ]
}
FieldDescription
unsignedTxHex-encoded unsigned transaction. Pass directly to your wallet’s signUnsignedTx helper.
txIdThe txId your wallet should produce after signing. Useful for client-side optimistic UI.
fromGroup / toGroupAlephium shard groups.
gasAmount, gasPriceGas estimate for the transaction.
collateralRequiredUSDT (or other token) that will be locked by the tx — useful for pre-flight balance checks.
attoAlphAmountALPH locked by the tx (covers gas + on-chain deposits; auto-swapped from USDT in most cases).
tokens[]Tokens locked by the tx, with raw amounts.

End-to-end example: place a limit order

1

Build the unsigned tx

curl -X POST https://api.aurabets.io/v1/tx/markets/<market-address>/orders \
  -H 'authorization: Bearer aura_live_xxx' \
  -H 'content-type: application/json' \
  -d '{
    "signerAddress":   "1Cef...",
    "signerPublicKey": "0233...",
    "side":            "buy",
    "outcome":         "yes",
    "price":           650,
    "quantity":        "1000000000000000000"
  }'
2

Sign with your wallet

import { web3 } from '@alephium/web3'

const signed = await wallet.signUnsignedTx({
  signerAddress,
  unsignedTx: response.unsignedTx,
})
3

Submit to any Alephium node

const submitted = await nodeProvider.transactions.postTransactionsSubmit({
  unsignedTx: response.unsignedTx,
  signature:  signed.signature,
})

console.assert(submitted.txId === response.txId)
Most wallets bundle the sign + submit step into a single signAndSubmitUnsignedTx helper.

Why this pattern?

Custodial APIAura API
You hand over your key (or sign in to a custodian).Your wallet signs locally; the API only constructs the tx.
Custodian can freeze, censor, or drain.Aura cannot move your funds — at all.
Single point of failure.Aura can go down without affecting your wallet.
This pattern is identical to how Polymarket, Hyperliquid, and other non-custodial trading platforms expose their write paths.

Build-tx endpoints (by domain)

DomainEndpoint prefix
OrdersPOST /v1/tx/markets/{address}/orders
Order cancelDELETE /v1/tx/markets/{address}/orders/{id}
VaultPOST /v1/tx/vault/{deposit,unlock,withdraw}
OraclePOST /v1/tx/oracle/{submit,dispute,commit,reveal}
VotingPOST /v1/tx/voting/vote
ProposalsPOST /v1/tx/proposals/{single,linked,parlay}
See the API Reference → Endpoints tab for the full request/response schema of each.