---
updatedAt: 2026-05-20T16:41:56.000Z
---

Fetch the complete documentation index at: https://docs.blockdaemon.com/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Derive signing payload from unsigned transaction

Create a signing payload.


<HTMLBlock>{`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
  body {
    font-family: Arial, sans-serif;
  }
  .filter-box {
    width: 100%;
  }
  .table-container {
    border: 1px solid #ccc;
    margin-top: 15px;
  }
  .show {
    display: block;
  }
  .scrollable-table {
    max-height: 320px;
    overflow-y: scroll;
  }
  table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
  }
  th, td {
    border: 1px solid #ccc;
    padding: 10px;
    vertical-align: top;
    word-wrap: break-word;
  }
  #protocolTableSearchable th {
    text-align: left;
    position: sticky;
    top: 0;
    background-clip: padding-box;
    z-index: 1;
    background-color: #230688;
    color: white !important;
  }
  code {
    background-color: #eee;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: monospace;
    cursor: pointer;
    transition: background-color 0.2s ease;
    position: relative;
  }
  code:hover {
    background-color: #ddd;
  }
  [data-color-mode="dark"] code:hover {
    background-color: #637288;
  }
  .tooltip {
    position: absolute;
    background-color: #333;
    color: white;
    padding: 8px 12px;
    border-radius: 4px;
    font-size: 12px;
    z-index: 1000;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease;
    font-family: Arial, sans-serif;
  }
  .tooltip.show {
    opacity: 1;
  }
  .tooltip::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: #333 transparent transparent transparent;
  }
  [data-color-mode="light"] .protocol-group-odd td {
    background-color: #ffffff;
  }
  [data-color-mode="light"] .protocol-group-even td {
    background-color: #f5f5f5;
  }
  [data-color-mode="dark"] .protocol-group-odd td {
    background-color: #242e34;
  }
  [data-color-mode="dark"] .protocol-group-even td {
    background-color: #4f5a66;
  }
</style>
</head>
<body>

<h3>Supported Protocols & Networks</h3>

<div class="table-container show">
  <input type="text" id="searchProtocolInput" class="filter-box" placeholder="Search protocol name..." onkeyup="filterTable()" />
  <div class="scrollable-table">
    <table id="protocolTableSearchable">
      <thead>
        <tr>
          <th>Protocol</th>
          <th>Network</th>
          <th>Path Parameter</th>
        </tr>
      </thead>
      <tbody>
<tr class="protocol-group-even">
  <td rowspan="4">Polkadot</td>
  <td>Mainnet</td>
  <td><code class="copyable-code">polkadot-mainnet</code></td>
</tr>
<tr class="protocol-group-even">
  <td>Westend</td>
  <td><code class="copyable-code">polkadot-westend</code></td>
        </tr>
  <tr class="protocol-group-even">
    <td>Assethub Mainnet</td>
    <td><code class="copyable-code">polkadot-assethub-mainnet</code></td>
  </tr>
  <tr class="protocol-group-even">
    <td>Assethub Westend</td>
    <td><code class="copyable-code">polkadot-assethub-westend</code></td>
  </tr>
      </tbody>
    </table>
  </div>
</div>

<script>
  function filterTable() {
    const input = document.getElementById('searchProtocolInput').value.toLowerCase();
    const rows = document.querySelectorAll('#protocolTableSearchable tbody tr');
    rows.forEach(row => {
      row.style.display = row.innerText.toLowerCase().includes(input) ? '' : 'none';
    });
  }
</script>

</body>
</html>
`}</HTMLBlock>

# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Transaction API",
    "version": "1.0.0",
    "description": "Blockdaemon transaction API to create, compile, send and verify transactions for supported blockchains.",
    "contact": {
      "name": "Blockdaemon",
      "email": "info@blockdaemon.com",
      "url": "https://blockdaemon.com"
    },
    "x-logo": {
      "url": "https://storage.googleapis.com/blockdaemon-app-static-images/marketing/PNG/dark-logo.png",
      "altText": "Blockdaemon logo"
    }
  },
  "servers": [
    {
      "url": "https://svc.blockdaemon.com/tx/v1",
      "description": "Blockdaemon transaction API"
    }
  ],
  "security": [
    {
      "apiKeyAuthHeader": []
    },
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/{blockchain_id}/derive_signing_payload": {
      "parameters": [
        {
          "$ref": "#/components/parameters/blockchain_id"
        }
      ],
      "post": {
        "summary": "Derive signing payload from unsigned transaction",
        "description": "Create a signing payload.\n",
        "operationId": "TxDeriveSigningPayload",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiTxDeriveSigningPayloadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A signing payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTxDeriveSigningPayloadResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ErrorBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/ErrorUnauthorized"
          },
          "429": {
            "$ref": "#/components/responses/ErrorTooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/ErrorInternal"
          },
          "501": {
            "$ref": "#/components/responses/ErrorNotImplemented"
          },
          "503": {
            "$ref": "#/components/responses/ErrorServiceUnavailable"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKeyAuthHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Unlock higher TPS - Create your own API key in the [Blockdaemon App](https://app.blockdaemon.com).\n",
        "x-default": "2go1YqUcuAr4WZ2-3WgSD3c7qpatZqQuNWhTVBldKZnTSUtw"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Opaque",
        "description": "[Legacy Auth] Unlock higher TPS - Create your own API key in the [Blockdaemon App](https://app.blockdaemon.com).\n",
        "x-default": "2go1YqUcuAr4WZ2-3WgSD3c7qpatZqQuNWhTVBldKZnTSUtw"
      }
    },
    "parameters": {
      "blockchain_id": {
        "name": "blockchain_id",
        "in": "path",
        "required": true,
        "description": "Either a hyphen seperated protocol-network pair like `ethereum-mainnet` or the `chain-id`",
        "schema": {
          "type": "string",
          "default": "ethereum-mainnet"
        }
      }
    },
    "responses": {
      "ErrorTooManyRequests": {
        "description": "Rate limit exceeded",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "too-many-requests",
              "title": "Too Many Requests",
              "status": 429,
              "detail": "Request rate limits have been exceeded. Try again after a few seconds."
            }
          }
        }
      },
      "ErrorBadRequest": {
        "description": "Bad request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      },
      "ErrorUnauthorized": {
        "description": "Invalid or expired token",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "unauthorized",
              "title": "Invalid Token",
              "status": 401
            }
          }
        }
      },
      "ErrorInternal": {
        "description": "An internal server error happened",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "internal-server-error",
              "title": "Internal Server Error",
              "status": 500
            }
          }
        }
      },
      "ErrorServiceUnavailable": {
        "description": "The resource you are trying to access is currently unavailable",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "unavailable",
              "title": "Unavailable",
              "status": 503
            }
          }
        }
      },
      "ErrorNotImplemented": {
        "description": "The request endpoint is not implemented",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "not-implemented",
              "title": "Not implemented",
              "status": 501
            }
          }
        }
      }
    },
    "schemas": {
      "ApiTxDeriveSigningPayloadRequest": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ApiTxDeriveSigningPayloadRequestSubstrate"
          }
        ]
      },
      "ApiTxDeriveSigningPayloadRequestSubstrate": {
        "title": "Api Tx Derive Signing Payload Request Substrate",
        "type": "object",
        "properties": {
          "unsigned_tx": {
            "type": "string",
            "description": "The hex encoded unsigned transaction",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "sender_address": {
            "type": "string",
            "description": "The sender address is base58 encoding",
            "x-oapi-codegen-extra-tags": {
              "validate": "required"
            }
          },
          "mortal_period": {
            "type": "number",
            "description": "The number of blocks until the transaction is expired",
            "default": 1000,
            "x-go-type": "uint64"
          },
          "tip": {
            "type": "number",
            "x-go-type": "big.Int"
          },
          "nonce": {
            "type": "number",
            "x-go-type": "uint64"
          }
        },
        "required": [
          "unsigned_tx",
          "sender_address"
        ]
      },
      "ApiTxDeriveSigningPayloadResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ApiTxCreateResponseSubstrate"
          }
        ]
      },
      "ApiTxCreateResponseSubstrate": {
        "title": "Api Tx Create Response Substrate",
        "type": "object",
        "properties": {
          "unsigned_tx": {
            "type": "string",
            "description": "The unsigned transaction."
          },
          "signing_payload": {
            "type": "string",
            "description": "The signing payload (hex encoded)"
          }
        },
        "required": [
          "unsigned_tx",
          "signing_payload"
        ]
      },
      "error": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The HTTP error type.",
            "example": "bad-request"
          },
          "code": {
            "type": "integer",
            "description": "The numeric error code.",
            "example": 16384
          },
          "title": {
            "type": "string",
            "description": "The short error description.",
            "example": "Invalid Address"
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status of the error.",
            "example": 400
          },
          "detail": {
            "type": "string",
            "description": "Long error description",
            "example": "The requested address is invalid on this protocol."
          }
        }
      }
    }
  }
}
```