curl --request POST \
--url https://api.biconomy.io/v1/quote \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"ownerAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"composeFlows": [
{
"type": "/instructions/build",
"data": {
"to": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"chainId": 8453,
"functionSignature": "function transfer(address to, uint256 amount)",
"args": [
"<unknown>"
],
"value": "0",
"gasLimit": "50000"
},
"batch": true
}
],
"authorizations": [
{
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
}
],
"fundingTokens": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"amount": "1000000000"
}
],
"cleanUps": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"recipientAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"amount": "1000000",
"gasLimit": "150000"
}
],
"gasLimit": "12345678901234567890",
"lowerBoundTimestamp": 1710000000,
"upperBoundTimestamp": 1710003600,
"simulate": true
}
'import requests
url = "https://api.biconomy.io/v1/quote"
payload = {
"ownerAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"composeFlows": [
{
"type": "/instructions/build",
"data": {
"to": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"chainId": 8453,
"functionSignature": "function transfer(address to, uint256 amount)",
"args": ["<unknown>"],
"value": "0",
"gasLimit": "50000"
},
"batch": True
}
],
"authorizations": [
{
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
}
],
"fundingTokens": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"amount": "1000000000"
}
],
"cleanUps": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"recipientAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"amount": "1000000",
"gasLimit": "150000"
}
],
"gasLimit": "12345678901234567890",
"lowerBoundTimestamp": 1710000000,
"upperBoundTimestamp": 1710003600,
"simulate": True
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ownerAddress: '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
composeFlows: [
{
type: '/instructions/build',
data: {
to: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
chainId: 8453,
functionSignature: 'function transfer(address to, uint256 amount)',
args: ['<unknown>'],
value: '0',
gasLimit: '50000'
},
batch: true
}
],
authorizations: [
{
address: '0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a',
chainId: 8453,
nonce: 38,
r: '0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded',
s: '0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1',
yParity: 1,
v: '28'
}
],
fundingTokens: [
{
tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
chainId: 1,
amount: '1000000000'
}
],
cleanUps: [
{
tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
chainId: 1,
recipientAddress: '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
amount: '1000000',
gasLimit: '150000'
}
],
gasLimit: '12345678901234567890',
lowerBoundTimestamp: 1710000000,
upperBoundTimestamp: 1710003600,
simulate: true
})
};
fetch('https://api.biconomy.io/v1/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.biconomy.io/v1/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ownerAddress' => '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
'composeFlows' => [
[
'type' => '/instructions/build',
'data' => [
'to' => '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'chainId' => 8453,
'functionSignature' => 'function transfer(address to, uint256 amount)',
'args' => [
'<unknown>'
],
'value' => '0',
'gasLimit' => '50000'
],
'batch' => true
]
],
'authorizations' => [
[
'address' => '0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a',
'chainId' => 8453,
'nonce' => 38,
'r' => '0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded',
's' => '0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1',
'yParity' => 1,
'v' => '28'
]
],
'fundingTokens' => [
[
'tokenAddress' => '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'chainId' => 1,
'amount' => '1000000000'
]
],
'cleanUps' => [
[
'tokenAddress' => '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'chainId' => 1,
'recipientAddress' => '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
'amount' => '1000000',
'gasLimit' => '150000'
]
],
'gasLimit' => '12345678901234567890',
'lowerBoundTimestamp' => 1710000000,
'upperBoundTimestamp' => 1710003600,
'simulate' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.biconomy.io/v1/quote"
payload := strings.NewReader("{\n \"ownerAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"composeFlows\": [\n {\n \"type\": \"/instructions/build\",\n \"data\": {\n \"to\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"chainId\": 8453,\n \"functionSignature\": \"function transfer(address to, uint256 amount)\",\n \"args\": [\n \"<unknown>\"\n ],\n \"value\": \"0\",\n \"gasLimit\": \"50000\"\n },\n \"batch\": true\n }\n ],\n \"authorizations\": [\n {\n \"address\": \"0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a\",\n \"chainId\": 8453,\n \"nonce\": 38,\n \"r\": \"0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded\",\n \"s\": \"0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1\",\n \"yParity\": 1,\n \"v\": \"28\"\n }\n ],\n \"fundingTokens\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"amount\": \"1000000000\"\n }\n ],\n \"cleanUps\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"recipientAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"amount\": \"1000000\",\n \"gasLimit\": \"150000\"\n }\n ],\n \"gasLimit\": \"12345678901234567890\",\n \"lowerBoundTimestamp\": 1710000000,\n \"upperBoundTimestamp\": 1710003600,\n \"simulate\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.biconomy.io/v1/quote")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ownerAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"composeFlows\": [\n {\n \"type\": \"/instructions/build\",\n \"data\": {\n \"to\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"chainId\": 8453,\n \"functionSignature\": \"function transfer(address to, uint256 amount)\",\n \"args\": [\n \"<unknown>\"\n ],\n \"value\": \"0\",\n \"gasLimit\": \"50000\"\n },\n \"batch\": true\n }\n ],\n \"authorizations\": [\n {\n \"address\": \"0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a\",\n \"chainId\": 8453,\n \"nonce\": 38,\n \"r\": \"0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded\",\n \"s\": \"0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1\",\n \"yParity\": 1,\n \"v\": \"28\"\n }\n ],\n \"fundingTokens\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"amount\": \"1000000000\"\n }\n ],\n \"cleanUps\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"recipientAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"amount\": \"1000000\",\n \"gasLimit\": \"150000\"\n }\n ],\n \"gasLimit\": \"12345678901234567890\",\n \"lowerBoundTimestamp\": 1710000000,\n \"upperBoundTimestamp\": 1710003600,\n \"simulate\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.biconomy.io/v1/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ownerAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"composeFlows\": [\n {\n \"type\": \"/instructions/build\",\n \"data\": {\n \"to\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"chainId\": 8453,\n \"functionSignature\": \"function transfer(address to, uint256 amount)\",\n \"args\": [\n \"<unknown>\"\n ],\n \"value\": \"0\",\n \"gasLimit\": \"50000\"\n },\n \"batch\": true\n }\n ],\n \"authorizations\": [\n {\n \"address\": \"0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a\",\n \"chainId\": 8453,\n \"nonce\": 38,\n \"r\": \"0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded\",\n \"s\": \"0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1\",\n \"yParity\": 1,\n \"v\": \"28\"\n }\n ],\n \"fundingTokens\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"amount\": \"1000000000\"\n }\n ],\n \"cleanUps\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"recipientAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"amount\": \"1000000\",\n \"gasLimit\": \"150000\"\n }\n ],\n \"gasLimit\": \"12345678901234567890\",\n \"lowerBoundTimestamp\": 1710000000,\n \"upperBoundTimestamp\": 1710003600,\n \"simulate\": true\n}"
response = http.request(request)
puts response.read_body{
"ownerAddress": "0x1234567890abcdef1234567890abcdef12345678",
"fee": {
"amount": "10000000000000000",
"token": "0x0000000000000000000000000000000000000000",
"chainId": 8453
},
"quoteType": "permit",
"quote": {
"hash": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef",
"node": "0x9876543210abcdef9876543210abcdef98765432",
"commitment": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"paymentInfo": {
"sender": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"initCode": "0x1234abcd",
"nonce": "0",
"token": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 1,
"shortEncoding": false,
"tokenValue": "1000 (for 1000 USDC), 250000 (for 1 WBTC very soon)",
"tokenWeiAmount": "1000000000000000000000 (1000 ether), 250000 (0.25 USDC)",
"verificationGasLimit": "21000",
"eoa": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"eip7702Auth": {
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
},
"callGasLimit": "50000",
"sponsored": true,
"sponsorshipUrl": "https://sponsorship.abc.org",
"tokenAmount": "1000 (1000 USDC), 1 (1 ether)",
"gasFee": "21000000000000000",
"orchestrationFee": "1000000000000000"
},
"userOps": [
{
"userOp": {
"sender": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"nonce": "0",
"callData": "0x1234abcd",
"callGasLimit": "21000",
"verificationGasLimit": "100000",
"preVerificationGas": "21000",
"maxFeePerGas": "1000000000",
"maxPriorityFeePerGas": "100000000",
"initCode": "0x1234abcd",
"paymasterAndData": "0x",
"signature": "0xabcdef123456"
},
"userOpHash": "0x1234abcd5678ef90",
"meeUserOpHash": "0xabcdef1234567890",
"lowerBoundTimestamp": 1710000000,
"upperBoundTimestamp": 1710003600,
"maxGasLimit": "1000000",
"maxFeePerGas": "1000000000",
"chainId": 8453,
"eip7702Auth": {
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
},
"isCleanUpUserOp": false,
"shortEncoding": true
}
],
"fundingTokens": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"amount": "1000000000"
}
]
},
"payloadToSign": [
{
"signablePayload": {
"types": {},
"message": {
"owner": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"spender": "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",
"value": "1000000000000000000000",
"nonce": "0",
"deadline": "1647857449"
},
"primaryType": "Permit",
"domain": {
"name": "USD Coin",
"version": "2",
"chainId": 1,
"verifyingContract": "0xA0b86a33E6441c1a7C4FB1e50Fc5F5ED69DC3D2B",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
},
"metadata": {
"nonce": "0",
"name": "USD Coin",
"version": "2",
"domainSeparator": "0x06c37168a7db5138defc7866392bb87a741f9b3d104deb5094588ce041cae335",
"owner": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"spender": "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",
"amount": "1000000000000000000000"
}
}
],
"instructions": [
{
"calls": [
{
"to": "0x1111111254EEB25477B68fb85Ed929f73A960582",
"value": "0",
"functionSig": "transfer(address,uint256)",
"inputParams": [
{
"fetcherType": 0,
"paramData": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"constraints": []
}
],
"outputParams": [
{
"fetcherType": 0,
"paramData": "0x"
}
],
"gasLimit": "100000"
}
],
"chainId": 1,
"isComposable": true
}
],
"returnedData": [
"<unknown>"
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
],
"authorizations": [
{
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"chainId": 0,
"nonce": "123456"
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
]
}Compose instructions and generate a quote
Compose instructions and retrieve a MEE quote in a single request.
curl --request POST \
--url https://api.biconomy.io/v1/quote \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"ownerAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"composeFlows": [
{
"type": "/instructions/build",
"data": {
"to": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"chainId": 8453,
"functionSignature": "function transfer(address to, uint256 amount)",
"args": [
"<unknown>"
],
"value": "0",
"gasLimit": "50000"
},
"batch": true
}
],
"authorizations": [
{
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
}
],
"fundingTokens": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"amount": "1000000000"
}
],
"cleanUps": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"recipientAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"amount": "1000000",
"gasLimit": "150000"
}
],
"gasLimit": "12345678901234567890",
"lowerBoundTimestamp": 1710000000,
"upperBoundTimestamp": 1710003600,
"simulate": true
}
'import requests
url = "https://api.biconomy.io/v1/quote"
payload = {
"ownerAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"composeFlows": [
{
"type": "/instructions/build",
"data": {
"to": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"chainId": 8453,
"functionSignature": "function transfer(address to, uint256 amount)",
"args": ["<unknown>"],
"value": "0",
"gasLimit": "50000"
},
"batch": True
}
],
"authorizations": [
{
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
}
],
"fundingTokens": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"amount": "1000000000"
}
],
"cleanUps": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"recipientAddress": "0x0a7C906832544293a6018bA25280c7f7b0Bbf120",
"amount": "1000000",
"gasLimit": "150000"
}
],
"gasLimit": "12345678901234567890",
"lowerBoundTimestamp": 1710000000,
"upperBoundTimestamp": 1710003600,
"simulate": True
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ownerAddress: '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
composeFlows: [
{
type: '/instructions/build',
data: {
to: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
chainId: 8453,
functionSignature: 'function transfer(address to, uint256 amount)',
args: ['<unknown>'],
value: '0',
gasLimit: '50000'
},
batch: true
}
],
authorizations: [
{
address: '0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a',
chainId: 8453,
nonce: 38,
r: '0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded',
s: '0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1',
yParity: 1,
v: '28'
}
],
fundingTokens: [
{
tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
chainId: 1,
amount: '1000000000'
}
],
cleanUps: [
{
tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
chainId: 1,
recipientAddress: '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
amount: '1000000',
gasLimit: '150000'
}
],
gasLimit: '12345678901234567890',
lowerBoundTimestamp: 1710000000,
upperBoundTimestamp: 1710003600,
simulate: true
})
};
fetch('https://api.biconomy.io/v1/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.biconomy.io/v1/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ownerAddress' => '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
'composeFlows' => [
[
'type' => '/instructions/build',
'data' => [
'to' => '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
'chainId' => 8453,
'functionSignature' => 'function transfer(address to, uint256 amount)',
'args' => [
'<unknown>'
],
'value' => '0',
'gasLimit' => '50000'
],
'batch' => true
]
],
'authorizations' => [
[
'address' => '0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a',
'chainId' => 8453,
'nonce' => 38,
'r' => '0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded',
's' => '0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1',
'yParity' => 1,
'v' => '28'
]
],
'fundingTokens' => [
[
'tokenAddress' => '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'chainId' => 1,
'amount' => '1000000000'
]
],
'cleanUps' => [
[
'tokenAddress' => '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'chainId' => 1,
'recipientAddress' => '0x0a7C906832544293a6018bA25280c7f7b0Bbf120',
'amount' => '1000000',
'gasLimit' => '150000'
]
],
'gasLimit' => '12345678901234567890',
'lowerBoundTimestamp' => 1710000000,
'upperBoundTimestamp' => 1710003600,
'simulate' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.biconomy.io/v1/quote"
payload := strings.NewReader("{\n \"ownerAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"composeFlows\": [\n {\n \"type\": \"/instructions/build\",\n \"data\": {\n \"to\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"chainId\": 8453,\n \"functionSignature\": \"function transfer(address to, uint256 amount)\",\n \"args\": [\n \"<unknown>\"\n ],\n \"value\": \"0\",\n \"gasLimit\": \"50000\"\n },\n \"batch\": true\n }\n ],\n \"authorizations\": [\n {\n \"address\": \"0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a\",\n \"chainId\": 8453,\n \"nonce\": 38,\n \"r\": \"0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded\",\n \"s\": \"0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1\",\n \"yParity\": 1,\n \"v\": \"28\"\n }\n ],\n \"fundingTokens\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"amount\": \"1000000000\"\n }\n ],\n \"cleanUps\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"recipientAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"amount\": \"1000000\",\n \"gasLimit\": \"150000\"\n }\n ],\n \"gasLimit\": \"12345678901234567890\",\n \"lowerBoundTimestamp\": 1710000000,\n \"upperBoundTimestamp\": 1710003600,\n \"simulate\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.biconomy.io/v1/quote")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ownerAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"composeFlows\": [\n {\n \"type\": \"/instructions/build\",\n \"data\": {\n \"to\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"chainId\": 8453,\n \"functionSignature\": \"function transfer(address to, uint256 amount)\",\n \"args\": [\n \"<unknown>\"\n ],\n \"value\": \"0\",\n \"gasLimit\": \"50000\"\n },\n \"batch\": true\n }\n ],\n \"authorizations\": [\n {\n \"address\": \"0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a\",\n \"chainId\": 8453,\n \"nonce\": 38,\n \"r\": \"0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded\",\n \"s\": \"0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1\",\n \"yParity\": 1,\n \"v\": \"28\"\n }\n ],\n \"fundingTokens\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"amount\": \"1000000000\"\n }\n ],\n \"cleanUps\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"recipientAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"amount\": \"1000000\",\n \"gasLimit\": \"150000\"\n }\n ],\n \"gasLimit\": \"12345678901234567890\",\n \"lowerBoundTimestamp\": 1710000000,\n \"upperBoundTimestamp\": 1710003600,\n \"simulate\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.biconomy.io/v1/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ownerAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"composeFlows\": [\n {\n \"type\": \"/instructions/build\",\n \"data\": {\n \"to\": \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n \"chainId\": 8453,\n \"functionSignature\": \"function transfer(address to, uint256 amount)\",\n \"args\": [\n \"<unknown>\"\n ],\n \"value\": \"0\",\n \"gasLimit\": \"50000\"\n },\n \"batch\": true\n }\n ],\n \"authorizations\": [\n {\n \"address\": \"0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a\",\n \"chainId\": 8453,\n \"nonce\": 38,\n \"r\": \"0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded\",\n \"s\": \"0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1\",\n \"yParity\": 1,\n \"v\": \"28\"\n }\n ],\n \"fundingTokens\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"amount\": \"1000000000\"\n }\n ],\n \"cleanUps\": [\n {\n \"tokenAddress\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"chainId\": 1,\n \"recipientAddress\": \"0x0a7C906832544293a6018bA25280c7f7b0Bbf120\",\n \"amount\": \"1000000\",\n \"gasLimit\": \"150000\"\n }\n ],\n \"gasLimit\": \"12345678901234567890\",\n \"lowerBoundTimestamp\": 1710000000,\n \"upperBoundTimestamp\": 1710003600,\n \"simulate\": true\n}"
response = http.request(request)
puts response.read_body{
"ownerAddress": "0x1234567890abcdef1234567890abcdef12345678",
"fee": {
"amount": "10000000000000000",
"token": "0x0000000000000000000000000000000000000000",
"chainId": 8453
},
"quoteType": "permit",
"quote": {
"hash": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef",
"node": "0x9876543210abcdef9876543210abcdef98765432",
"commitment": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"paymentInfo": {
"sender": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"initCode": "0x1234abcd",
"nonce": "0",
"token": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 1,
"shortEncoding": false,
"tokenValue": "1000 (for 1000 USDC), 250000 (for 1 WBTC very soon)",
"tokenWeiAmount": "1000000000000000000000 (1000 ether), 250000 (0.25 USDC)",
"verificationGasLimit": "21000",
"eoa": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"eip7702Auth": {
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
},
"callGasLimit": "50000",
"sponsored": true,
"sponsorshipUrl": "https://sponsorship.abc.org",
"tokenAmount": "1000 (1000 USDC), 1 (1 ether)",
"gasFee": "21000000000000000",
"orchestrationFee": "1000000000000000"
},
"userOps": [
{
"userOp": {
"sender": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"nonce": "0",
"callData": "0x1234abcd",
"callGasLimit": "21000",
"verificationGasLimit": "100000",
"preVerificationGas": "21000",
"maxFeePerGas": "1000000000",
"maxPriorityFeePerGas": "100000000",
"initCode": "0x1234abcd",
"paymasterAndData": "0x",
"signature": "0xabcdef123456"
},
"userOpHash": "0x1234abcd5678ef90",
"meeUserOpHash": "0xabcdef1234567890",
"lowerBoundTimestamp": 1710000000,
"upperBoundTimestamp": 1710003600,
"maxGasLimit": "1000000",
"maxFeePerGas": "1000000000",
"chainId": 8453,
"eip7702Auth": {
"address": "0x00000069E0Fb590E092Dd0E36FF93ac28ff11a3a",
"chainId": 8453,
"nonce": 38,
"r": "0x192a2503401595804c35cdc5b748fe35cceb77ef534bf5d670f7797376487ded",
"s": "0x1fd3c8acd0b7c5f64a8d72c35c39988544fca961b838277ab11750041cccc3d1",
"yParity": 1,
"v": "28"
},
"isCleanUpUserOp": false,
"shortEncoding": true
}
],
"fundingTokens": [
{
"tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chainId": 1,
"amount": "1000000000"
}
]
},
"payloadToSign": [
{
"signablePayload": {
"types": {},
"message": {
"owner": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"spender": "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",
"value": "1000000000000000000000",
"nonce": "0",
"deadline": "1647857449"
},
"primaryType": "Permit",
"domain": {
"name": "USD Coin",
"version": "2",
"chainId": 1,
"verifyingContract": "0xA0b86a33E6441c1a7C4FB1e50Fc5F5ED69DC3D2B",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
},
"metadata": {
"nonce": "0",
"name": "USD Coin",
"version": "2",
"domainSeparator": "0x06c37168a7db5138defc7866392bb87a741f9b3d104deb5094588ce041cae335",
"owner": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"spender": "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",
"amount": "1000000000000000000000"
}
}
],
"instructions": [
{
"calls": [
{
"to": "0x1111111254EEB25477B68fb85Ed929f73A960582",
"value": "0",
"functionSig": "transfer(address,uint256)",
"inputParams": [
{
"fetcherType": 0,
"paramData": "0x742d35C9a91B1D5b5D24Dc30e8F0dF8E84b5d1c4",
"constraints": []
}
],
"outputParams": [
{
"fetcherType": 0,
"paramData": "0x"
}
],
"gasLimit": "100000"
}
],
"chainId": 1,
"isComposable": true
}
],
"returnedData": [
"<unknown>"
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
],
"authorizations": [
{
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"chainId": 0,
"nonce": "123456"
}
]
}{
"code": "<string>",
"message": "<string>",
"errors": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
]
}Authorizations
API Key required to access Supertransaction API. Example: mee_2w3mXCuyt4xVXDRCZ5k5Lhgs
Body
Body
Combine compose flows with quote configuration to compose instructions and generate a quote in a single call.
smart-account, eoa, eoa-7702 EOA wallet address which is used as owner of the orchestrator account
"0x0a7C906832544293a6018bA25280c7f7b0Bbf120"
1 - 10 elementsThis enable developers to specify a build, intent-simple, or intent operation
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Optional fee token configuration. If not specified, sponsorship will be used.
Show child attributes
Show child attributes
Optional cleanup configurations for intermediate tokens
Show child attributes
Show child attributes
Optional gas limit override for the gas userop.
"12345678901234567890"
The lower bound timestamp for the user operation.
1710000000
The upper bound timestamp for the user operation.
1710003600
Show child attributes
Show child attributes
Response
Combined response containing composed instructions and the resulting MEE quote.
Combined response containing composed instructions and the resulting MEE quote.
Owner wallet address which will be used as a owner of orchestrator account
"0x1234567890abcdef1234567890abcdef12345678"
Fee details: amount, token address, and chain ID.
Show child attributes
Show child attributes
Type of MEE signature: permit, onchain, simple, permit-sca, or mm-dtk.
permit, onchain, simple, permit-sca, mm-dtk "permit"
MEE network compatible quote information
Show child attributes
Show child attributes
Array of payloads to be signed, structure depends on the quoteType.
1Full EIP-712 permit signature data (payload and metadata)
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
Show child attributes
Show child attributes