Arweave Transactions API

Endpoints for submitting and retrieving transactions

OpenAPI Specification

arweave-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Arweave HTTP Node Transactions API
  description: 'The core Arweave node REST API for submitting and retrieving transactions, uploading data chunks, querying wallet balances, fetching blocks, and inspecting network state. Requests target any Arweave node on port 1984 (default gateway arweave.net). Amounts are denominated in winstons (1 AR = 10^12 winstons).

    '
  version: 1.0.0
  contact:
    name: Arweave Team
    url: https://www.arweave.org/
    email: team@arweave.org
  termsOfService: https://www.arweave.org/legal/terms-of-use
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://arweave.net
  description: Arweave public gateway
- url: http://localhost:1984
  description: Local Arweave node (default port 1984)
tags:
- name: Transactions
  description: Endpoints for submitting and retrieving transactions
paths:
  /tx:
    post:
      operationId: submitTransaction
      summary: Submit a transaction
      description: 'Submit a new signed transaction to the Arweave network. Transactions can transfer AR tokens, store data, or both. Use format=2 for v2 transactions which support large data via chunked uploads. The reward field must be in winstons obtained from the /price endpoint.

        '
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Transaction'
            example:
              format: 2
              id: BNttzDav3jHVnNiV7noWn2KgamiO1m_yI4vI1JcmHco
              last_tx: jUcuEDZQy3LrMd1b-M0R-GHmC1w4j5tGukPdBfDTRwE
              owner: rRQJLaVaxdvxqPkxT9JuSElkPRkFNNJnU7EIAFQN7QU...
              tags:
              - name: Q29udGVudC1UeXBl
                value: dGV4dC9wbGFpbg
              target: ''
              quantity: '0'
              data_root: s5-IknhMNY-6SPJRCvzOoWYSjHVQkB1nVlKRKcPgbKM
              data_size: '1234'
              data: ''
              reward: '321004937'
              signature: NBcuDJKkj-fKPL7...
      responses:
        '200':
          description: Transaction accepted
          content:
            text/plain:
              schema:
                type: string
                example: OK
        '208':
          description: Transaction already processed
        '400':
          description: Verification failed or invalid transaction format
        '429':
          description: Too many requests
        '503':
          description: Service unavailable
  /tx/{id}:
    get:
      operationId: getTransaction
      summary: Get transaction by ID
      description: 'Retrieve a full transaction object by its transaction ID. Returns 202 if the transaction is pending (not yet mined into a block).

        '
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          description: Transaction found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '202':
          description: Transaction is pending (not yet mined)
        '404':
          description: Transaction not found
  /tx/{id}/status:
    get:
      operationId: getTransactionStatus
      summary: Get transaction confirmation status
      description: 'Returns the confirmation status of a transaction including the block height it was mined into, the block hash, and the number of confirmations.

        '
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          description: Transaction status returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionStatus'
              example:
                block_height: 551511
                block_indep_hash: XIDpYbc3b5iuiqclQ9Y3Hw7Qkp0wfUxHHhJzPmSPRNIxQrMcQ-DqlHkM7Krd7g
                number_of_confirmations: 10
        '404':
          description: Transaction not found
  /tx/{id}/{field}:
    get:
      operationId: getTransactionField
      summary: Get a specific transaction field
      description: 'Fetch a single field from a transaction. Valid fields are: id, last_tx, owner, tags, target, quantity, data, data_root, data_size, reward, signature.

        '
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      - name: field
        in: path
        required: true
        description: The transaction field to retrieve
        schema:
          type: string
          enum:
          - id
          - last_tx
          - owner
          - tags
          - target
          - quantity
          - data
          - data_root
          - data_size
          - reward
          - signature
      responses:
        '200':
          description: Field value returned
          content:
            text/plain:
              schema:
                type: string
        '202':
          description: Transaction is pending
        '400':
          description: Invalid field name or request
        '404':
          description: Transaction not found
  /tx/{id}/data:
    get:
      operationId: getTransactionData
      summary: Get transaction data
      description: 'Download the data payload associated with a transaction. Returns the Base64URL decoded data with the appropriate Content-Type header based on the transaction''s Content-Type tag.

        '
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          description: Transaction data returned
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '202':
          description: Transaction is pending
        '400':
          description: Invalid request
        '404':
          description: Transaction not found
        '503':
          description: Data not available
  /tx/{id}/offset:
    get:
      operationId: getTransactionOffset
      summary: Get transaction offset and size
      description: 'Returns the byte offset of a transaction''s data within the Arweave weave along with the data size. Used to retrieve specific chunks.

        '
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          description: Offset and size returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  offset:
                    type: string
                    description: Byte offset of the transaction data in the weave
                  size:
                    type: string
                    description: Size of the transaction data in bytes
              example:
                offset: '2191651060'
                size: '1234'
        '400':
          description: Invalid request
        '503':
          description: Service unavailable
  /tx/{id}/data.{extension}:
    get:
      operationId: getTransactionDataByExtension
      summary: Get transaction data with MIME type hint
      description: 'Download transaction data with the response Content-Type determined by the file extension. For example, /tx/{id}/data.html returns the data with Content-Type text/html.

        '
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      - name: extension
        in: path
        required: true
        description: File extension used to determine MIME type (e.g. html, txt, jpg, png, mp4)
        schema:
          type: string
      responses:
        '200':
          description: Transaction data returned with inferred Content-Type
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Transaction not found
  /{id}:
    get:
      operationId: getTransactionDataById
      summary: Get decoded transaction data by ID
      description: 'Retrieve and return the decoded data payload for a transaction directly by its ID. This is a shorthand for /tx/{id}/data and sets the appropriate Content-Type header from the transaction''s tags.

        '
      tags:
      - Transactions
      parameters:
      - name: id
        in: path
        required: true
        description: Transaction ID (Base64URL encoded)
        schema:
          type: string
      responses:
        '200':
          description: Decoded transaction data
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '202':
          description: Transaction is pending
        '404':
          description: Not found
  /price/{bytes}:
    get:
      operationId: getTransactionPrice
      summary: Get transaction price (data only)
      description: 'Calculate the minimum fee in winstons required to store the specified number of bytes. Use bytes=0 to get the fee for a pure token transfer with no data.

        '
      tags:
      - Transactions
      parameters:
      - name: bytes
        in: path
        required: true
        description: Size of data in bytes (use 0 for token-only transfers)
        schema:
          type: integer
          minimum: 0
      responses:
        '200':
          description: Fee in winstons returned as a numeric string
          content:
            text/plain:
              schema:
                type: string
              example: '321004937'
  /price/{bytes}/{target}:
    get:
      operationId: getTransactionPriceWithTarget
      summary: Get transaction price (data + target wallet)
      description: 'Calculate the minimum fee in winstons for storing the specified number of bytes and optionally sending to a target wallet address. An extra fee is included for the first transaction sent to a new wallet address.

        '
      tags:
      - Transactions
      parameters:
      - name: bytes
        in: path
        required: true
        description: Size of data in bytes (use 0 for token-only transfers)
        schema:
          type: integer
          minimum: 0
      - name: target
        in: path
        required: true
        description: Recipient wallet address (Base64URL encoded)
        schema:
          type: string
      responses:
        '200':
          description: Fee in winstons returned as a numeric string
          content:
            text/plain:
              schema:
                type: string
              example: '321004937'
