curl --request POST \
--url https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent \
--header 'Content-Type: application/json' \
--header 'X-Auth-Apikey: <api-key>' \
--data '
{
"max_fee": "6.72"
}
'import requests
url = "https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent"
payload = { "max_fee": "6.72" }
headers = {
"X-Auth-Apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Auth-Apikey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({max_fee: '6.72'})
};
fetch('https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent', 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://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent",
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([
'max_fee' => '6.72'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Auth-Apikey: <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://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent"
payload := strings.NewReader("{\n \"max_fee\": \"6.72\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Auth-Apikey", "<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://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent")
.header("X-Auth-Apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"max_fee\": \"6.72\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Auth-Apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"max_fee\": \"6.72\"\n}"
response = http.request(request)
puts response.read_body{
"bridge_id": "cctp-bridge:ethereum:0x5aae…:0192f3a1-…",
"consent_fee": "6.72",
"consent_id": "0b6f1d7e-…",
"state": "bridging"
}Accept a cross-chain deposit fee
When gas is high, a cross-chain deposit waits in awaiting_consent with a quote: bridging now costs quote.target_fee, more than the standard fee. Send that exact amount as max_fee to accept it; the deposit is then bridged and you receive the amount minus that fee. If the fee has changed since you saw it, the answer is 409 with the current quote (and code: quote_changed, stale_quote or not_awaiting_consent) — show it and ask again. Not accepting is fine: the bridge re-checks gas every 10 minutes and bridges on its own once the standard fee covers the cost. Rate limited to 10 per minute.
curl --request POST \
--url https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent \
--header 'Content-Type: application/json' \
--header 'X-Auth-Apikey: <api-key>' \
--data '
{
"max_fee": "6.72"
}
'import requests
url = "https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent"
payload = { "max_fee": "6.72" }
headers = {
"X-Auth-Apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Auth-Apikey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({max_fee: '6.72'})
};
fetch('https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent', 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://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent",
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([
'max_fee' => '6.72'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Auth-Apikey: <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://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent"
payload := strings.NewReader("{\n \"max_fee\": \"6.72\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Auth-Apikey", "<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://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent")
.header("X-Auth-Apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"max_fee\": \"6.72\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/bridge/transfers/{id}/consent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Auth-Apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"max_fee\": \"6.72\"\n}"
response = http.request(request)
puts response.read_body{
"bridge_id": "cctp-bridge:ethereum:0x5aae…:0192f3a1-…",
"consent_fee": "6.72",
"consent_id": "0b6f1d7e-…",
"state": "bridging"
}Authorizations
HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and X-Auth-Signature.
Path Parameters
Body
The fee you accept, in USDC: exactly the target_fee of the bridge's current quote.
"6.72"
Response
"cctp-bridge:ethereum:0x5aae…:0192f3a1-…"
The fee you accepted, in USDC.
"6.72"
Id of your consent.
"0b6f1d7e-…"
Where the bridge is now (usually still awaiting_consent for a moment, then bridging). Refetch the list for the row.
"bridging"