---
title: "Get transaction"
method: GET
path: "/transactions/{txn_hash_or_version}"
tags: ["transactions"]
---

# Get transaction

`GET /transactions/{txn_hash_or_version}`

There are two types of transaction identifiers:
  1. Transaction hash: included in any transaction JSON respond from server.
  2. Transaction version: included in on-chain transaction JSON respond from server.

When given transaction hash, server first looks up on-chain transaction by hash;
if no on-chain transaction found, then look up transaction by hash in the mempool
(pending) transactions.

When given a transaction version, server looks up the transaction on-chain by version.

To create a transaction hash:
  1. Create hash message bytes: "APTOS::RawTransaction" bytes + BCS bytes of [Transaction](https://aptos-labs.github.io/aptos-core/aptos_types/transaction/enum.Transaction.html).
  2. Apply hash algorithm `SHA3-256` to the hash message bytes.
  3. Hex-encode the hash bytes with `0x` prefix.

## Path parameters

- `txn_hash_or_version` string, required

## Response `200`

Returns a pending / on-chain transaction.

- union
  - PendingTransaction — This schema is used for appending `signature` field to another schema.
    - `type` string, required
    - `hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `sender` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
    - `sequence_number` string, uint64, required — Unsigned int64 type value
    - `max_gas_amount` string, uint64, required — Unsigned int64 type value
    - `gas_unit_price` string, uint64, required — Unsigned int64 type value
    - `gas_currency_code` string
    - `expiration_timestamp_secs` string, uint64, required — Timestamp in seconds, e.g. transaction expiration timestamp.
    - `payload` union, required
      - ScriptFunctionPayload
        - `type` string, required
        - `function` string, required — Script function id is string representation of a script function defined on-chain. Format: `{address}::{module name}::{function name}` Both `module name` and `function name` are case-sensitive.
        - `type_arguments` MoveTypeTagId[], required — Generic type arguments required by the script function.
        - `arguments` MoveValue[], required — The script function arguments.
      - ScriptPayload
        - `type` string, required
        - `code` MoveScript, required
          - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `abi` MoveFunction
            - `name` string, required — Move function name
            - `visibility` 'public' | 'script' | 'friend', required
            - `generic_type_params` object[], required
              - …
            - `params` MoveTypeId[], required
            - `return` MoveTypeId[], required
        - `type_arguments` MoveTypeTagId[], required
        - `arguments` MoveValue[], required
      - ModuleBundlePayload
        - `type` string, required
        - `modules` MoveModule[], required
          - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `abi` MoveModuleABI — Move Module ABI is JSON representation of Move module binary interface.
            - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
            - `name` string, required
            - `friends` MoveModuleId[], required
            - `exposed_functions` MoveFunction[], required
              - …
            - `structs` MoveStruct[], required
              - …
      - WriteSetPayload
        - `type` string, required
        - `write_set` union, required
          - ScriptWriteSet
            - `type` string, required
            - `execute_as` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
            - `script` Script, required
              - …
          - DirectWriteSet
            - `type` string, required
            - `changes` WriteSetChange[], required
              - …
            - `events` Event[], required
              - …
    - `signature` union, required
      - Ed25519Signature — Please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#signature-and-verification for more details.
        - `type` string, required
        - `public_key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - `signature` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
      - MultiEd25519Signature — Multi ed25519 signature, please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#multi-signatures for more details.
        - `type` string, required
        - `public_keys` HexEncodedBytes[], required — all public keys of the sender account
        - `signatures` HexEncodedBytes[], required — signatures created based on the `threshold`
        - `threshold` integer, required — The threshold of the multi ed25519 account key.
        - `bitmap` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
      - MultiAgentSignature — Multi agent signature, please refer to TBD.
        - `type` string, required
        - `sender` union, required
          - Ed25519Signature — Please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#signature-and-verification for more details.
            - `type` string, required
            - `public_key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `signature` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - MultiEd25519Signature — Multi ed25519 signature, please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#multi-signatures for more details.
            - `type` string, required
            - `public_keys` HexEncodedBytes[], required — all public keys of the sender account
            - `signatures` HexEncodedBytes[], required — signatures created based on the `threshold`
            - `threshold` integer, required — The threshold of the multi ed25519 account key.
            - `bitmap` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - `secondary_signer_addresses` Address[], required
        - `secondary_signers` AccountSignature[], required
          - union
            - Ed25519Signature — Please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#signature-and-verification for more details.
              - …
            - MultiEd25519Signature — Multi ed25519 signature, please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#multi-signatures for more details.
              - …
  - GenesisTransaction
    - `type` string, required
    - `events` Event[], required
      - `key` string, hex, required — Event key is a global index for an event stream. It is hex-encoded BCS bytes of `EventHandle` `guid` field value, which is a combination of a `uint64` creation number and account address (without trimming leading zeros). For example, event key `0x00000000000000000000000000000000000000000a550c18` is combined by the following 2 parts: 1. `0000000000000000`: `uint64` representation of `0`. 2. `0000000000000000000000000a550c18`: 16 bytes of account address.
      - `sequence_number` string, uint64, required — Event `sequence_number` is unique id of an event in an event stream. Event `sequence_number` starts from 0 for each event key.
      - `type` string, required — String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>` Vector type value examples: * `vector<u8>` * `vector<vector<u64>>` * `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>` Struct type value examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin> * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding).
      - `data` string, required — Move `bool` type value is serialized into `boolean`. Move `u8` type value is serialized into `integer`. Move `u64` and `u128` type value is serialized into `string`. Move `address` type value(16 bytes Aptos account address) is serialized into hex-encoded string, which is prefixed with `0x` and leading zeros are trimmed. For example: * `0x1` * `0x1668f6be25668c1a17cd8caf6b8d2f25` Move `vector` type value is serialized into `array`, except `vector<u8>` which is serialized into hex-encoded string with `0x` prefix. For example: * `vector<u64>{255, 255}` => `["255", "255"]` * `vector<u8>{255, 255}` => `0xffff` Move `struct` type value is serialized into `object` that looks like this (except some Move stdlib types, see the following section): ```json { field1_name: field1_value, field2_name: field2_value, ...... } ``` For example: `{ "created": "0xa550c18", "role_id": "0" }` **Special serialization for Move stdlib types:** * [0x1::string::String](https://github.com/aptos-labs/aptos-core/blob/main/language/move-stdlib/docs/ascii.md) is serialized into `string`. For example, struct value `0x1::string::String{bytes: b"hello world"}` is serialized as `"hello world"` in JSON.
    - `payload` WriteSetPayload, required
      - `type` string, required
      - `write_set` union, required
        - ScriptWriteSet
          - `type` string, required
          - `execute_as` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `script` Script, required
            - `code` MoveScript, required
              - …
            - `type_arguments` MoveTypeTagId[], required
            - `arguments` MoveValue[], required
        - DirectWriteSet
          - `type` string, required
          - `changes` WriteSetChange[], required
            - union
              - …
          - `events` Event[], required
            - `key` string, hex, required — Event key is a global index for an event stream. It is hex-encoded BCS bytes of `EventHandle` `guid` field value, which is a combination of a `uint64` creation number and account address (without trimming leading zeros). For example, event key `0x00000000000000000000000000000000000000000a550c18` is combined by the following 2 parts: 1. `0000000000000000`: `uint64` representation of `0`. 2. `0000000000000000000000000a550c18`: 16 bytes of account address.
            - `sequence_number` string, uint64, required — Event `sequence_number` is unique id of an event in an event stream. Event `sequence_number` starts from 0 for each event key.
            - `type` string, required — String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>` Vector type value examples: * `vector<u8>` * `vector<vector<u64>>` * `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>` Struct type value examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin> * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding).
            - `data` string, required — Move `bool` type value is serialized into `boolean`. Move `u8` type value is serialized into `integer`. Move `u64` and `u128` type value is serialized into `string`. Move `address` type value(16 bytes Aptos account address) is serialized into hex-encoded string, which is prefixed with `0x` and leading zeros are trimmed. For example: * `0x1` * `0x1668f6be25668c1a17cd8caf6b8d2f25` Move `vector` type value is serialized into `array`, except `vector<u8>` which is serialized into hex-encoded string with `0x` prefix. For example: * `vector<u64>{255, 255}` => `["255", "255"]` * `vector<u8>{255, 255}` => `0xffff` Move `struct` type value is serialized into `object` that looks like this (except some Move stdlib types, see the following section): ```json { field1_name: field1_value, field2_name: field2_value, ...... } ``` For example: `{ "created": "0xa550c18", "role_id": "0" }` **Special serialization for Move stdlib types:** * [0x1::string::String](https://github.com/aptos-labs/aptos-core/blob/main/language/move-stdlib/docs/ascii.md) is serialized into `string`. For example, struct value `0x1::string::String{bytes: b"hello world"}` is serialized as `"hello world"` in JSON.
    - `version` string, uint64, required — Unsigned int64 type value
    - `hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `state_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `event_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `gas_used` string, uint64, required — Unsigned int64 type value
    - `success` boolean, required — Transaction execution result (success: true, failure: false). See `vm_status` for human readable error message from Aptos VM.
    - `vm_status` string, required — Human readable transaction execution result message from Aptos VM.
    - `accumulator_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `changes` WriteSetChange[], required
      - union
        - DeleteModule
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `module` string, required — Move module id is a string representation of Move module. Format: "{address}::{module name}" `address` should be hex-encoded 16 bytes account address that is prefixed with `0x` and leading zeros are trimmed. Module name is case-sensitive. See [doc](https://diem.github.io/move/modules-and-scripts.html#modules) for more details.
        - DeleteResource — Delete account resource change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `resource` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
        - DeleteTableItem — Delete table item change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `data` object, required
            - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - WriteModule — Write move module
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` MoveModule, required
            - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `abi` MoveModuleABI — Move Module ABI is JSON representation of Move module binary interface.
              - …
        - WriteResource — Write account resource
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` AccountResource, required — Account resource is a Move struct value belongs to an account.
            - `type` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
            - `data` object, required — Account resource data is JSON representation of the Move struct `type`. Move struct field name and value are serialized as object property name and value.
        - WriteTableItem — Write table item
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `value` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
  - UserTransaction — This schema is used for appending `signature` field to another schema.
    - `type` string, required
    - `events` Event[], required
      - `key` string, hex, required — Event key is a global index for an event stream. It is hex-encoded BCS bytes of `EventHandle` `guid` field value, which is a combination of a `uint64` creation number and account address (without trimming leading zeros). For example, event key `0x00000000000000000000000000000000000000000a550c18` is combined by the following 2 parts: 1. `0000000000000000`: `uint64` representation of `0`. 2. `0000000000000000000000000a550c18`: 16 bytes of account address.
      - `sequence_number` string, uint64, required — Event `sequence_number` is unique id of an event in an event stream. Event `sequence_number` starts from 0 for each event key.
      - `type` string, required — String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>` Vector type value examples: * `vector<u8>` * `vector<vector<u64>>` * `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>` Struct type value examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin> * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding).
      - `data` string, required — Move `bool` type value is serialized into `boolean`. Move `u8` type value is serialized into `integer`. Move `u64` and `u128` type value is serialized into `string`. Move `address` type value(16 bytes Aptos account address) is serialized into hex-encoded string, which is prefixed with `0x` and leading zeros are trimmed. For example: * `0x1` * `0x1668f6be25668c1a17cd8caf6b8d2f25` Move `vector` type value is serialized into `array`, except `vector<u8>` which is serialized into hex-encoded string with `0x` prefix. For example: * `vector<u64>{255, 255}` => `["255", "255"]` * `vector<u8>{255, 255}` => `0xffff` Move `struct` type value is serialized into `object` that looks like this (except some Move stdlib types, see the following section): ```json { field1_name: field1_value, field2_name: field2_value, ...... } ``` For example: `{ "created": "0xa550c18", "role_id": "0" }` **Special serialization for Move stdlib types:** * [0x1::string::String](https://github.com/aptos-labs/aptos-core/blob/main/language/move-stdlib/docs/ascii.md) is serialized into `string`. For example, struct value `0x1::string::String{bytes: b"hello world"}` is serialized as `"hello world"` in JSON.
    - `timestamp` string, uint64, required — Timestamp in microseconds, e.g. ledger / block creation timestamp.
    - `sender` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
    - `sequence_number` string, uint64, required — Unsigned int64 type value
    - `max_gas_amount` string, uint64, required — Unsigned int64 type value
    - `gas_unit_price` string, uint64, required — Unsigned int64 type value
    - `gas_currency_code` string
    - `expiration_timestamp_secs` string, uint64, required — Timestamp in seconds, e.g. transaction expiration timestamp.
    - `payload` union, required
      - ScriptFunctionPayload
        - `type` string, required
        - `function` string, required — Script function id is string representation of a script function defined on-chain. Format: `{address}::{module name}::{function name}` Both `module name` and `function name` are case-sensitive.
        - `type_arguments` MoveTypeTagId[], required — Generic type arguments required by the script function.
        - `arguments` MoveValue[], required — The script function arguments.
      - ScriptPayload
        - `type` string, required
        - `code` MoveScript, required
          - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `abi` MoveFunction
            - `name` string, required — Move function name
            - `visibility` 'public' | 'script' | 'friend', required
            - `generic_type_params` object[], required
              - …
            - `params` MoveTypeId[], required
            - `return` MoveTypeId[], required
        - `type_arguments` MoveTypeTagId[], required
        - `arguments` MoveValue[], required
      - ModuleBundlePayload
        - `type` string, required
        - `modules` MoveModule[], required
          - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `abi` MoveModuleABI — Move Module ABI is JSON representation of Move module binary interface.
            - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
            - `name` string, required
            - `friends` MoveModuleId[], required
            - `exposed_functions` MoveFunction[], required
              - …
            - `structs` MoveStruct[], required
              - …
      - WriteSetPayload
        - `type` string, required
        - `write_set` union, required
          - ScriptWriteSet
            - `type` string, required
            - `execute_as` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
            - `script` Script, required
              - …
          - DirectWriteSet
            - `type` string, required
            - `changes` WriteSetChange[], required
              - …
            - `events` Event[], required
              - …
    - `signature` union, required
      - Ed25519Signature — Please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#signature-and-verification for more details.
        - `type` string, required
        - `public_key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - `signature` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
      - MultiEd25519Signature — Multi ed25519 signature, please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#multi-signatures for more details.
        - `type` string, required
        - `public_keys` HexEncodedBytes[], required — all public keys of the sender account
        - `signatures` HexEncodedBytes[], required — signatures created based on the `threshold`
        - `threshold` integer, required — The threshold of the multi ed25519 account key.
        - `bitmap` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
      - MultiAgentSignature — Multi agent signature, please refer to TBD.
        - `type` string, required
        - `sender` union, required
          - Ed25519Signature — Please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#signature-and-verification for more details.
            - `type` string, required
            - `public_key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `signature` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - MultiEd25519Signature — Multi ed25519 signature, please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#multi-signatures for more details.
            - `type` string, required
            - `public_keys` HexEncodedBytes[], required — all public keys of the sender account
            - `signatures` HexEncodedBytes[], required — signatures created based on the `threshold`
            - `threshold` integer, required — The threshold of the multi ed25519 account key.
            - `bitmap` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - `secondary_signer_addresses` Address[], required
        - `secondary_signers` AccountSignature[], required
          - union
            - Ed25519Signature — Please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#signature-and-verification for more details.
              - …
            - MultiEd25519Signature — Multi ed25519 signature, please refer to https://github.com/aptos-labs/aptos-core/tree/main/documentation/specifications/crypto#multi-signatures for more details.
              - …
    - `version` string, uint64, required — Unsigned int64 type value
    - `hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `state_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `event_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `gas_used` string, uint64, required — Unsigned int64 type value
    - `success` boolean, required — Transaction execution result (success: true, failure: false). See `vm_status` for human readable error message from Aptos VM.
    - `vm_status` string, required — Human readable transaction execution result message from Aptos VM.
    - `accumulator_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `changes` WriteSetChange[], required
      - union
        - DeleteModule
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `module` string, required — Move module id is a string representation of Move module. Format: "{address}::{module name}" `address` should be hex-encoded 16 bytes account address that is prefixed with `0x` and leading zeros are trimmed. Module name is case-sensitive. See [doc](https://diem.github.io/move/modules-and-scripts.html#modules) for more details.
        - DeleteResource — Delete account resource change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `resource` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
        - DeleteTableItem — Delete table item change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `data` object, required
            - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - WriteModule — Write move module
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` MoveModule, required
            - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `abi` MoveModuleABI — Move Module ABI is JSON representation of Move module binary interface.
              - …
        - WriteResource — Write account resource
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` AccountResource, required — Account resource is a Move struct value belongs to an account.
            - `type` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
            - `data` object, required — Account resource data is JSON representation of the Move struct `type`. Move struct field name and value are serialized as object property name and value.
        - WriteTableItem — Write table item
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `value` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
  - BlockMetadataTransaction
    - `type` string, required
    - `id` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `round` string, uint64, required — Unsigned int64 type value
    - `previous_block_votes` Address[], required
    - `proposer` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
    - `timestamp` string, uint64, required — Timestamp in microseconds, e.g. ledger / block creation timestamp.
    - `version` string, uint64, required — Unsigned int64 type value
    - `hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `state_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `event_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `gas_used` string, uint64, required — Unsigned int64 type value
    - `success` boolean, required — Transaction execution result (success: true, failure: false). See `vm_status` for human readable error message from Aptos VM.
    - `vm_status` string, required — Human readable transaction execution result message from Aptos VM.
    - `accumulator_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `changes` WriteSetChange[], required
      - union
        - DeleteModule
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `module` string, required — Move module id is a string representation of Move module. Format: "{address}::{module name}" `address` should be hex-encoded 16 bytes account address that is prefixed with `0x` and leading zeros are trimmed. Module name is case-sensitive. See [doc](https://diem.github.io/move/modules-and-scripts.html#modules) for more details.
        - DeleteResource — Delete account resource change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `resource` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
        - DeleteTableItem — Delete table item change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `data` object, required
            - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - WriteModule — Write move module
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` MoveModule, required
            - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `abi` MoveModuleABI — Move Module ABI is JSON representation of Move module binary interface.
              - …
        - WriteResource — Write account resource
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` AccountResource, required — Account resource is a Move struct value belongs to an account.
            - `type` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
            - `data` object, required — Account resource data is JSON representation of the Move struct `type`. Move struct field name and value are serialized as object property name and value.
        - WriteTableItem — Write table item
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `value` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
  - StateCheckpointTransaction
    - `type` string, required
    - `timestamp` string, uint64, required — Timestamp in microseconds, e.g. ledger / block creation timestamp.
    - `version` string, uint64, required — Unsigned int64 type value
    - `hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `state_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `event_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `gas_used` string, uint64, required — Unsigned int64 type value
    - `success` boolean, required — Transaction execution result (success: true, failure: false). See `vm_status` for human readable error message from Aptos VM.
    - `vm_status` string, required — Human readable transaction execution result message from Aptos VM.
    - `accumulator_root_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
    - `changes` WriteSetChange[], required
      - union
        - DeleteModule
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `module` string, required — Move module id is a string representation of Move module. Format: "{address}::{module name}" `address` should be hex-encoded 16 bytes account address that is prefixed with `0x` and leading zeros are trimmed. Module name is case-sensitive. See [doc](https://diem.github.io/move/modules-and-scripts.html#modules) for more details.
        - DeleteResource — Delete account resource change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `resource` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
        - DeleteTableItem — Delete table item change.
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `data` object, required
            - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
        - WriteModule — Write move module
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` MoveModule, required
            - `bytecode` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
            - `abi` MoveModuleABI — Move Module ABI is JSON representation of Move module binary interface.
              - …
        - WriteResource — Write account resource
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `address` string, address, required — Hex-encoded 16 bytes Aptos account address. Prefixed with `0x` and leading zeros are trimmed. See [doc](https://diem.github.io/move/address.html) for more details.
          - `data` AccountResource, required — Account resource is a Move struct value belongs to an account.
            - `type` string, move_type, required — String representation of an on-chain Move struct type. It is a combination of: 1. `Move module address`, `module name` and `struct name` joined by `::`. 2. `struct generic type parameters` joined by `, `. Examples: * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` * `0x1::account::Account` Note: 1. Empty chars should be ignored when comparing 2 struct tag ids. 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). See [doc](https://diem.github.io/move/structs-and-resources.html) for more details.
            - `data` object, required — Account resource data is JSON representation of the Move struct `type`. Move struct field name and value are serialized as object property name and value.
        - WriteTableItem — Write table item
          - `type` string, required
          - `state_key_hash` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `handle` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `key` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.
          - `value` string, hex, required — All bytes data are represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Different with `Address` type, hex-encoded bytes should not trim any zeros.

## Other responses

- `400` — Bad request due to a client error: invalid request headers, parameters or body. Client should not retry the request without modification.
- `404` — Resource or data not found. Client may retry the request if it is waiting for transaction execution or ledger synchronization.
- `500` — Server internal error, caused by unexpected issues.

---

[API](https://skmtc.net/apscan/apis/aptos-dev-api-specification.md) · [All operations](https://skmtc.net/apscan/apis/aptos-dev-api-specification/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/apscan/aptos-dev-api-specification/versions/45caa72817c2/schema)