components:
  schemas:
    Transaction:
      type: object
      description: 'An Arweave transaction object. Use format=2 for v2 transactions which support large data uploads via chunking. All amounts are in winstons.

        '
      required:
      - format
      - id
      - last_tx
      - owner
      - reward
      - signature
      properties:
        format:
          type: integer
          description: Transaction format version (1 or 2; use 2 for new transactions)
          enum:
          - 1
          - 2
        id:
          type: string
          description: Transaction ID — SHA-256 hash of the signature (Base64URL encoded)
        last_tx:
          type: string
          description: 'Block hash or the ID of the prior 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 name-value tag pairs. Maximum combined size is 2048 bytes. Names and values are Base64URL encoded strings.

            '
          items:
            $ref: '#/components/schemas/TransactionTag'
        target:
          type: string
          description: 'Recipient wallet address for AR token transfers (Base64URL encoded). Empty string if not transferring tokens.

            '
        quantity:
          type: string
          description: Amount of AR to transfer in winstons. Use '0' for data-only transactions.
        data_root:
          type: string
          description: Merkle root of the data chunks (Base64URL encoded). Format=2 only.
        data_size:
          type: string
          description: Total size of the data payload in bytes. Format=2 only.
        data:
          type: string
          description: 'Base64URL encoded data payload. Max 10 MiB for v1, ~12 MiB for v2 inline. For larger data use chunked uploads with data_root.

            '
        reward:
          type: string
          description: Transaction fee in winstons. Obtain from GET /price/{bytes}/{target}.
        signature:
          type: string
          description: 'RSA-PSS signature with SHA-256 (Base64URL encoded). For ECDSA accounts: 65-byte compact signature.

            '
    TransactionTag:
      type: object
      description: A name-value tag pair attached to a transaction (Base64URL encoded)
      required:
      - name
      - value
      properties:
        name:
          type: string
          description: Tag name (Base64URL encoded)
        value:
          type: string
          description: Tag value (Base64URL encoded)
    TransactionStatus:
      type: object
      description: Confirmation status of a mined transaction
      properties:
        block_height:
          type: integer
          description: Block height in which the transaction was mined
        block_indep_hash:
          type: string
          description: Independent hash of the block containing the transaction
        number_of_confirmations:
          type: integer
          description: Number of blocks mined after the block containing the transaction
  parameters:
    TransactionId:
      name: id
      in: path
      required: true
      description: Transaction ID (Base64URL encoded SHA-256 of signature)
      schema:
        type: string
externalDocs:
  description: Arweave HTTP API Documentation
  url: https://docs.arweave.org/developers/arweave-node-server/http-api