Hedera transactions API

The transaction object represents the transactions processed on the Hedera network.

OpenAPI Specification

hedera-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Mirror Node REST accounts transactions API
  version: 0.156.0
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  description: 'The REST API offers the ability to query transactions and entity information from a mirror node.


    Base url: [/api/v1](/api/v1)


    OpenAPI Spec: [/api/v1/docs/openapi.yml](/api/v1/docs/openapi.yml)'
  contact:
    name: Mirror Node Team
    email: mirrornode@hedera.com
    url: https://github.com/hiero-ledger/hiero-mirror-node
servers:
- description: The current REST API server
  url: ''
- description: The production REST API servers
  url: '{scheme}://{network}.mirrornode.hedera.com'
  variables:
    scheme:
      default: https
      description: The URI scheme
      enum:
      - http
      - https
    network:
      default: testnet
      description: The Hedera network in use
      enum:
      - mainnet-public
      - mainnet
      - previewnet
      - testnet
tags:
- name: transactions
  description: The transaction object represents the transactions processed on the Hedera network.
  externalDocs:
    url: https://docs.hedera.com/guides/docs/mirror-node-api/cryptocurrency-api#transactions
paths:
  /api/v1/transactions:
    get:
      summary: List transactions
      description: Lists transactions on the network. This includes successful and unsuccessful transactions.
      operationId: getTransactions
      parameters:
      - $ref: '#/components/parameters/accountIdQueryParam'
      - $ref: '#/components/parameters/limitQueryParam'
      - $ref: '#/components/parameters/orderQueryParamDesc'
      - $ref: '#/components/parameters/timestampQueryParam'
      - $ref: '#/components/parameters/transactionTypeQueryParam'
      - name: result
        in: query
        description: The transaction success type.
        schema:
          enum:
          - success
          - fail
      - name: type
        in: query
        description: The transaction account balance modification type.
        schema:
          enum:
          - credit
          - debit
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsResponse'
        '400':
          $ref: '#/components/responses/InvalidParameterError'
      tags:
      - transactions
  /api/v1/transactions/{transactionId}:
    get:
      summary: Get transaction by id
      description: Returns transaction information based on the given transaction id
      operationId: getTransaction
      parameters:
      - $ref: '#/components/parameters/transactionIdPathParam'
      - $ref: '#/components/parameters/nonceQueryParam'
      - $ref: '#/components/parameters/scheduledQueryParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionByIdResponse'
        '400':
          $ref: '#/components/responses/InvalidParameterError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      tags:
      - transactions
