Add a new api key for your account with a specified name.
Account
AddNewApiKey
Create a new API key
POST:/account/apikeys
Returns basic account details such as name, email address, KYC status, etc.
Account
GetAccount
Get basic account details
GET:/account
Returns all api keys for your account, optionally including revoked keys.
Account
GetApiKeys
Get API keys
GET:/account/apikeys
Optional
query: { Optional
includeAnything except 'true' will be considered false
.
Revoke an api key for your account.
Account
RevokeApiKey
Revoke an API key
PUT:/account/apikeys/{key}
Build a Babylon pre-stake transaction with signed delegation payloads. Only available on testnet
Bitcoin
BuildBabylonPreStakeTransaction
Build a Babylon pre-stake transaction with signed delegation payloads
POST:/bitcoin/buildBabylonPreStakeTransaction
Build an unsigned pre-stake staking transaction PSBT that needs to be signed by the staker. Only available on testnet
Bitcoin
BuildPreStakeStakingTransaction
Build an unsigned pre-stake staking transaction PSBT
POST:/bitcoin/buildPreStakeStakingTransaction
Build a babylon registration transaction for an existing stake as part of the post-stake flow. Only available on testnet
Bitcoin
BuildRegistrationTransaction
Build a post-stake babylon registration transaction
POST:/bitcoin/buildRegistrationTransaction
Build a bitcoin staking transaction for use with the post-stake flow. Only available on testnet
Bitcoin
BuildStakingTransaction
Build a post-stake bitcoin staking transaction
POST:/bitcoin/buildStakingTransaction
Build an unbonding transaction PSBT. Only available on testnet
Bitcoin
BuildUnbondingTransaction
Build an unbonding transaction PSBT that needs to be signed by the staker.
POST:/bitcoin/buildUnbondingTransaction
Build a withdrawal transaction PSBT for withdrawing funds from unbonded or expired stakes. Only available on testnet
Bitcoin
BuildWithdrawalTransaction
Build a withdrawal transaction PSBT
POST:/bitcoin/buildWithdrawalTransaction
Finalize a verified pre-stake by broadcasting the Bitcoin staking transaction. Only available on testnet
Bitcoin
FinalizePreStake
Broadcast and finalize a verified pre-stake Bitcoin staking transaction
POST:/bitcoin/finalizePreStake
Get UTXOs for a given bitcoin address
Bitcoin
GetAddressUtxos
Get UTXOs for a given bitcoin address. Only available on testnet
GET:/bitcoin/utxos/{address}
Get delegation payloads for a given staking transaction ID. Only available on testnet
Bitcoin
GetDelegationPayloads
Get delegation payloads
POST:/bitcoin/getDelegationPayloads
Get delegation payloads for pre-stake using the unsigned staking transaction. Only available on testnet
Bitcoin
GetDelegationPayloadsPreStake
Get delegation payloads for pre-stake
POST:/bitcoin/getDelegationPayloadsPreStake
Get all staking details for your account. Only available on testnet
Bitcoin
GetStakingDetails
Get all staking details for your account
GET:/bitcoin/stakingDetails
Optional
query: { Optional
address?: stringBitcoin address
Optional
pageOptional
pageGet current staking parameters including confirmation requirements. Only available on testnet
Bitcoin
GetStakingParams
Get current babylon staking protocol parameters
GET:/bitcoin/stakingParams
Get the status of a staking transaction. Only available on testnet
Bitcoin
GetStakingStatus
Get the status of a staking transaction
GET:/bitcoin/stakingStatus/{stakingTxId}
Submit a signed pre-stake registration to Babylon for covenant verification. Only available on testnet
Bitcoin
SubmitPreStakeRegistration
Submit a signed pre-stake registration to Babylon for covenant verification
POST:/bitcoin/submitPreStakeRegistration
Submit a signed staking transaction for broadcasting to the Bitcoin network using the post-stake flow. Only available on testnet
Bitcoin
SubmitStakingTransaction
Broadcast a signed bitcoin staking transaction for use with the post-stake flow
POST:/bitcoin/submitStakingTransaction
Submit a staker-signed unbonding transaction PSBT. Only available on testnet
Bitcoin
SubmitUnbondingTransaction
Submit a staker-signed unbonding transaction PSBT for processing with covenant signatures and broadcasting.
POST:/bitcoin/submitUnbondingTransaction
Submit a signed withdrawal transaction for broadcasting to the Bitcoin network. Only available on testnet
Bitcoin
SubmitWithdrawalTransaction
Submit a signed withdrawal transaction for broadcasting to the Bitcoin network
POST:/bitcoin/submitWithdrawalTransaction
Add a known Cardano stake account to your account
Cardano
AddCardanoStakeAccount
Add Cardano Stake Account
POST:/cardano/stake/account
Returns daily rewards stats of specified stake accounts.
Cardano
GetCardanoStakeAccountDailyRewards
Get daily rewards stats
GET:/cardano/stake/dailyRewards
Optional
currency?: stringfiat currency for ada pricing
Optional
dateunix timestamp of starting date from
Optional
dateunix timestamp of ending date to
comma seperated list of stake account addresses
Returns the 7D, 30D and total staking and MEV rewards for the specified stake accounts.
Cardano
GetCardanoStakePerformanceSummary
Get Cardano stake performance summary
GET:/cardano/stake/performanceSummary
Optional
query: { Optional
stakecomma seperated list of stake account addresses, will return data for all active stake accounts if none are provided
Returns the details of Cardano staking positions for your account.
Cardano
GetCardanoStakes
Get Cardano Stake Accounts
GET:/cardano/stakes
Optional
query: { Optional
pageOptional
pageAbandon stake request and all associated validators.
Ethereum
AbandonEthereumStake
Abandon Stake
PUT:/ethereum/stake/{stakeId}/abandon
Broadcast one or more pre-signed exit messages to the beacon chain
Ethereum
BroadcastEthereumPresignedExitMessage
Broadcast exit message(s)
POST:/ethereum/broadcastPresignedExitMsg
Generate pre-signed exit message(s) for a specified list of public keys and broadcast the message to a beacon node in a single request.
Ethereum
BulkWithdrawEthereumValidators
Bulk withdraw Validators
POST:/ethereum/bulkWithdrawValidators
Generate transaction data for depositing ETH to multiple validators that are not yet active. This endpoint will generate a transaction for interacting with our pectra batch deposit implementation. The returned transaction data must be signed and broadcast by the user.
Ethereum
CraftEthereumValidatorBatchDepositTx
Generate batch initialvalidator deposit transaction
POST:/ethereum/txcrafting/validators/batchdeposit
This endpoint is only to be used with active 0x02 validators, using this to perform initial activation deposits will result in a loss of funds. Generate transaction data for depositing additional ETH to multiple active 0x02 validators. This endpoint will generate a transaction for interacting with our pectra batch deposit implementation. The generated transaction will contain a dummy signature and deposit data root since signature validation is skipped for active validators. The returned transaction data must be signed and broadcast by the user.
Ethereum
CraftEthereumValidatorBatchTopupTx
Generate batch validator top-up transaction
POST:/ethereum/txcrafting/validators/batchtopup
Generate transaction data for performing an EIP 7251 on-chain validator consolidation. This can be used to upgrade a single validator by specifying itself as both the source and target. Or to combine 2 active validators into a single validator. The consolidation transaction must be signed and submitted by the address controlling the source validator (the configured withdrawal address).
Ethereum
CraftEthereumValidatorConsolidateTx
Generate validator consolidation transaction
POST:/ethereum/txcrafting/validators/consolidate
Generate transaction data for depositing ETH to a single validator that is not yet active. This endpoint will generate a transaction for interacting with the canonical beacon deposit contract. The returned transaction data must be signed and broadcast by the user.
Ethereum
CraftEthereumValidatorDepositTx
Generate initial validator deposit transaction
POST:/ethereum/txcrafting/validators/deposit
This endpoint is only to be used with active 0x02 validators, using this to perform initial activation deposits will result in a loss of funds. Generate transaction data for depositing additional ETH to an active 0x02 validator. This endpoint will generate a transaction for interacting with the canonical beacon deposit contract. The generated transaction will contain a dummy signature and deposit data root since signature validation is skipped for active validators. The returned transaction data must be signed and broadcast by the user.
Ethereum
CraftEthereumValidatorTopupTx
Generate validator top-up transaction
POST:/ethereum/txcrafting/validators/topup
Generate transaction data for performing an EIP 7002 on-chain validator withdrawal. This can be used to withdraw accrued rewards exceeding 32 ETH. The withdrawal amount will be capped such that the validator balance does not fall below 32 ETH. This can be used to perform a full exit by specifying an amount of 0. The returned transaction data must be signed and broadcast by the user.
Ethereum
CraftEthereumValidatorWithdrawTx
Generate validator withdrawal transaction
POST:/ethereum/txcrafting/validators/withdraw
Request one or more new validators, returning the individual validator details in the response. Validators created via this endpoint will have 0x01
withdrawal credentials.
Ethereum
CreateEthereumStakeV2
Create Capella-era (0x01) validator(s)
POST:/ethereum/stakeV2
Stake an arbitrary amount of ETH (Denoted in gwei) post-Pectra. This endpoint will calculate and create the appropriate number of validators for the staked amount. The data required for the deposit transaction will be returned in the response. Validators created via this endpoint will have 0x02
withdrawal credentials.
Ethereum
CreateEthereumStakeV3
Create Pectra-era (0x02) validator(s)
POST:/ethereum/stakeV3
DEPRECATED use /stakeV2
instead. Request one or more new validators. Validators created via this endpoint will have 0x01
withdrawal credentials.
Ethereum
CreateStake
[Deprecated] Create Capella-era (0x01) validator(s)
POST:/ethereum/stake
This endpoint will simulate all pending withdrawals up to and including the specified validator indexes. The simulation calculates the estimated exit as if the exit had been processed at that moment in time. The results are indicative and can only account for the state of the exit queue at the time of simulating. If this is being used optimise validator exits, caution should be taken since missing the predictedExitSubmissionDeadlineEpoch
will result in the longest possible period of no rewards earned. Submitting exit messages during the deadline epoch can be risky, some time (2-4 minutes) should be allowed for the beacon chain to process any exit messages broadcasted to the network. We recommend submitting exit messages at least an hour before the deadline epoch to account for unexpected changes to the exit queue. You should also consider the impact of your own withdrawals on the exit queue if you are exiting large amounts of validators at once. This endpoint will return an error in the following situations: - one or more invalid validator indexes are passed - one or more of the specified validators does not have withdrawal credentials set (0x01...) - one or more validators has already exited - one or more validators is not known to the beacon chain Below is a description of each of the fields returned: - expectedExitEpoch - the epoch in which the validator would exit the Beacon chain if its exit was processed at the current time - expectedFullWithdrawalEligibilityEpoch - the epoch where the validator would become eligible for receiving the full staked balance ETH plus any excess - predictedUpcomingWithdrawalEpoch - the predicted epoch in which the validator's withdrawal will be processed by the Beacon chain, taking the current exit queue into account - predictedExitSubmissionDeadlineEpoch - the deadline epoch in which the validator should already be queued for exiting the Beacon chain
Ethereum
EstimateEthereumWithdrawalTimes
Estimate validator exit times
POST:/ethereum/estimateWithdrawalTimes
Generate one or more pre-signed exit messages for a specified list of public keys
Ethereum
GenEthereumPresignedExitMsg
Generate exit message(s)
POST:/ethereum/genPresignedExitMsg
By default, validator records are populated with deposit transaction data suitable for deposits of 32ETH. This endpoint can be used in situations where you want to perform deposits of amounts other than 32ETH. This will generate the deposit transaction data for one or more validators corresponding to the amount(s) specified in the request body. Note that this will not replace nor invalidate the deposit data that is stored on the validator records themselves This endpoint will return an error in the following situations: - an invalid amount is specified (<= 0 or > 32000000000) - one or more of the specified validators is not in a WAITING_DEPOSIT state - one or more validators is not associated your account - the list of specified validators contains duplicate pubkeys
Ethereum
GenerateEthereumDepositData
Generate arbitrary amount deposit data
POST:/ethereum/validators/generateDepositData
Returns deposit data for all validators in the specified stake request.
Ethereum
GetEthereumDepositDataForStake
Get deposit data for Stake
GET:/ethereum/stake/{stakeId}/depositdata
Returns Validators for your account with filtering on reference, withdrawal address, and status. Records are returned in order of initial request.
Ethereum
GetEthereumOrderedValidators
Get Validators
GET:/ethereum/orderedValidators
Optional
query: { Optional
count?: stringdefaults to 100
Optional
reference?: stringOptional
skip?: stringOptional
status?: stringOptional
withdrawalReturns stake details and associated validators by stakeId.
Ethereum
GetEthereumStake
Get Stake details by stakeId
GET:/ethereum/stake/{stakeId}
Returns details of all staking requests for your account including withdrawal address, fee recipient, and validator details.
Ethereum
GetEthereumStakes
Get Stakes
GET:/ethereum/stakes
Optional
query: { Optional
reference?: stringReturns all staking requests with validator status counts.
Ethereum
GetEthereumStakesWithValidatorStatusCounts
Get Stakes with validator counts bystatus
GET:/ethereum/stakesWithValidatorStatusCounts
Optional
query: { Optional
reference?: stringOptional
withdrawalReturns the accounts summary. Individual stakes are not flattened
Ethereum
GetEthereumValidatorAccountsSummary
Get Staking accounts summary
GET:/ethereum/validators/accounts
Returns daily performance stats of validators, returns stats for all active validators if none are specified
Ethereum
GetEthereumValidatorDailyPerformance
Get Validator daily performance
GET:/ethereum/validators/performance
Optional
query: { Optional
validatorcomma seperated list of validator indexes
Returns daily rewards stats of validators, returns stats for all active validators if none are specified
Ethereum
GetEthereumValidatorDailyRewards
Get Validator daily rewards
GET:/ethereum/validators/dailyRewards
Optional
query: { Optional
currency?: stringfiat currency for ethereum pricing
Optional
dateunix timestamp of starting date from
Optional
dateunix timestamp of ending date to
Optional
validatorcomma seperated list of validator indexes
Optional
version?: stringdata source version, v1 = daily balance snapshot, v2 = income details
Optional
waitwhether or not to wait for data sync
Returns the dashboard summary. Individual stakes are flattened
Ethereum
GetEthereumValidatorDashboardSummary
Get Staking dashboard summary
GET:/ethereum/validators/dashboard
Returns validator income history for a given time frame and validator indices
Ethereum
GetEthereumValidatorIncomeHistory
Get Validator income history
GET:/ethereum/validators/incomeHistory
Optional
account?: stringaccount reference to use as filter
Time frame for the data: 1D (1 day in 1-hour chunks) or 1W (1 week in 6-hour chunks)
Optional
validatorcomma seperated list of validator indexes
Returns beacon chain information of validators, returns info for all active validators if none are specified.
Ethereum
GetEthereumValidatorInfo
Get Validator beacon chain info
GET:/ethereum/validators/info
Optional
query: { Optional
validatorcomma seperated list of validator indexes
Returns the estimated wait times and other queue stats for entering and exiting validators.
Ethereum
GetEthereumValidatorQueueStats
Get Validator queue
GET:/ethereum/validators/queueStats
Returns summarized validator rewards data suitable for use in charts.
Ethereum
GetEthereumValidatorRewardsChartData
Get staking rewards chart data
GET:/ethereum/validators/rewardsChartData
Optional
query: { Optional
account?: stringaccount reference to use as filter
Optional
currency?: stringcurrency used for price data
Optional
datapoints?: numbernumber of datapoints to return
Optional
dateunix timestamp of starting date from
Optional
dateunix timestamp of ending date to
Optional
validatorcomma seperated list of validator indexes
Optional
version?: stringdata source version, v1 = daily balance snapshot, v2 = income details
Generate a message with nonce that must be signed to prove wallet ownership
LsEth
AddLsEthWalletChallenge
Generate wallet ownership challenge
POST:/lsEth/wallet/add/challenge
Verify signed challenge and add wallet to Alluvial platform
LsEth
AddLsEthWalletVerify
Verify wallet ownership and add wallet
POST:/lsEth/wallet/add/verify
Check if user is registered for liquid staking ETH services
LsEth
CheckLsEthRegistration
Check liquid staking registration status
GET:/lsEth/registrationStatus
Generate transaction data for claiming ETH from satisfied redemption requests
LsEth
CraftLsEthClaimRedeemTx
Generate claim redemption transaction
POST:/lsEth/txcrafting/claim
Generate transaction data for depositing ETH to receive lsETH tokens
LsEth
CraftLsEthDepositTx
Generate lsETH deposit transaction
POST:/lsEth/txcrafting/deposit
Generate transaction data for redeeming lsETH tokens to receive ETH
LsEth
CraftLsEthRedeemTx
Generate lsETH redemption transaction
POST:/lsEth/txcrafting/redeem
Get combined transaction and redemption history from all allowlisted wallets, sorted by date
LsEth
GetLsEthAggregateActivity
Get aggregate activity across all wallets
GET:/lsEth/activity
Optional
query: { Optional
limit?: numberMaximum number of activities to return (optional)
Get high-level current lsETH protocol statistics including conversion rate, staking rewards, and supply metrics
LsEth
GetLsEthProtocolStats
Get lsETH protocol statistics
GET:/lsEth/protocolStats
Optional
query: { Optional
unit?: "wei"Display lsETH values in units of wei. Defaults to ETH/lsETH with decimal representation if not specified.
Get details of a specific redemption request
LsEth
GetLsEthRedeemDetails
Get redemption request details
GET:/lsEth/redeems/{id}
Get information about the redeem manager including queue and withdrawal stack amounts
LsEth
GetLsEthRedeemManagerInfo
Get redeem manager information
GET:/lsEth/redeemManagerInfo
Get estimated timing for when a redemption request will be satisfied
LsEth
GetLsEthRedeemProjection
Get redemption timing projection
GET:/lsEth/redeems/{id}/projection
Get the lsETH and ETH balance for a wallet address linked to your account
LsEth
GetLsEthWalletBalance
Get wallet lsETH and ETH balance
GET:/lsEth/balance
Wallet address to check balance for (must be linked to your account)
Get transaction history for a specific wallet address linked to your account
LsEth
GetLsEthWalletTransactionHistory
Get wallet transaction history
GET:/lsEth/transactions
Optional
from?: stringStart date for transaction history (ISO format)
"2025-01-01T00:00:00Z"
Optional
nextPagination cursor for next page
"eyJhZnRlciI6IjIwMjUtMDctMjkifQ=="
Optional
pageNumber of transactions per page (default: 100)
100
50
Optional
to?: stringEnd date for transaction history (ISO format)
"2025-12-31T23:59:59Z"
List all redemption requests for your wallets or a specific wallet
LsEth
ListLsEthRedeems
List redemption requests
GET:/lsEth/redeems
Optional
query: { Optional
walletOptional wallet address to filter redemptions (must be linked to your account)
List all wallets associated with the user account with pagination support
LsEth
ListLsEthWallets
List user wallets
GET:/lsEth/wallets
Optional
query: { Optional
allowlist?: booleanEnable to only return allowlisted wallets
true
Optional
limit?: numberLimit for pagination
1
100
20
Optional
offset?: numberOffset for pagination
0
0
Optional
onEnable to only return wallets on platform
true
Register user for liquid staking ETH services
LsEth
RegisterLsEth
Register for liquid staking
POST:/lsEth/register
Get system information including API versions
Public
GetSystemInfo
Get System Info
GET:/public/systemInfo
get data for rendering network statistics (asset prices, assets UAM, etc)
Public
GetWebsiteData
Get Pier Two Public Data
GET:/public/websiteData
Optional
query: { Optional
currency?: stringcurrency used for price data (usd
by default)
get static network config such as chain id, contract addresses, operator addresses, etc
Public
NetworkConfig
Get Network Config
GET:/public/networkConfig
Get supported currency symbols for reporting (chart data and rewards data exports)
Public
SupportedCurrencies
Get Supported Currencies
GET:/public/supportedCurrencies
Generate a stake transaction payload containing one or more instructions. Possible instruction types and inputs are described below: This returns a serialized transaction which can be deserialized, signed and submitted to the network. See @solana/web.js docs for deserializing Versioned Messages and working with Versioned Transactions N.B any instructions operating on an existing stake account must specify target stakePubkey in the request body seperate to the instructions Create and delegate new stake account ~~~ { type: 'createAndDelegate' input: { fromPubkey: pubkey of funding address, stakeAuthority: address authorized to delegate and undelegate stake, withdrawAuthority: address authorized to withdraw stake, lamports: amount of lamports to stake (1 sol = 1000000000 lamports), reference: an arbitrary reference used to identify/group the stake within the Pier Two platform, label: an arbitrary label/memo for use within the Pier Two platform } } ~~~ Create a new stake account (same input data as 'createAndDelegate') ~~~ { type: 'create' input: { fromPubkey: pubkey of funding address, stakeAuthority: address authorized to delegate and undelegate stake, withdrawAuthority: address authorized to withdraw stake, lamports: amount of lamports to stake (1 sol = 1000000000 lamports), reference: an arbitrary reference used to identify/group the stake within the Pier Two platform, label: an arbitrary label/memo for use within the Pier Two platform } } ~~~ Delegate an existing stake account ~~~ { type: 'delegate' input: { authorizedPubkey: address authorized to delegate and undelegate stake } } ~~~ Undelegate (deactivate) an existing stake account ~~~ { type: 'undelegate' input: { authorizedPubkey: address authorized to delegate and undelegate stake } } ~~~ Withdraw inactive stake (deactivated stake balance or any other excess SOL held by account) ~~~ { type: 'withdraw' input: { toPubkey: recipient of withdrawn funds, authorizedPubkey: address authorized to withdraw stake, lamports: amount of lamports to withdraw (1 sol = 1000000000 lamports), } } ~~~ Merge an eligible stake account into target stake account An eligible stake account must have the same stakeAuthority and withdrawAuthority and have been active for an entire epoch and earned rewards ~~~ { type: 'merge' input: { sourceStakePubkey: address of stake account to merge (this account will be dissolved/closed onchain), authorizedPubkey: address authorized to delegate and undelegate } } ~~~ Change withdraw or stake authority address of an existing stake account This must be signed by the existing authority address of the stake account ~~~ { type: 'authorize' input: { authorizedPubkey: the current authority address of the stake account, newAuthorizedPubkey: the new authority address of the stake account, stakeAuthorizationType: the authority type to change (0 for stake authority, 1 for withdraw authority), } } ~~~
Solana
BuildSolanaStakeTransactionPayload
Generate a Solana stake transaction payload
POST:/solana/stake/buildTransaction
Returns information about the current epoch and inflation reward rate.
Solana
GetSolanaNetworkStakingInfo
Get current epoch staking reward info
GET:/solana/stake/networkInfo
Returns daily rewards stats of specified stake accounts.
Solana
GetSolanaStakeAccountDailyRewards
Get daily rewards stats
GET:/solana/stake/dailyRewards
Optional
currency?: stringfiat currency for solana pricing
Optional
dateunix timestamp of starting date from
Optional
dateunix timestamp of ending date to
comma seperated list of stake account pubkeys
Returns the 7D, 30D and total inflation and MEV rewards for the specified stake accounts.
Solana
GetSolanaStakePerformanceSummary
Get Solana stake performance summary
GET:/solana/stake/performanceSummary
Optional
query: { Optional
stakecomma seperated list of stake account pubkeys, will return data for all active stake accounts if none are provided
Returns summarized Solana staking rewards data suitable for use in charts.
Solana
GetSolanaStakeRewardsChartData
Get staking rewards chart data
GET:/solana/stake/rewardsChartData
Optional
query: { Optional
currency?: numbercurrency used for price data
Optional
datapoints?: numbernumber of datapoints to return, defaults to 30
Optional
dateunix timestamp of starting date from
Optional
dateunix timestamp of ending date to
Optional
stakecomma seperated list of stake pubkeys, will return all rewards if none are specified
Returns the details of Solana staking positions for your account.
Solana
GetSolanaStakes
Get Solana Stake Accounts
GET:/solana/stakes
Optional
query: { Optional
pageOptional
pageProtected
addProtected
addProtected
addOptional
rawQuery: QueryParamsTypeProtected
createProtected
encodeProtected
mergeOptional
params2: RequestParamsProtected
toOptional
rawQuery: QueryParamsTypeGenerated using TypeDoc
Title
Pier Two Staking API
Version
1.0.95-mainnet
Base Url
https://gw-1.api.piertwo.io
Contact
The Pier Two Staking API Docs