---
title: "Submit batch transactions"
method: POST
path: "/transactions/batch"
tags: ["Transactions"]
---

# Submit batch transactions

`POST /transactions/batch`

This allows you to submit multiple transactions.  The response has three outcomes:

1. All transactions succeed, and it will return a 202
2. Some transactions succeed, and it will return the failed transactions and a 206
3. No transactions succeed, and it will also return the failed transactions and a 206

To submit a transaction as JSON, you must submit a SubmitTransactionRequest.
To build this request, do the following:

1. Encode the transaction as BCS. If you are using a language that has
native BCS support, make sure to use that library. If not, you may take
advantage of /transactions/encode_submission. When using this
endpoint, make sure you trust the node you're talking to, as it is
possible they could manipulate your request.
2. Sign the encoded transaction and use it to create a TransactionSignature.
3. Submit the request. Make sure to use the "application/json" Content-Type.

To submit a transaction as BCS, you must submit a SignedTransaction
encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.
Make sure to use the `application/x.lumio.signed_transaction+bcs` Content-Type.

## Request body

- SubmitTransactionRequest[] — unresolved $ref

## Response `202`

- TransactionsBatchSubmissionResult — Batch transaction submission result Tells which transactions failed
  - `transaction_failures` TransactionsBatchSingleSubmissionFailure[], required — Summary of the failed transactions
    - `error` LumioError, required — This is the generic struct we use for all API errors, it contains a string message and an Lumio API specific error code.
      - `message` string, required — A message describing the error
      - `error_code` 'account_not_found' | 'resource_not_found' | 'module_not_found' | 'struct_field_not_found' | 'version_not_found' | 'transaction_not_found' | 'table_item_not_found' | 'block_not_found' | 'state_value_not_found' | 'version_pruned' | 'block_pruned' | 'invalid_input' | 'invalid_transaction_update' | 'sequence_number_too_old' | 'vm_error' | 'rejected_by_filter' | 'health_check_failed' | 'mempool_is_full' | 'internal_error' | 'web_framework_error' | 'bcs_not_supported' | 'api_disabled', required — These codes provide more granular error information beyond just the HTTP status code of the response.
      - `vm_error_code` integer — A code providing VM error details when submitting transactions to the VM
    - `transaction_index` integer, required — The index of which transaction failed, same as submission order

## Other responses

- `206`
- `400`
- `403`
- `404`
- `413`
- `500`
- `503`
- `507`

---

[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)
