POST
/
v3
/
quote
/
call-quote
curl --request POST \
--url https://be.onebalance.io/api/v3/quote/call-quote \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{
"accounts": [
{
"type": "solana",
"accountAddress": "EB8Hi4LoqUVCGUPJ2y9MsHbEsJQJvmpQRUWrLpjEZxC6"
},
{
"type": "kernel-v3.3-ecdsa",
"accountAddress": "0xDb69A4Ded06AaD92C69c42232b691CFD8bF347e8",
"signerAddress": "0xDb69A4Ded06AaD92C69c42232b691CFD8bF347e8",
"deploymentType": "EIP7702"
}
],
"chainOperation": {
"userOp": {
"sender": "0xdb69a4ded06aad92c69c42232b691cfd8bf347e8",
"nonce": "913479994650515257524606220465835134743662536739504622017003723935449089",
"callData": "0xe9ae5c53010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb0000000000000000000000004ebcfae0c3e747c95504ca7c79c46f725cb4c752000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
"callGasLimit": "2831389",
"verificationGasLimit": "46313",
"preVerificationGas": "0",
"maxFeePerGas": "0",
"maxPriorityFeePerGas": "0",
"paymaster": "0xa784e6482bd5edbfe5991b18cbd545ebd46e1cc4",
"paymasterVerificationGasLimit": "13011",
"paymasterPostOpGasLimit": "0",
"paymasterData": "0x",
"signature": "0x47e6d128f7565732d13d8f59ac876aa3256da6441c0fbb7aad9b73125c617abf181a7bd4c44e4bec03b8369eec23ede97f63917bed538a067f4d17eed68a754e1b"
},
"typedDataToSign": {
"domain": {
"name": "RoleBasedECDSAValidator",
"version": "1.4.3",
"chainId": 42161,
"verifyingContract": "0xA24bD06230f3F54e5bf266AE7A41750eE3b789FA"
},
"types": {
"Approve": [
{
"name": "callDataAndNonceHash",
"type": "bytes32"
}
]
},
"primaryType": "Approve",
"message": {
"callDataAndNonceHash": "0x68752061ab5e1f42561b192a3ea5e70c4005b62a7ea4698b14a35ab0004f6687"
}
},
"assetType": "eip155:42161/erc20:0xaf88d065e77c8cc2239327c5edb3a432268e5831",
"amount": "10000"
},
"tamperProofSignature": "0x6316c2fe49d51af45b7bb7bb311395595fe29b7bd9de2e219cba0942fda2461c1c3f19108d6f391cd02c7cdc7d218ff0945d32ba784be1357b3c954ff7ae254e1c",
"fromAggregatedAssetId": "ob:usdc"
}'
{
"id": "0xcd3a5cfe80d1b84db755bfb8ebe0a617ff153cc48ab6d5ab28436386f06ce100",
"accounts": [
{
"type": "solana",
"accountAddress": "J5CCzBULFax899tcirb6wMbenQUd8whbaetG7EfSick5"
}
],
"originChainsOperations": [
{
"userOp": {
"sender": "0xb8e4b017f4a8870e3eb4eb15c5e180d2a34d877b",
"nonce": "1120126849530...",
"factory": "0xd703aae79538628d27099b8c4f621be4ccd142d5",
"factoryData": "0xc5265d5d000000000000000000000000...",
"callData": "0xe9ae5c530100000000000000000000000000...",
"callGasLimit": "737280",
"verificationGasLimit": "3076170",
"preVerificationGas": "0",
"maxFeePerGas": "0",
"maxPriorityFeePerGas": "0",
"paymaster": "0xa784e6482bd5edbfe5991b18cbd545ebd46e1cc4",
"paymasterVerificationGasLimit": "19219",
"paymasterPostOpGasLimit": "0",
"paymasterData": "0x",
"signature": "0x8cbd9df26744e2a02cde9fb8832d2b5f..."
},
"typedDataToSign": {
"domain": {
"name": "RoleBasedECDSAValidator",
"version": "1.4.3",
"chainId": 10,
"verifyingContract": "0xA24bD06230f3F54e5bf266AE7A41750eE3b789FA"
},
"types": {
"Approve": [
{
"name": "callDataAndNonceHash",
"type": "bytes32"
}
]
},
"primaryType": "Approve",
"message": {
"callDataAndNonceHash": "0xaab2ddac63e4a7e25b7d339cacdff2f9..."
}
},
"assetType": "eip155:10/erc20:0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
"amount": "8000000",
"delegation": {
"contractAddress": "0xd6CEDDe84be40893d153Be9d467CD6aD37875b28",
"nonce": 0,
"signature": {
"chainId": 10,
"contractAddress": "0xd6CEDDe84be40893d153Be9d467CD6aD37875b28",
"nonce": 0,
"r": "0x129b258b9d85f91dab87e488dea08e2803e88a96bb6a967d16fe158a09d95d0d",
"s": "0x52adbaca42ea5b316df5ac0a6ae5f544f5eb450d94c76164e27252101e22d3c3",
"v": "0x1b",
"yParity": 0,
"type": "Signed"
}
}
}
],
"originToken": {
"aggregatedAssetId": "ob:eth",
"amount": "1000000000000000000",
"assetType": [
"eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7",
"eip155:1/slip44:60"
],
"fiatValue": [
{
"assetType": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7",
"fiatValue": "1800.00"
},
{
"assetType": "eip155:1/slip44:60",
"fiatValue": "1800.00"
}
]
},
"destinationToken": {
"aggregatedAssetId": "ob:usdc",
"amount": "100000000",
"assetType": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7",
"fiatValue": "100",
"minimumAmount": "100",
"minimumFiatValue": "100",
"symbol": "USDC",
"name": "USDC",
"decimals": 18,
"recipientAccount": "eip155:42161:0x895Cf62399bF1F8b88195E741b64278b41EB7F09"
},
"expirationTimestamp": "1752673847",
"slippage": {
"origin": {
"percent": "3.57",
"usd": "0.059593",
"value": "59761"
},
"destination": {
"percent": "3.45",
"usd": "0.054180",
"value": "54279"
}
},
"fees": {
"assets": {
"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501": "183581",
"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": "93373"
},
"cumulativeUSD": "0.12"
},
"tamperProofSignature": "0x1ae7e61279f297d5e6bd702388db0069a3cc2b5168eecd91b53ea0b8bbdf7c412742dd8f0ab778c9a3faa7be38031ce6279b65c202b920c65632840accf01d021c"
}

