---
title: "Encode submission"
method: POST
path: "/transactions/encode_submission"
tags: ["Transactions"]
---

# Encode submission

`POST /transactions/encode_submission`

This endpoint accepts an EncodeSubmissionRequest, which internally is a
UserTransactionRequestInner (and optionally secondary signers) encoded
as JSON, validates the request format, and then returns that request
encoded in BCS. The client can then use this to create a transaction
signature to be used in a SubmitTransactionRequest, which it then
passes to the /transactions POST endpoint.

To be clear, this endpoint makes it possible to submit transaction
requests to the API from languages that do not have library support for
BCS. If you are using an SDK that has BCS support, such as the official
Rust, TypeScript, or Python SDKs, you do not need to use this endpoint.

To sign a message using the response from this endpoint:
- Decode the hex encoded string in the response to bytes.
- Sign the bytes to create the signature.
- Use that as the signature field in something like Ed25519Signature, which you then use to build a TransactionSignature.

## Request body

- EncodeSubmissionRequest — Request to encode a submission
  - `sender` string, hex, required — A hex encoded 32 byte Lumio account address. This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x. For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.
  - `sequence_number` string, uint64, required — A string containing a 64-bit unsigned integer. We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.
  - `max_gas_amount` string, uint64, required — A string containing a 64-bit unsigned integer. We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.
  - `gas_unit_price` string, uint64, required — A string containing a 64-bit unsigned integer. We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.
  - `expiration_timestamp_secs` string, uint64, required — A string containing a 64-bit unsigned integer. We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.
  - `payload` union, required — An enum of the possible transaction payloads
    - object — Payload which runs a single entry function
      - `type` 'entry_function_payload', required
      - `function` string, required — Entry function id is string representation of a entry function defined on-chain. Format: `{address}::{module name}::{function name}` Both `module name` and `function name` are case-sensitive.
      - `type_arguments` MoveType[], required — Type arguments of the function
      - `arguments` unknown[], required — Arguments of the function
        - unknown
    - object — Payload which runs a script that can run multiple functions
      - `type` 'script_payload', required
      - `code` MoveScriptBytecode, required — Move script bytecode
        - `bytecode` string, hex, required — All bytes (Vec<u8>) data is represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Unlike the `Address` type, HexEncodedBytes will not trim any zeros.
        - `abi` MoveFunction — Move function
          - `name` string, required
          - `visibility` 'private' | 'public' | 'friend', required — Move function visibility
          - `is_entry` boolean, required — Whether the function can be called as an entry function directly in a transaction
          - `is_view` boolean, required — Whether the function is a view function or not
          - `generic_type_params` MoveFunctionGenericTypeParam[], required — Generic type params associated with the Move function
            - `constraints` MoveAbility[], required — Move abilities tied to the generic type param and associated with the function that uses it
          - `params` MoveType[], required — Parameters associated with the move function
          - `return` MoveType[], required — Return type of the function
      - `type_arguments` MoveType[], required — Type arguments of the function
      - `arguments` unknown[], required — Arguments of the function
        - unknown
    - object
      - `type` 'module_bundle_payload', required
    - object — A multisig transaction that allows an owner of a multisig account to execute a pre-approved transaction as the multisig account.
      - `type` 'multisig_payload', required
      - `multisig_address` string, hex, required — A hex encoded 32 byte Lumio account address. This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x. For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.
      - `transaction_payload` MultisigTransactionPayload — Payload which runs a single entry function
        - `type` 'entry_function_payload', required
        - `function` string, required — Entry function id is string representation of a entry function defined on-chain. Format: `{address}::{module name}::{function name}` Both `module name` and `function name` are case-sensitive.
        - `type_arguments` MoveType[], required — Type arguments of the function
        - `arguments` unknown[], required — Arguments of the function
          - unknown
  - `replay_protection_nonce` string, uint64 — A string containing a 64-bit unsigned integer. We represent u64 values as a string to ensure compatibility with languages such as JavaScript that do not parse u64s in JSON natively.
  - `secondary_signers` Address[] — Secondary signer accounts of the request for Multi-agent

## Response `200`

- string, hex — All bytes (Vec<u8>) data is represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte. Unlike the `Address` type, HexEncodedBytes will not trim any zeros.

## Other responses

- `400`
- `403`
- `500`
- `503`

---

[API](https://skmtc.net/pontem-network/apis/lumio-node-api.md) · [All operations](https://skmtc.net/pontem-network/apis/lumio-node-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pontem-network/lumio-node-api/revisions/385d1aaf056f/schema)
