Arweave · Schema

Arweave Transaction

An Arweave transaction object for submitting data storage or AR token transfers to the network. Use format=2 for v2 transactions which support large data uploads via chunked transfers. All token amounts are denominated in winstons (1 AR = 10^12 winstons).

Decentralized StorageBlockchainPermawebWeb3Data StorageGraphQL

Properties

Name Type Description
format integer Transaction format version. Use 2 for new transactions. ECDSA accounts require format=2.
id string Transaction ID — the Base64URL-encoded SHA-256 hash of the signature.
last_tx string Block hash or ID of the prior outgoing transaction from this wallet. Use an empty string for the first transaction from a wallet.
owner string RSA public key modulus (Base64URL encoded). Empty string for ECDSA accounts.
tags array Array of Base64URL-encoded name-value tag pairs. Maximum combined size is 2048 bytes.
target string Recipient wallet address for AR token transfers (Base64URL encoded). Empty string if no token transfer.
quantity string Amount of AR to transfer expressed in winstons. Use '0' for data-only transactions.
data_root string Merkle root of the data chunks (Base64URL encoded). Required for format=2 chunked uploads. Empty string for inline data.
data_size string Total size of the data payload in bytes as a string. Used in format=2 transactions.
data string Base64URL-encoded inline data payload. Maximum 10 MiB for v1, ~12 MiB for v2 inline. Use chunk uploads via POST /chunk for larger data.
reward string Transaction fee in winstons as a numeric string. Obtain the minimum fee from GET /price/{bytes}/{target}.
signature string Cryptographic signature of the transaction. RSA-PSS with SHA-256 for RSA accounts (Base64URL encoded). 65-byte compact ECDSA signature for ECDSA accounts.
View JSON Schema on GitHub

JSON Schema

transaction.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/arweave/refs/heads/main/json-schema/transaction.json",
  "title": "Arweave Transaction",
  "description": "An Arweave transaction object for submitting data storage or AR token transfers to the network. Use format=2 for v2 transactions which support large data uploads via chunked transfers. All token amounts are denominated in winstons (1 AR = 10^12 winstons).",
  "type": "object",
  "required": ["format", "id", "last_tx", "owner", "reward", "signature"],
  "properties": {
    "format": {
      "type": "integer",
      "description": "Transaction format version. Use 2 for new transactions. ECDSA accounts require format=2.",
      "enum": [1, 2]
    },
    "id": {
      "type": "string",
      "description": "Transaction ID — the Base64URL-encoded SHA-256 hash of the signature."
    },
    "last_tx": {
      "type": "string",
      "description": "Block hash or ID of the prior outgoing transaction from this wallet. Use an empty string for the first transaction from a wallet."
    },
    "owner": {
      "type": "string",
      "description": "RSA public key modulus (Base64URL encoded). Empty string for ECDSA accounts."
    },
    "tags": {
      "type": "array",
      "description": "Array of Base64URL-encoded name-value tag pairs. Maximum combined size is 2048 bytes.",
      "items": {
        "$ref": "#/$defs/Tag"
      },
      "default": []
    },
    "target": {
      "type": "string",
      "description": "Recipient wallet address for AR token transfers (Base64URL encoded). Empty string if no token transfer.",
      "default": ""
    },
    "quantity": {
      "type": "string",
      "description": "Amount of AR to transfer expressed in winstons. Use '0' for data-only transactions.",
      "pattern": "^[0-9]+$",
      "default": "0"
    },
    "data_root": {
      "type": "string",
      "description": "Merkle root of the data chunks (Base64URL encoded). Required for format=2 chunked uploads. Empty string for inline data."
    },
    "data_size": {
      "type": "string",
      "description": "Total size of the data payload in bytes as a string. Used in format=2 transactions.",
      "pattern": "^[0-9]+$"
    },
    "data": {
      "type": "string",
      "description": "Base64URL-encoded inline data payload. Maximum 10 MiB for v1, ~12 MiB for v2 inline. Use chunk uploads via POST /chunk for larger data."
    },
    "reward": {
      "type": "string",
      "description": "Transaction fee in winstons as a numeric string. Obtain the minimum fee from GET /price/{bytes}/{target}.",
      "pattern": "^[0-9]+$"
    },
    "signature": {
      "type": "string",
      "description": "Cryptographic signature of the transaction. RSA-PSS with SHA-256 for RSA accounts (Base64URL encoded). 65-byte compact ECDSA signature for ECDSA accounts."
    }
  },
  "$defs": {
    "Tag": {
      "type": "object",
      "title": "Transaction Tag",
      "description": "A name-value metadata pair attached to a transaction. Both name and value are Base64URL encoded.",
      "required": ["name", "value"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Tag name (Base64URL encoded UTF-8 string)"
        },
        "value": {
          "type": "string",
          "description": "Tag value (Base64URL encoded UTF-8 string)"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}