---
title: "Create a signature or transaction"
method: POST
path: "/v1/wallets/{wallet_id}/rpc"
tags: ["Wallets"]
---

# Create a signature or transaction

`POST /v1/wallets/{wallet_id}/rpc`

Sign a message or transaction with a wallet by wallet ID.

## Path parameters

- `wallet_id` string, required — ID of the wallet.

## Headers

- `privy-app-id` string, required — ID of your Privy app.
- `privy-authorization-signature` string — Request authorization signature. If multiple signatures are required, they should be comma separated.
- `privy-request-expiry` string — Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.
- `privy-idempotency-key` string — Idempotency keys ensure API requests are executed only once within a 24-hour window.

## Request body

- union — Request body for wallet RPC operations, discriminated by method.
  - object — Executes the EVM `eth_signTransaction` RPC to sign a transaction.
    - `address` string
    - `chain_type` 'ethereum'
    - `method` 'eth_signTransaction', required
    - `params` EthereumSignTransactionRpcInputParams, required — Parameters for the EVM `eth_signTransaction` RPC.
      - `transaction` union, required — An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).
        - object — An unsigned standard Ethereum transaction object. Supports EVM transaction types 0, 1, 2, and 4.
          - `authorization_list` EthereumSign7702Authorization[]
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `y_parity` number, required
          - `chain_id` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `from` string
          - `gas_limit` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `gas_price` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_priority_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `to` string
          - `type` union
            - 0
            - 1
            - 2
            - 4
          - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
        - object — An unsigned Tempo transaction (type 118) with batched calls.
          - `aa_authorization_list` TempoAAAuthorization[]
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `signature` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `access_list` AccessListEntry[]
            - `address` string, required
            - `storage_keys` Hex[], required
          - `calls` TempoCall[], required
            - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `to` string, required
            - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
          - `chain_id` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `fee_payer_signature` TempoFeePayerSignature — A fee payer signature for sponsored Tempo transactions (secp256k1 only).
            - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `y_parity` union, required
              - …
          - `fee_token` string
          - `from` string
          - `gas_limit` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_priority_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce_key` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `type` 118, required
          - `valid_after` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `valid_before` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
    - `wallet_id` string
  - object — Executes the EVM `eth_sendTransaction` RPC to sign and broadcast a transaction.
    - `address` string
    - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
    - `chain_type` 'ethereum'
    - `experimental_data_suffix` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
    - `method` 'eth_sendTransaction', required
    - `params` EthereumSendTransactionRpcInputParams, required — Parameters for the EVM `eth_sendTransaction` RPC.
      - `transaction` union, required — An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).
        - object — An unsigned standard Ethereum transaction object. Supports EVM transaction types 0, 1, 2, and 4.
          - `authorization_list` EthereumSign7702Authorization[]
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `y_parity` number, required
          - `chain_id` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `from` string
          - `gas_limit` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `gas_price` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_priority_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `to` string
          - `type` union
            - 0
            - 1
            - 2
            - 4
          - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
        - object — An unsigned Tempo transaction (type 118) with batched calls.
          - `aa_authorization_list` TempoAAAuthorization[]
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `signature` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `access_list` AccessListEntry[]
            - `address` string, required
            - `storage_keys` Hex[], required
          - `calls` TempoCall[], required
            - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `to` string, required
            - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
          - `chain_id` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `fee_payer_signature` TempoFeePayerSignature — A fee payer signature for sponsored Tempo transactions (secp256k1 only).
            - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `y_parity` union, required
              - …
          - `fee_token` string
          - `from` string
          - `gas_limit` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_priority_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce_key` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `type` 118, required
          - `valid_after` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `valid_before` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
    - `reference_id` string
    - `sponsor` boolean
    - `wallet_id` string
  - object — Executes the EVM `personal_sign` RPC (EIP-191) to sign a message.
    - `address` string
    - `caip2` string — A valid CAIP-2 chain ID (e.g. 'eip155:1').
    - `chain_type` 'ethereum'
    - `method` 'personal_sign', required
    - `params` EthereumPersonalSignRpcInputParams, required — Parameters for the EVM `personal_sign` RPC.
      - `encoding` union, required
        - 'utf-8'
        - 'hex'
      - `message` string, required
    - `signature_options` SignatureOptions — Options controlling signature production for personal_sign and eth_signTypedData_v4.
      - `type` 'ecdsa' | 'erc1271', required — The type of cryptographic signature to produce. Use "ecdsa" for standard ECDSA signatures, or "erc1271" for ERC-1271 compliant signatures for smart account wallets.
    - `wallet_id` string
  - object — Executes the EVM `eth_signTypedData_v4` RPC (EIP-712) to sign a typed data object.
    - `address` string
    - `caip2` string — A valid CAIP-2 chain ID (e.g. 'eip155:1').
    - `chain_type` 'ethereum'
    - `method` 'eth_signTypedData_v4', required
    - `params` EthereumSignTypedDataRpcInputParams, required — Parameters for the EVM `eth_signTypedData_v4` RPC.
      - `typed_data` EthereumTypedDataInput, required — EIP-712 typed data object.
        - `domain` TypedDataDomainInputParams, required — The domain parameters for EIP-712 typed data signing.
        - `message` object, required
        - `primary_type` string, required
        - `types` TypedDataTypesInputParams, required — The type definitions for EIP-712 typed data signing.
    - `signature_options` SignatureOptions — Options controlling signature production for personal_sign and eth_signTypedData_v4.
      - `type` 'ecdsa' | 'erc1271', required — The type of cryptographic signature to produce. Use "ecdsa" for standard ECDSA signatures, or "erc1271" for ERC-1271 compliant signatures for smart account wallets.
    - `wallet_id` string
  - object — Signs a raw hash on the secp256k1 curve.
    - `address` string
    - `chain_type` 'ethereum'
    - `method` 'secp256k1_sign', required
    - `params` EthereumSecp256k1SignRpcInputParams, required — Parameters for the EVM `secp256k1_sign` RPC.
      - `hash` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
    - `wallet_id` string
  - object — Signs an EIP-7702 authorization.
    - `address` string
    - `chain_type` 'ethereum'
    - `method` 'eth_sign7702Authorization', required
    - `params` EthereumSign7702AuthorizationRpcInputParams, required — Parameters for the EVM `eth_sign7702Authorization` RPC.
      - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
        - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - integer
      - `contract` string, required
      - `executor` 'self'
      - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
        - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - integer
    - `wallet_id` string
  - object — Executes an RPC method to hash and sign a UserOperation.
    - `address` string
    - `chain_type` 'ethereum'
    - `method` 'eth_signUserOperation', required
    - `params` EthereumSignUserOperationRpcInputParams, required — Parameters for the EVM `eth_signUserOperation` RPC.
      - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
        - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - integer
      - `contract` string, required
      - `user_operation` UserOperationInput, required — An ERC-4337 user operation.
        - `call_data` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `call_gas_limit` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `max_fee_per_gas` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `max_priority_fee_per_gas` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `nonce` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `paymaster` string
        - `paymaster_data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `paymaster_post_op_gas_limit` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `paymaster_verification_gas_limit` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `pre_verification_gas` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `sender` string, required
        - `verification_gas_limit` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
    - `wallet_id` string
  - object — Executes the `wallet_sendCalls` RPC (EIP-5792) to batch multiple calls into a single atomic transaction.
    - `address` string
    - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
    - `chain_type` 'ethereum'
    - `experimental_data_suffix` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
    - `method` 'wallet_sendCalls', required
    - `params` EthereumSendCallsRpcInputParams, required — Parameters for the `wallet_sendCalls` RPC.
      - `calls` EthereumSendCallsCall[], required
        - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `to` string, required
        - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
          - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - integer
    - `sponsor` boolean
    - `wallet_id` string
  - object — Executes the SVM `signTransaction` RPC to sign a transaction.
    - `address` string
    - `chain_type` 'solana'
    - `method` 'signTransaction', required
    - `params` SolanaSignTransactionRpcInputParams, required — Parameters for the SVM `signTransaction` RPC.
      - `encoding` 'base64', required
      - `transaction` string, required
    - `wallet_id` string
  - object — Executes the SVM `signAndSendTransaction` RPC to sign and broadcast a transaction.
    - `address` string
    - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
    - `chain_type` 'solana'
    - `method` 'signAndSendTransaction', required
    - `optimistic_broadcast` boolean
    - `params` SolanaSignAndSendTransactionRpcInputParams, required — Parameters for the SVM `signAndSendTransaction` RPC.
      - `encoding` 'base64', required
      - `transaction` string, required
    - `reference_id` string
    - `sponsor` boolean
    - `wallet_id` string
  - object — Executes the SVM `signMessage` RPC to sign a message.
    - `address` string
    - `chain_type` 'solana'
    - `method` 'signMessage', required
    - `params` SolanaSignMessageRpcInputParams, required — Parameters for the SVM `signMessage` RPC.
      - `encoding` 'base64', required
      - `message` string, required
    - `wallet_id` string
  - object — Transfers satoshis to a Spark address.
    - `method` 'transfer', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkTransferRpcInputParams, required — Parameters for the Spark `transfer` RPC.
      - `amount_sats` number, required
      - `receiver_spark_address` string, required
  - object — Gets the balance of the Spark wallet.
    - `method` 'getBalance', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
  - object — Transfers tokens to a Spark address.
    - `method` 'transferTokens', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkTransferTokensRpcInputParams, required — Parameters for the Spark `transferTokens` RPC.
      - `output_selection_strategy` 'SMALL_FIRST' | 'LARGE_FIRST' — Strategy for selecting outputs in a Spark token transfer.
      - `receiver_spark_address` string, required
      - `selected_outputs` OutputWithPreviousTransactionData[]
        - `output` TokenOutput — A Spark token output.
          - `id` string
          - `owner_public_key` string, required
          - `revocation_commitment` string
          - `token_amount` string, required
          - `token_identifier` string
          - `token_public_key` string
          - `withdraw_bond_sats` number
          - `withdraw_relative_block_locktime` number
        - `previous_transaction_hash` string, required
        - `previous_transaction_vout` number, required
      - `token_amount` number, required
      - `token_identifier` string, required
  - object — Gets a static deposit address for the Spark wallet.
    - `method` 'getStaticDepositAddress', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
  - object — Gets a quote for claiming a static deposit.
    - `method` 'getClaimStaticDepositQuote', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkGetClaimStaticDepositQuoteRpcInputParams, required — Parameters for the Spark `getClaimStaticDepositQuote` RPC.
      - `output_index` number
      - `transaction_id` string, required
  - object — Claims a static deposit into the Spark wallet.
    - `method` 'claimStaticDeposit', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkClaimStaticDepositRpcInputParams, required — Parameters for the Spark `claimStaticDeposit` RPC.
      - `credit_amount_sats` number, required
      - `output_index` number
      - `signature` string, required
      - `transaction_id` string, required
  - object — Creates a Lightning invoice for the Spark wallet.
    - `method` 'createLightningInvoice', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkCreateLightningInvoiceRpcInputParams, required — Parameters for the Spark `createLightningInvoice` RPC.
      - `amount_sats` number, required
      - `description_hash` string
      - `expiry_seconds` number
      - `include_spark_address` boolean
      - `memo` string
      - `receiver_identity_pubkey` string
  - object — Pays a Lightning invoice from the Spark wallet.
    - `method` 'payLightningInvoice', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkPayLightningInvoiceRpcInputParams, required — Parameters for the Spark `payLightningInvoice` RPC.
      - `amount_sats_to_send` number
      - `invoice` string, required
      - `max_fee_sats` number, required
      - `prefer_spark` boolean
  - object — Signs a message with the Spark identity key.
    - `method` 'signMessageWithIdentityKey', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkSignMessageWithIdentityKeyRpcInputParams, required — Parameters for the Spark `signMessageWithIdentityKey` RPC.
      - `compact` boolean
      - `message` string, required
  - object — Withdraws from Spark to a Bitcoin L1 address (cooperative exit).
    - `method` 'withdraw', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkWithdrawRpcInputParams, required — Parameters for the Spark `withdraw` RPC.
      - `amount_sats` number
      - `deduct_fee_from_withdrawal_amount` boolean
      - `exit_speed` 'FAST' | 'MEDIUM' | 'SLOW', required — The exit speed for a cooperative withdrawal from Spark to L1.
      - `fee_amount_sats` number
      - `fee_quote_id` string
      - `onchain_address` string, required
  - object — Gets a fee quote for withdrawing from Spark to a Bitcoin L1 address.
    - `method` 'getWithdrawalFeeQuote', required
    - `network` 'MAINNET' | 'REGTEST' — The Spark network.
    - `params` SparkGetWithdrawalFeeQuoteRpcInputParams, required — Parameters for the Spark `getWithdrawalFeeQuote` RPC.
      - `amount_sats` number, required
      - `onchain_address` string, required
  - object — Executes the Tron `tron_signTransaction` RPC to sign a transaction. The caller is responsible for broadcasting.
    - `method` 'tron_signTransaction', required
    - `params` TronSignTransactionRpcInputParams, required — Parameters for the Tron `tron_signTransaction` RPC.
      - `raw_data` TronRawDataForSign, required — Tron raw_data for tron_signTransaction. Block reference fields are required; caller is responsible for fetching them.
        - `contract` TronContract[], required
          - union — A Tron contract, discriminated by type. Supported types: TransferContract, TriggerSmartContract.
            - object — Tron native TRX transfer contract.
              - …
            - object — Tron smart contract call (TRC-20 transfers and general contract interactions).
              - …
        - `data` string
        - `expiration` integer, required
        - `fee_limit` integer
        - `ref_block_bytes` string, required
        - `ref_block_hash` string, required
        - `timestamp` integer
  - object — Executes the Tron `tron_sendTransaction` RPC to sign and broadcast a transaction.
    - `caip2` string — A valid CAIP-2 chain ID (e.g. 'eip155:1').
    - `method` 'tron_sendTransaction', required
    - `params` TronSendTransactionRpcInputParams, required — Parameters for the Tron `tron_sendTransaction` RPC.
      - `raw_data` TronRawDataForSend, required — Tron raw_data for tron_sendTransaction. Block reference fields are optional; Privy fetches fresh values if omitted.
        - `contract` TronContract[], required
          - union — A Tron contract, discriminated by type. Supported types: TransferContract, TriggerSmartContract.
            - object — Tron native TRX transfer contract.
              - …
            - object — Tron smart contract call (TRC-20 transfers and general contract interactions).
              - …
        - `data` string
        - `expiration` integer
        - `fee_limit` integer
        - `ref_block_bytes` string
        - `ref_block_hash` string
        - `timestamp` integer
      - `reference_id` string
  - object — Exports the private key of the wallet.
    - `address` string, required
    - `method` 'exportPrivateKey', required
    - `params` PrivateKeyExportInput, required — Input for exporting a wallet (private key or seed phrase) with HPKE encryption.
      - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
      - `export_seed_phrase` boolean
      - `export_type` 'display' | 'client' — The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.
      - `recipient_public_key` union, required — The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.
        - string
        - string
  - object — Exports the seed phrase of the wallet.
    - `address` string, required
    - `method` 'exportSeedPhrase', required
    - `params` SeedPhraseExportInput, required — Input for exporting a wallet (private key or seed phrase) with HPKE encryption.
      - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
      - `export_seed_phrase` boolean
      - `export_type` 'display' | 'client' — The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.
      - `recipient_public_key` union, required — The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.
        - string
        - string

## Response `200`

Signed message or transaction.

- union — Response body for wallet RPC operations, discriminated by method.
  - object — Response to the EVM `personal_sign` RPC.
    - `data` EthereumPersonalSignRpcResponseData, required — Data returned by the EVM `personal_sign` RPC.
      - `encoding` 'hex', required
      - `signature` string, required
    - `method` 'personal_sign', required
  - object — Response to the EVM `eth_signTypedData_v4` RPC.
    - `data` EthereumSignTypedDataRpcResponseData, required — Data returned by the EVM `eth_signTypedData_v4` RPC.
      - `encoding` 'hex', required
      - `signature` string, required
    - `method` 'eth_signTypedData_v4', required
  - object — Response to the EVM `eth_signTransaction` RPC.
    - `data` EthereumSignTransactionRpcResponseData, required — Data returned by the EVM `eth_signTransaction` RPC.
      - `encoding` 'rlp', required
      - `signed_transaction` string, required
    - `method` 'eth_signTransaction', required
  - object — Response to the EVM `eth_sendTransaction` RPC.
    - `data` EthereumSendTransactionRpcResponseData, required — Data returned by the EVM `eth_sendTransaction` RPC.
      - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
      - `hash` string, required
      - `reference_id` string, nullable
      - `transaction_id` string
      - `transaction_request` union — An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).
        - object — An unsigned standard Ethereum transaction object. Supports EVM transaction types 0, 1, 2, and 4.
          - `authorization_list` EthereumSign7702Authorization[]
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `y_parity` number, required
          - `chain_id` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `from` string
          - `gas_limit` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `gas_price` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_priority_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `to` string
          - `type` union
            - 0
            - 1
            - 2
            - 4
          - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
        - object — An unsigned Tempo transaction (type 118) with batched calls.
          - `aa_authorization_list` TempoAAAuthorization[]
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `signature` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `access_list` AccessListEntry[]
            - `address` string, required
            - `storage_keys` Hex[], required
          - `calls` TempoCall[], required
            - `data` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `to` string, required
            - `value` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
          - `chain_id` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `fee_payer_signature` TempoFeePayerSignature — A fee payer signature for sponsored Tempo transactions (secp256k1 only).
            - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - `y_parity` union, required
              - …
          - `fee_token` string
          - `from` string
          - `gas_limit` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `max_priority_fee_per_gas` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `nonce_key` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `type` 118, required
          - `valid_after` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
          - `valid_before` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
            - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
            - integer
      - `user_operation_hash` string
    - `method` 'eth_sendTransaction', required
  - object — Response to the EVM `eth_signUserOperation` RPC.
    - `data` EthereumSignUserOperationRpcResponseData, required — Data returned by the EVM `eth_signUserOperation` RPC.
      - `encoding` 'hex', required
      - `signature` string, required
    - `method` 'eth_signUserOperation', required
  - object — Response to the EVM `eth_sign7702Authorization` RPC.
    - `data` EthereumSign7702AuthorizationRpcResponseData, required — Data returned by the EVM `eth_sign7702Authorization` RPC.
      - `authorization` EthereumSign7702Authorization, required — A signed EIP-7702 authorization that delegates code execution to a contract address.
        - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
          - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - integer
        - `contract` string, required
        - `nonce` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
          - string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - integer
        - `r` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `s` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
        - `y_parity` number, required
    - `method` 'eth_sign7702Authorization', required
  - object — Response to the EVM `secp256k1_sign` RPC.
    - `data` EthereumSecp256k1SignRpcResponseData, required — Data returned by the EVM `secp256k1_sign` RPC.
      - `encoding` 'hex', required
      - `signature` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
    - `method` 'secp256k1_sign', required
  - object — Response to the `wallet_sendCalls` RPC.
    - `data` EthereumSendCallsRpcResponseData, required — Data returned by the `wallet_sendCalls` RPC.
      - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
      - `transaction_id` string, required
    - `method` 'wallet_sendCalls', required
  - object — Response to the SVM `signMessage` RPC.
    - `data` SolanaSignMessageRpcResponseData, required — Data returned by the SVM `signMessage` RPC.
      - `encoding` 'base64', required
      - `signature` string, required
    - `method` 'signMessage', required
  - object — Response to the SVM `signTransaction` RPC.
    - `data` SolanaSignTransactionRpcResponseData, required — Data returned by the SVM `signTransaction` RPC.
      - `encoding` 'base64', required
      - `signed_transaction` string, required
    - `method` 'signTransaction', required
  - object — Response to the SVM `signAndSendTransaction` RPC.
    - `data` SolanaSignAndSendTransactionRpcResponseData, required — Data returned by the SVM `signAndSendTransaction` RPC.
      - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
      - `hash` string, required
      - `reference_id` string, nullable
      - `signed_transaction` string
      - `transaction_id` string
    - `method` 'signAndSendTransaction', required
  - object — Response to the Spark `transfer` RPC.
    - `data` SparkTransfer — A Spark transfer.
      - `created_time` string
      - `expiry_time` string
      - `id` string, required
      - `leaves` SparkTransferLeaf[], required
        - `intermediate_refund_tx` string, required
        - `leaf` SparkWalletLeaf — A Spark wallet leaf node.
          - `id` string, required
          - `network` 'MAINNET' | 'REGTEST', required — The Spark network.
          - `node_tx` string, required
          - `owner_identity_public_key` string, required
          - `parent_node_id` string
          - `refund_tx` string, required
          - `signing_keyshare` SparkSigningKeyshare — A Spark signing keyshare.
            - `owner_identifiers` string[], required
            - `public_key` string, required
            - `public_shares` object, required
            - `threshold` number, required
            - `updated_time` string, required
          - `status` string, required
          - `tree_id` string, required
          - `value` number, required
          - `verifying_public_key` string, required
          - `vout` number, required
        - `secret_cipher` string, required
        - `signature` string, required
      - `receiver_identity_public_key` string, required
      - `sender_identity_public_key` string, required
      - `status` string, required
      - `total_value` number, required
      - `transfer_direction` string, required
      - `type` string, required
      - `updated_time` string
    - `method` 'transfer', required
  - object — Response to the Spark `getBalance` RPC.
    - `data` SparkBalance — The balance of a Spark wallet.
      - `balance` string, required
      - `token_balances` object, required
    - `method` 'getBalance', required
  - object — Response to the Spark `transferTokens` RPC.
    - `data` SparkTransferTokensRpcResponseData — Data returned by the Spark `transferTokens` RPC.
      - `id` string, required
    - `method` 'transferTokens', required
  - object — Response to the Spark `getStaticDepositAddress` RPC.
    - `data` SparkGetStaticDepositAddressRpcResponseData — Data returned by the Spark `getStaticDepositAddress` RPC.
      - `address` string, required
    - `method` 'getStaticDepositAddress', required
  - object — Response to the Spark `getClaimStaticDepositQuote` RPC.
    - `data` SparkGetClaimStaticDepositQuoteRpcResponseData — Data returned by the Spark `getClaimStaticDepositQuote` RPC.
      - `credit_amount_sats` number, required
      - `network` string, required
      - `output_index` number, required
      - `signature` string, required
      - `transaction_id` string, required
    - `method` 'getClaimStaticDepositQuote', required
  - object — Response to the Spark `claimStaticDeposit` RPC.
    - `data` SparkClaimStaticDepositRpcResponseData — Data returned by the Spark `claimStaticDeposit` RPC.
      - `transfer_id` string, required
    - `method` 'claimStaticDeposit', required
  - object — Response to the Spark `createLightningInvoice` RPC.
    - `data` SparkLightningReceiveRequest — A Spark Lightning receive request.
      - `created_at` string, required
      - `id` string, required
      - `invoice` unknown
      - `network` string, required
      - `payment_preimage` string
      - `receiver_identity_public_key` string
      - `status` string, required
      - `transfer` unknown
      - `typename` string, required
      - `updated_at` string, required
    - `method` 'createLightningInvoice', required
  - object — Response to the Spark `payLightningInvoice` RPC.
    - `data` union
      - SparkTransfer — A Spark transfer.
        - `created_time` string
        - `expiry_time` string
        - `id` string, required
        - `leaves` SparkTransferLeaf[], required
          - `intermediate_refund_tx` string, required
          - `leaf` SparkWalletLeaf — A Spark wallet leaf node.
            - `id` string, required
            - `network` 'MAINNET' | 'REGTEST', required — The Spark network.
            - `node_tx` string, required
            - `owner_identity_public_key` string, required
            - `parent_node_id` string
            - `refund_tx` string, required
            - `signing_keyshare` SparkSigningKeyshare — A Spark signing keyshare.
              - …
            - `status` string, required
            - `tree_id` string, required
            - `value` number, required
            - `verifying_public_key` string, required
            - `vout` number, required
          - `secret_cipher` string, required
          - `signature` string, required
        - `receiver_identity_public_key` string, required
        - `sender_identity_public_key` string, required
        - `status` string, required
        - `total_value` number, required
        - `transfer_direction` string, required
        - `type` string, required
        - `updated_time` string
      - SparkLightningSendRequest — A Spark Lightning send request.
        - `created_at` string, required
        - `encoded_invoice` string, required
        - `fee` SparkLightningFee, required — The fee for a Spark Lightning payment.
          - `original_unit` string, required
          - `original_value` number, required
        - `id` string, required
        - `idempotency_key` string, required
        - `network` string, required
        - `payment_preimage` string
        - `status` string, required
        - `transfer` unknown
        - `typename` string, required
        - `updated_at` string, required
    - `method` 'payLightningInvoice', required
  - object — Response to the Spark `signMessageWithIdentityKey` RPC.
    - `data` SparkSignMessageWithIdentityKeyRpcResponseData — Data returned by the Spark `signMessageWithIdentityKey` RPC.
      - `signature` string, required
    - `method` 'signMessageWithIdentityKey', required
  - object — Response to the Spark `withdraw` RPC.
    - `data` SparkCoopExitRequest — A cooperative exit request from Spark to Bitcoin L1.
      - `coop_exit_txid` string, required
      - `created_at` string, required
      - `exit_speed` 'FAST' | 'MEDIUM' | 'SLOW' — The exit speed for a cooperative withdrawal from Spark to L1.
      - `expires_at` string, required
      - `fee` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `fee_quote_id` string
      - `id` string, required
      - `l1_broadcast_fee` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `network` string, required
      - `status` string, required
      - `updated_at` string, required
    - `method` 'withdraw', required
  - object — Response to the Spark `getWithdrawalFeeQuote` RPC.
    - `data` SparkCoopExitFeeQuote — A fee quote for a cooperative exit from Spark to Bitcoin L1.
      - `created_at` string, required
      - `expires_at` string, required
      - `id` string, required
      - `l1_broadcast_fee_fast` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `l1_broadcast_fee_medium` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `l1_broadcast_fee_slow` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `network` string, required
      - `total_amount` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `updated_at` string, required
      - `user_fee_fast` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `user_fee_medium` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
      - `user_fee_slow` SparkCurrencyAmount, required — A currency amount with its original value and unit.
        - `original_unit` string, required
        - `original_value` number, required
    - `method` 'getWithdrawalFeeQuote', required
  - object — Response to the Tron `tron_signTransaction` RPC.
    - `data` TronSignTransactionRpcResponseData, required — Data returned by the Tron `tron_signTransaction` RPC.
      - `encoding` 'hex', required
      - `signed_transaction` string, required
    - `method` 'tron_signTransaction', required
  - object — Response to the Tron `tron_sendTransaction` RPC.
    - `data` TronSendTransactionRpcResponseData, required — Data returned by the Tron `tron_sendTransaction` RPC.
      - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
      - `hash` string, required
      - `reference_id` string
      - `transaction_id` string, required
    - `method` 'tron_sendTransaction', required
  - object — Response to the `exportPrivateKey` RPC.
    - `data` PrivateKeyExportInput, required — Input for exporting a wallet (private key or seed phrase) with HPKE encryption.
      - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
      - `export_seed_phrase` boolean
      - `export_type` 'display' | 'client' — The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.
      - `recipient_public_key` union, required — The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.
        - string
        - string
    - `method` 'exportPrivateKey', required
  - object — Response to the `exportSeedPhrase` RPC.
    - `data` SeedPhraseExportResponse, required — Response containing HPKE-encrypted wallet data (private key or seed phrase).
      - `ciphertext` string, required
      - `encapsulated_key` string, required
      - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
    - `method` 'exportSeedPhrase', required

---

[API](https://skmtc.net/privy-io/apis/privy-api.md) · [All operations](https://skmtc.net/privy-io/apis/privy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/privy-io/privy-api/revisions/bb2eb34156cc/schema)