Authorizations

x-api-key
string
header
required

The OneBalance API uses API keys to authenticate requests. All API requests require authentication using an API key passed in the x-api-key header:

curl -X 'GET' \
'https://be.onebalance.io/api/path-to/endpoint' \
-H 'x-api-key: ${ONEBALANCE_API_KEY}' \
...

A public API key is available for testing purposes with limited usage: 42bb629272001ee1163ca0dbbbc07bcbb0ef57a57baf16c4b1d4672db4562c11.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Learn how to generate API access tokens at OneBalance Docs.

Body

application/json

V3 call request with multi-account support for cross-chain contract call execution

accounts
(Role-based Account · object | Basic Account · object | EIP-7702 Account · object | Solana Account · object)[]
required

Array of account configurations. Each account type must be unique. Supports mixed Solana and EVM accounts for cross-chain operations.

Required array length: 1 - 10 elements
Example:
[
{
"type": "solana",
"accountAddress": "EB8Hi4LoqUVCGUPJ2y9MsHbEsJQJvmpQRUWrLpjEZxC6"
},
{
"type": "kernel-v3.3-ecdsa",
"accountAddress": "0xDb69A4Ded06AaD92C69c42232b691CFD8bF347e8",
"signerAddress": "0xDb69A4Ded06AaD92C69c42232b691CFD8bF347e8",
"deploymentType": "EIP7702"
}
]
chainOperation
object
required

Operation (including userOp and typed data) to be executed on-chain. Chain operation containing user operation data, typed data to sign, and optional EIP-7702 delegation.

When EIP-7702 delegation is required, the delegation field will be present and must be signed before submission.

tamperProofSignature
string
required

Tamper-proof signature for the entire call request.

Example:

"0x0e1f9f56bb4072894a24ebc6fe6e41e15f8b9c8ce7bc1d9d88e9a46b85353d55238f0e7a75fbeb71249292e2206887adc894849488d8d8c23a5a17542d5ab2511b"

fromAggregatedAssetId
string

Aggregated asset id for the token to transfer from for bridging to target chain. Used when executing cross-chain operations with multiple accounts.

Example:

"ob:usdc"

slippageTolerance
integer

Slippage tolerance in basis points (1/100th of a percent). For example, 50 = 0.5%, 100 = 1%, 1000 = 10%.

Required range: x >= 1
Example:

50

Response

Call quote

Quote response with support for multiple blockchain types (v3)

id
string
required

Unique quote identifier

Example:

"0xcd3a5cfe80d1b84db755bfb8ebe0a617ff153cc48ab6d5ab28436386f06ce100"

accounts
(Role-based Account · object | Basic Account · object | EIP-7702 Account · object | Solana Account · object)[]
required

Array of accounts used in this quote

Minimum length: 1
Example:
[
{
"type": "solana",
"accountAddress": "J5CCzBULFax899tcirb6wMbenQUd8whbaetG7EfSick5"
}
]
originChainsOperations
object[]
required

Array of blockchain operations to execute, supporting both EVM and Solana

originToken
object
required
destinationToken
object
required
expirationTimestamp
string
required

Unix timestamp when the quote expires

Example:

"1752673847"

tamperProofSignature
string
required

Cryptographic signature to verify quote integrity

Example:

"0x1ae7e61279f297d5e6bd702388db0069a3cc2b5168eecd91b53ea0b8bbdf7c412742dd8f0ab778c9a3faa7be38031ce6279b65c202b920c65632840accf01d021c"

slippage
object

Slippage information for origin and destination

fees
object

Fee breakdown by asset type