Skip to main content
Use POST /v1/wallets/{walletId}/sign-transaction for EVM, Solana, Stellar, and Sui transaction payloads. The wallet ID selects the parser. Cosmos does not support this route, so send the exact chain-specific bytes to sign-raw instead. The examples use ParaRestClient. The object passed to each SDK method is the JSON body for the matching REST route. See REST SDK to initialize the client.

Sign transactions

EVM transaction

Pass an unsigned transaction object. REST supports ordinary legacy type 0 and EIP-1559 type 2 transactions.
Set top-level broadcast: true to submit the signed transaction and create a transaction-history record. EVM also supports signTypedData() for EIP-712 and signAuthorization() for EIP-7702. Both REST adapters cover message, transaction, and typed-data signing. Only the Viem REST adapter exposes signAuthorization(); ethers callers use the core client’s para.signAuthorization() method.

EIP-712 typed data

EIP-712 is EVM-only. Pass the structured domain, types, primary type, and message directly. Para builds and signs the EIP-712 digest.
Do not include EIP712Domain in types; Para derives it from the domain fields.

EIP-7702 authorization

EIP-7702 authorization signing is EVM-only.
The response includes r, s, yParity, and the combined signature. yParity is 0 or 1, rather than the legacy EVM v value of 27 or 28. contractAddress is accepted as an alias for address.

Cosmos transaction

The chain-specific sign-transaction route does not support Cosmos Direct or Amino sign documents. Construct the exact bytes required by the target Cosmos signing flow, encode them as hex, and send them through signRaw().
sign-raw does not add a Cosmos prefix, serialize a sign document, or hash the supplied bytes. Your backend produces the exact hex bytes that the target chain expects Para to sign.

Solana transaction

Pass a base64-encoded serialized Solana transaction. Both legacy Transaction and v0 VersionedTransaction formats are accepted and auto-detected.
Set broadcast: true when Para should submit the transaction and create a transaction-history record. In beta, SOLANA_DEVNET is the supported broadcast network.

Stellar transaction

Pass a base64-encoded Stellar transaction envelope in XDR format and the exact network passphrase used to build it.
Para adds the wallet’s signature to the envelope and returns signed XDR. Stellar transaction signing is sign-only; broadcast: true is not supported.

Sui transaction

Pass a base64-encoded BCS serialization of Sui TransactionData.
Para returns the serialized Sui signature separately from the unchanged transaction bytes:
Sui transaction signing is sign-only. broadcast: true is not supported. networkPassphrase is ignored for Sui. The REST SDK can submit the route through para.signTransaction(), but its generic response type models signedTransaction. Use the raw HTTP response when TypeScript code needs typed access to Sui’s separate signature and transaction fields.

Sign exact bytes

Use signRaw() or POST /v1/wallets/{walletId}/sign-raw when your backend owns chain-specific serialization and hashing. The input is hex, and Para signs those exact bytes without adding a prefix or hash.
Passing walletType is optional, but it is a useful guard: Para rejects the request if it does not match the wallet referenced by walletId.
REST signing is available only while the wallet remains API-key-managed. After the user claims the wallet, sign through a user-facing Para SDK and the user’s authenticated session instead.
For message payloads, see Sign messages by wallet type. See Wallet lifecycle by wallet type to create each wallet type, or use the Endpoints section in the REST API navigation for complete request and response schemas.