Skip to main content
DAG L1 transactions are the primary mechanism for transferring $DAG tokens between addresses. Transactions are submitted to an L1 node, validated, assembled into blocks, and eventually finalized in a global snapshot.
All endpoints return the following response headers:
  • X-Id — The node’s public key identifier
  • X-Session-Token — The current cluster session token
  • Request-Signature — Cryptographic signature of the response for verification
Building a valid transaction: Each transaction must reference its parent — the previous transaction from the same source address. Use GET /transactions/last-reference/{address} to retrieve the correct parent.hash and parent.ordinal before constructing a new transaction. The new transaction’s ordinal must be exactly parent.ordinal + 1.

POST /transactions

Submits a signed $DAG transaction for processing. If accepted, the transaction enters the node’s mempool and will be included in the next block.
curl -X POST https://<node-host>:9010/transactions \
  -H "Content-Type: application/json" \
  -d '{
    "value": {
      "source": "DAG3hZTBgtb2iH9ZdLNvaKqPT4ZncCuW6uYxZack",
      "destination": "DAG2rMPHX4w1cMMJowmewRMjD1in53yRURt6Eijh",
      "amount": 100000000,
      "fee": 0,
      "parent": {
        "hash": "",
        "ordinal": 0
      },
      "salt": 6018762703199813000
    },
    "proofs": [
      { "id": "<public-key-hex>", "signature": "<ecdsa-der-hex>" }
    ]
  }'
Request bodySignedTransaction
value
object
required
The transaction payload
proofs
array
required
Array of cryptographic signature proofs. Must be signed by the source address owner.
Response 200 OK
hash
string
Hash of the accepted transaction. Use this to look up the transaction status via GET /transactions/{hash}.
Example response:
{
  "hash": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234567890"
}
Response 400 Bad Request The transaction was rejected. The error response includes one of the following rejection reasons:
errors
array

GET /transactions/

Returns the current view of a $DAG transaction in the L1 mempool for the given hash. Only transactions currently in the mempool are returned — once a transaction is included in a block and a global snapshot, this endpoint returns 400.
curl https://<node-host>:9010/transactions/a1b2c3d4e5f6789012345678901234567890
hash
string
required
The transaction hash (hex-encoded SHA-256)
Response 200 OK
transaction
object
The full transaction data (see Transaction schema in POST /transactions)
hash
string
The transaction hash
status
string
Current status of the transaction in the mempool. Currently: Waiting
Example response:
{
  "transaction": {
    "source": "DAG3hZTBgtb2iH9ZdLNvaKqPT4ZncCuW6uYxZack",
    "destination": "DAG2rMPHX4w1cMMJowmewRMjD1in53yRURt6Eijh",
    "amount": 100000000,
    "fee": 0,
    "parent": { "hash": "", "ordinal": 0 },
    "salt": 6018762703199813000
  },
  "hash": "a1b2c3d4e5f6...",
  "status": "Waiting"
}
Response 400 Bad Request No transaction with the given hash is found in the mempool. The transaction may have already been processed into a block, or the hash may be invalid.

GET /transactions/last-reference/

Returns the last accepted $DAG transaction reference for a given address. Always call this endpoint before constructing a new transaction to get the correct parent values.
curl https://<node-host>:9010/transactions/last-reference/DAG3hZTBgtb2iH9ZdLNvaKqPT4ZncCuW6uYxZack
address
string
required
DAG wallet address
Response 200 OK
ordinal
integer
Ordinal of the last accepted transaction. Use ordinal + 1 as your new transaction’s parent ordinal.
hash
string
Hash of the last accepted transaction. Use this as your new transaction’s parent.hash. Returns empty string "" for addresses with no prior transactions.
Example response:
{
  "ordinal": 15,
  "hash": "a1b2c3d4e5f6789012345678901234567890"
}

Build docs developers (and LLMs) love