components:
  responses:
    InvalidParameterError:
      description: Invalid parameter
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            _status:
              messages:
              - message: 'Invalid parameter: account.id'
              - message: Invalid Transaction id. Please use \shard.realm.num-sss-nnn\ format where sss are seconds and nnn are nanoseconds
    NotFoundError:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            _status:
              messages:
              - message: Not found
  schemas:
    TransactionByIdResponse:
      type: object
      properties:
        transactions:
          $ref: '#/components/schemas/TransactionDetails'
    EntityIdQuery:
      type: string
      pattern: ^((gte?|lte?|eq|ne)\:)?(\d{1,10}\.\d{1,10}\.)?\d{1,10}$
    Key:
      description: The public key which controls access to various network entities.
      type:
      - object
      - 'null'
      properties:
        _type:
          type: string
          enum:
          - ECDSA_SECP256K1
          - ED25519
          - ProtobufEncoded
          example: ProtobufEncoded
        key:
          type: string
          example: 15706b229b3ba33d4a5a41ff54ce1cfe0a3d308672a33ff382f81583e02bd743
    TransactionsResponse:
      type: object
      properties:
        transactions:
          $ref: '#/components/schemas/Transactions'
        links:
          $ref: '#/components/schemas/Links'
    AssessedCustomFee:
      type: object
      properties:
        amount:
          format: int64
          type: integer
        collector_account_id:
          $ref: '#/components/schemas/EntityId'
        effective_payer_account_ids:
          type: array
          items:
            $ref: '#/components/schemas/EntityId'
        token_id:
          $ref: '#/components/schemas/EntityId'
    TransactionDetails:
      type: array
      items:
        $ref: '#/components/schemas/TransactionDetail'
    TimestampNullable:
      description: A Unix timestamp in seconds.nanoseconds format
      type:
      - string
      - 'null'
      example: '1586567700.453054000'
      pattern: ^\d{1,10}(\.\d{1,9})?$
    TransactionTypes:
      type: string
      enum:
      - ATOMICBATCH
      - CONSENSUSCREATETOPIC
      - CONSENSUSDELETETOPIC
      - CONSENSUSSUBMITMESSAGE
      - CONSENSUSUPDATETOPIC
      - CONTRACTCALL
      - CONTRACTCREATEINSTANCE
      - CONTRACTDELETEINSTANCE
      - CONTRACTUPDATEINSTANCE
      - CRSPUBLICATION
      - CRYPTOADDLIVEHASH
      - CRYPTOAPPROVEALLOWANCE
      - CRYPTOCREATEACCOUNT
      - CRYPTODELETE
      - CRYPTODELETEALLOWANCE
      - CRYPTODELETELIVEHASH
      - CRYPTOTRANSFER
      - CRYPTOUPDATEACCOUNT
      - ETHEREUMTRANSACTION
      - FILEAPPEND
      - FILECREATE
      - FILEDELETE
      - FILEUPDATE
      - FREEZE
      - HINTSKEYPUBLICATION
      - HINTSPARTIALSIGNATURE
      - HINTSPREPROCESSINGVOTE
      - HISTORYPROOFKEYPUBLICATION
      - HISTORYPROOFSIGNATURE
      - HISTORYPROOFVOTE
      - HOOKSTORE
      - LEDGERIDPUBLICATION
      - MIGRATIONROOTHASHVOTE
      - NODECREATE
      - NODEDELETE
      - NODESTAKEUPDATE
      - NODEUPDATE
      - REGISTEREDNODECREATE
      - REGISTEREDNODEDELETE
      - REGISTEREDNODEUPDATE
      - SCHEDULECREATE
      - SCHEDULEDELETE
      - SCHEDULESIGN
      - STATESIGNATURETRANSACTION
      - SYSTEMDELETE
      - SYSTEMUNDELETE
      - TOKENAIRDROP
      - TOKENASSOCIATE
      - TOKENBURN
      - TOKENCANCELAIRDROP
      - TOKENCLAIMAIRDROP
      - TOKENCREATION
      - TOKENDELETION
      - TOKENDISSOCIATE
      - TOKENFEESCHEDULEUPDATE
      - TOKENFREEZE
      - TOKENGRANTKYC
      - TOKENMINT
      - TOKENPAUSE
      - TOKENREJECT
      - TOKENREVOKEKYC
      - TOKENUNFREEZE
      - TOKENUNPAUSE
      - TOKENUPDATE
      - TOKENUPDATENFTS
      - TOKENWIPE
      - UNCHECKEDSUBMIT
      - UTILPRNG
    Links:
      type: object
      properties:
        next:
          example: null
          type:
          - string
          - 'null'
    Transactions:
      type: array
      items:
        $ref: '#/components/schemas/Transaction'
    StakingRewardTransfer:
      type: object
      description: A staking reward transfer
      required:
      - account
      - amount
      properties:
        account:
          $ref: '#/components/schemas/EntityId'
        amount:
          description: The number of tinybars awarded
          example: 10
          format: int64
          type: integer
      example:
        account_id: 0.0.1000
        amount: 10
    EntityId:
      type:
      - string
      - 'null'
      description: Network entity ID in the format of `shard.realm.num`
      pattern: ^\d{1,10}\.\d{1,10}\.\d{1,10}$
      example: 0.0.2
    CustomFeeLimit:
      type: object
      properties:
        account_id:
          $ref: '#/components/schemas/EntityId'
        amount:
          example: 100
          format: int64
          type: integer
        denominating_token_id:
          $ref: '#/components/schemas/EntityId'
    TransactionDetail:
      allOf:
      - $ref: '#/components/schemas/Transaction'
      - type: object
        properties:
          assessed_custom_fees:
            type: array
            items:
              $ref: '#/components/schemas/AssessedCustomFee'
      example:
        assessed_custom_fees:
        - amount: 100
          collector_account_id: 0.0.10
          effective_payer_account_ids:
          - 0.0.8
          - 0.0.72
          token_id: 0.0.90001
        bytes: null
        charged_tx_fee: 7
        consensus_timestamp: '1234567890.000000007'
        entity_id: 0.0.2281979
        high_volume: false
        high_volume_pricing_multiplier: 1
        max_fee: 33
        memo_base64: null
        name: CRYPTOTRANSFER
        nft_transfers:
        - is_approval: true
          receiver_account_id: 0.0.121
          sender_account_id: 0.0.122
          serial_number: 1
          token_id: 0.0.123
        - is_approval: true
          receiver_account_id: 0.0.321
          sender_account_id: 0.0.422
          serial_number: 2
          token_id: 0.0.123
        node: 0.0.3
        nonce: 0
        parent_consensus_timestamp: '1234567890.000000007'
        result: SUCCESS
        scheduled: false
        staking_reward_transfers:
        - account: 3
          amount: 200
        - account: 9
          amount: 300
        transaction_hash: vigzKe2J7fv4ktHBbNTSzQmKq7Lzdq1/lJMmHT+a2KgvdhAuadlvS4eKeqKjIRmW
        transaction_id: 0.0.8-1234567890-000000006
        token_transfers:
        - token_id: 0.0.90000
          account: 0.0.9
          amount: 1200
          is_approval: true
        - token_id: 0.0.90000
          account: 0.0.8
          amount: -1200
          is_approval: true
        transfers:
        - account: 0.0.3
          amount: 2
          is_approval: true
        - account: 0.0.8
          amount: -3
          is_approval: true
        - account: 0.0.98
          amount: 1
          is_approval: true
        - account: 0.0.800
          amount: 200
          is_approval: false
        - account: 0.0.800
          amount: 300
          is_approval: false
        valid_duration_seconds: 11
        valid_start_timestamp: '1234567890.000000006'
    Timestamp:
      description: A Unix timestamp in seconds.nanoseconds format
      type: string
      example: '1586567700.453054000'
      pattern: ^\d{1,10}(\.\d{1,9})?$
    StakingRewardTransfers:
      type: array
      items:
        $ref: '#/components/schemas/StakingRewardTransfer'
    Transaction:
      type: object
      properties:
        batch_key:
          $ref: '#/components/schemas/Key'
        bytes:
          type:
          - string
          - 'null'
          format: byte
        charged_tx_fee:
          format: int64
          type: integer
        consensus_timestamp:
          $ref: '#/components/schemas/Timestamp'
        entity_id:
          $ref: '#/components/schemas/EntityId'
        high_volume:
          description: Whether the transaction used high-volume entity creation throttles and pricing per HIP-1313
          type: boolean
        high_volume_pricing_multiplier:
          description: The multiplier applied to the transaction fee when high-volume pricing was in effect per HIP-1313, scaled by 1000 (e.g. 1000 = 1x, 4000 = 4x). A value of 0 means high-volume pricing was not applied. Null for pre-HIP-1313 transactions.
          format: int64
          minimum: 0
          type:
          - integer
          - 'null'
        max_custom_fees:
          type: array
          items:
            $ref: '#/components/schemas/CustomFeeLimit'
        max_fee:
          type: string
        memo_base64:
          format: byte
          type:
          - string
          - 'null'
        name:
          $ref: '#/components/schemas/TransactionTypes'
        nft_transfers:
          type: array
          items:
            type: object
            properties:
              is_approval:
                type: boolean
              receiver_account_id:
                $ref: '#/components/schemas/EntityId'
              sender_account_id:
                $ref: '#/components/schemas/EntityId'
              serial_number:
                example: 1
                format: int64
                type: integer
              token_id:
                $ref: '#/components/schemas/EntityId'
            required:
            - is_approval
            - receiver_account_id
            - sender_account_id
            - token_id
            - serial_number
        node:
          $ref: '#/components/schemas/EntityId'
        nonce:
          type: integer
          minimum: 0
        parent_consensus_timestamp:
          $ref: '#/components/schemas/TimestampNullable'
        result:
          type: string
        scheduled:
          type: boolean
        staking_reward_transfers:
          $ref: '#/components/schemas/StakingRewardTransfers'
        token_transfers:
          type: array
          items:
            type: object
            properties:
              token_id:
                $ref: '#/components/schemas/EntityId'
              account:
                $ref: '#/components/schemas/EntityId'
              amount:
                format: int64
                type: integer
              is_approval:
                type: boolean
            required:
            - token_id
            - account
            - amount
        transaction_hash:
          type: string
          format: byte
        transaction_id:
          type: string
        transfers:
          type: array
          items:
            type: object
            properties:
              account:
                $ref: '#/components/schemas/EntityId'
              amount:
                format: int64
                type: integer
              is_approval:
                type: boolean
            required:
            - account
            - amount
        valid_duration_seconds:
          type: string
        valid_start_timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        batch_key:
          _type: ED25519
          key: 7934a257a6144fabc8fbdeeaa5810662adb89e7b6978ace46a74fdb2d12bd4b2
        bytes: null
        charged_tx_fee: 7
        consensus_timestamp: '1234567890.000000007'
        entity_id: 0.0.2281979
        high_volume: false
        high_volume_pricing_multiplier: 1
        max_custom_fees:
        - account_id: 0.0.8
          amount: 1000
          denominating_token_id: 0.0.2000
        - account_id: 0.0.8
          amount: 1500
          denominating_token_id: null
        max_fee: 33
        memo_base64: null
        name: CRYPTOTRANSFER
        nft_transfers:
        - is_approval: true
          receiver_account_id: 0.0.121
          sender_account_id: 0.0.122
          serial_number: 1
          token_id: 0.0.123
        - is_approval: true
          receiver_account_id: 0.0.321
          sender_account_id: 0.0.422
          serial_number: 2
          token_id: 0.0.123
        node: 0.0.3
        nonce: 0
        parent_consensus_timestamp: '1234567890.000000007'
        result: SUCCESS
        scheduled: false
        staking_reward_transfers:
        - account: 3
          amount: 150
        - account: 9
          amount: 200
        transaction_hash: vigzKe2J7fv4ktHBbNTSzQmKq7Lzdq1/lJMmHT+a2KgvdhAuadlvS4eKeqKjIRmW
        transaction_id: 0.0.8-1234567890-000000006
        token_transfers:
        - token_id: 0.0.90000
          account: 0.0.9
          amount: 1200
          is_approval: false
        - token_id: 0.0.90000
          account: 0.0.8
          amount: -1200
          is_approval: false
        transfers:
        - account: 0.0.3
          amount: 2
          is_approval: false
        - account: 0.0.8
          amount: -3
          is_approval: false
        - account: 0.0.98
          amount: 1
          is_approval: false
        - account: 0.0.800
          amount: 150
          is_approval: false
        - account: 0.0.800
          amount: 200
          is_approval: false
        valid_duration_seconds: 11
        valid_start_timestamp: '1234567890.000000006'
    Error:
      type: object
      properties:
        _status:
          type: object
          properties:
            messages:
              type: array
              items:
                type: object
                properties:
                  data:
                    description: Error message in hexadecimal
                    example: '0x3000'
                    format: binary
                    pattern: ^0x[0-9a-fA-F]+$
                    type:
                    - string
                    - 'null'
                  detail:
                    description: Detailed error message
                    example: Generic detailed error message
                    type:
                    - string
                    - 'null'
                  message:
                    description: Error message
                    example: Generic error message
                    type: string
  parameters:
    transactionIdPathParam:
      name: transactionId
      in: path
      required: true
      description: Transaction id
      example: 0.0.10-1234567890-000000000
      schema:
        type: string
    orderQueryParamDesc:
      name: order
      in: query
      description: The order in which items are listed
      example: asc
      schema:
        enum:
        - asc
        - desc
        default: desc
    transactionTypeQueryParam:
      name: transactiontype
      in: query
      example: null
      schema:
        $ref: '#/components/schemas/TransactionTypes'
    accountIdQueryParam:
      name: account.id
      in: query
      description: The ID of the account to return information for
      explode: true
      examples:
        noValue:
          summary: --
          value: ''
        entityNumNoOperator:
          summary: Example of entityNum equals with no operator
          value: 100
        idNoOperator:
          summary: Example of id equals with no operator
          value: 0.0.100
        entityNumEqOperator:
          summary: Example of entityNum equals operator
          value: eq:200
        idEqOperator:
          summary: Example of id equals operator
          value: eq:0.0.200
        entityNumNeOperator:
          summary: Example of entityNum not equals operator
          value: ne:300
        idNeOperator:
          summary: Example of id not equals operator
          value: ne:0.0.300
        entityNumGtOperator:
          summary: Example of entityNum greater than operator
          value: gt:400
        idGtOperator:
          summary: Example of id greater than operator
          value: gt:0.0.400
        entityNumGteOperator:
          summary: Example of entityNum greater than or equals operator
          value: gte:500
        idGteOperator:
          summary: Example of id greater than or equals operator
          value: gte:0.0.500
        entityNumLtOperator:
          summary: Example of entityNum less than operator
          value: lt:600
        idLtOperator:
          summary: Example of id less than operator
          value: lt:0.0.600
        entityNumLteOperator:
          summary: Example of entityNum less than or equals operator
          value: lte:700
        idLteOperator:
          summary: Example of id less than or equals operator
          value: lte:0.0.700
      schema:
        $ref: '#/components/schemas/EntityIdQuery'
    nonceQueryParam:
      name: nonce
      in: query
      description: Filter the query result by the nonce of the transaction. A zero nonce represents user submitted transactions while a non-zero nonce is generated by main nodes. The filter honors the last value. If not specified, all transactions with specified payer account ID and valid start timestamp match. If multiple values are provided the last value will be the only value used.
      example: 0
      schema:
        format: int32
        type: integer
        minimum: 0
    limitQueryParam:
      name: limit
      in: query
      description: The maximum number of items to return
      example: 2
      schema:
        format: int32
        type: integer
        default: 25
        minimum: 1
        maximum: 100
    timestampQueryParam:
      description: The consensus timestamp as a Unix timestamp in seconds.nanoseconds format with an optional comparison operator. See [unixtimestamp.com](https://www.unixtimestamp.com/) for a simple way to convert a date to the 'seconds' part of the Unix time.
      name: timestamp
      in: query
      explode: true
      examples:
        noValue:
          summary: --
          value: ''
        secondsNoOperator:
          summary: Example of seconds equals with no operator
          value: 1234567890
        timestampNoOperator:
          summary: Example of timestamp equals with no operator
          value: 1234567890
        secondsEqOperator:
          summary: Example of seconds equals with operator
          value: eq:1234567890
        timestampEqOperator:
          summary: Example of timestamp equals with operator
          value: eq:1234567890.000000200
        secondsNeOperator:
          summary: Example of seconds not equals operator
          value: ne:1234567890
        timestampNeOperator:
          summary: Example of timestamp not equals operator
          value: ne:1234567890.000000300
        secondsGtOperator:
          summary: Example of seconds greater than operator
          value: gt:1234567890
        timestampGtOperator:
          summary: Example of timestamp greater than operator
          value: gt:1234567890.000000400
        secondsGteOperator:
          summary: Example of seconds greater than or equals operator
          value: gte:1234567890
        timestampGteOperator:
          summary: Example of timestamp greater than or equals operator
          value: gte:1234567890.000000500
        secondsLtOperator:
          summary: Example of seconds less than operator
          value: lt:1234567890
        timestampLtOperator:
          summary: Example of timestamp less than operator
          value: lt:1234567890.000000600
        secondsLteOperator:
          summary: Example of seconds less than or equals operator
          value: lte:1234567890
        timestampLteOperator:
          summary: Example of timestamp less than or equals operator
          value: lte:1234567890.000000700
      schema:
        type: array
        items:
          type: string
          pattern: ^((eq|gt|gte|lt|lte|ne):)?\d{1,10}(\.\d{1,9})?$
    scheduledQueryParam:
      name: scheduled
      in: query
      description: Filter transactions by the scheduled flag. If true, return information for the scheduled transaction. If false, return information for the non-scheduled transaction. If not present, return information for all transactions matching transactionId. If multiple values are provided the last value will be the only value used.
      schema:
        type: boolean
externalDocs:
  description: REST API Docs
  url: https://docs.hedera.com/guides/docs/mirror-node-api/cryptocurrency-api