curl --request GET \
--url https://calibri.io/api/v2/atlas/account/bridge/transfers \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/bridge/transfers"
headers = {"X-Auth-Apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Auth-Apikey': '<api-key>'}};
fetch('https://calibri.io/api/v2/atlas/account/bridge/transfers', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://calibri.io/api/v2/atlas/account/bridge/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Apikey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://calibri.io/api/v2/atlas/account/bridge/transfers")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/bridge/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Auth-Apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"address": "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed",
"amount": "50",
"amount_out": "48",
"bridge_id": "cctp-bridge:ethereum:0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed:0192f3a1-7c1e-7d2a-9b4e-5f6a7b8c9d0e",
"burn_tx_hash": "<string>",
"cctp_fee": "0",
"charged_fee": "<string>",
"consent_fee": "<string>",
"consent_id": "<string>",
"consent_reason": "<string>",
"consented_at": "2026-09-24T10:03:00Z",
"created_at": "2026-09-24T10:00:00Z",
"custody": "safe",
"deliver_by": "2026-09-24T16:00:00Z",
"deposit_amount": "48",
"deposit_credited": true,
"deposit_id": 48213,
"deposit_rejected": false,
"deposit_state": "accepted",
"destination": "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed",
"destination_chain_key": "ethereum",
"direction": "in",
"error": "<string>",
"expense_now": "1.1",
"fee": "2",
"fee_paid": "3",
"gross": "50",
"inbound_from_addresses": [
"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"
],
"inbound_tx_hashes": [
"0x4f3c0d6b0b4a2c5e9b0a3f1d2e6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f"
],
"mint_tx_hash": "<string>",
"minted_at": "2026-09-24T10:17:00Z",
"quote": {
"capped_fee": "2",
"expense": "6.1",
"expires_at": "2026-09-24T10:10:00Z",
"gas_price_wei": "17000000000",
"includes_deploy": false,
"native_usd": "2450.12",
"quote_hash": "0x9f…",
"quoted_at": "2026-09-24T10:00:00Z",
"target_fee": "6.72"
},
"quote_expires_at": "2026-09-24T10:10:00Z",
"source_chain_key": "ethereum",
"source_chain_name": "Ethereum",
"state": "completed",
"updated_at": "2026-09-24T10:17:00Z",
"wait_reason": null,
"withdraw_id": 9121
}
]Cross-chain deposits and withdrawals
Your cross-chain USDC bridges, newest first — one row per bridge: deposits (direction: in, from arrival on the source chain to credit on Polygon) and withdrawals (direction: out, from the burn on Polygon to the mint on the destination chain). direction filters to one of them. Pagination in the Page, Per-Page and Total headers. The list is not pushed live: refetch it, e.g. when the regular deposit notification for the credited mint arrives.
curl --request GET \
--url https://calibri.io/api/v2/atlas/account/bridge/transfers \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/bridge/transfers"
headers = {"X-Auth-Apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Auth-Apikey': '<api-key>'}};
fetch('https://calibri.io/api/v2/atlas/account/bridge/transfers', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://calibri.io/api/v2/atlas/account/bridge/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Apikey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://calibri.io/api/v2/atlas/account/bridge/transfers")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/bridge/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Auth-Apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"address": "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed",
"amount": "50",
"amount_out": "48",
"bridge_id": "cctp-bridge:ethereum:0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed:0192f3a1-7c1e-7d2a-9b4e-5f6a7b8c9d0e",
"burn_tx_hash": "<string>",
"cctp_fee": "0",
"charged_fee": "<string>",
"consent_fee": "<string>",
"consent_id": "<string>",
"consent_reason": "<string>",
"consented_at": "2026-09-24T10:03:00Z",
"created_at": "2026-09-24T10:00:00Z",
"custody": "safe",
"deliver_by": "2026-09-24T16:00:00Z",
"deposit_amount": "48",
"deposit_credited": true,
"deposit_id": 48213,
"deposit_rejected": false,
"deposit_state": "accepted",
"destination": "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed",
"destination_chain_key": "ethereum",
"direction": "in",
"error": "<string>",
"expense_now": "1.1",
"fee": "2",
"fee_paid": "3",
"gross": "50",
"inbound_from_addresses": [
"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"
],
"inbound_tx_hashes": [
"0x4f3c0d6b0b4a2c5e9b0a3f1d2e6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f"
],
"mint_tx_hash": "<string>",
"minted_at": "2026-09-24T10:17:00Z",
"quote": {
"capped_fee": "2",
"expense": "6.1",
"expires_at": "2026-09-24T10:10:00Z",
"gas_price_wei": "17000000000",
"includes_deploy": false,
"native_usd": "2450.12",
"quote_hash": "0x9f…",
"quoted_at": "2026-09-24T10:00:00Z",
"target_fee": "6.72"
},
"quote_expires_at": "2026-09-24T10:10:00Z",
"source_chain_key": "ethereum",
"source_chain_name": "Ethereum",
"state": "completed",
"updated_at": "2026-09-24T10:17:00Z",
"wait_reason": null,
"withdraw_id": 9121
}
]Authorizations
HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and X-Auth-Signature.
Query Parameters
Rows per page. Defaults to 25, capped at 100.
1 <= x <= 100Page number, from 1.
x >= 1in (deposits) or out (withdrawals). Both when omitted.
in, out Response
The receiving address (lowercase).
"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"
USDC received on the source chain (so far, until bridged).
"50"
USDC minted on Polygon.
"48"
Stable id of this bridge: cctp-bridge:{chain_key}:{address}:{run_id}.
"cctp-bridge:ethereum:0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed:0192f3a1-7c1e-7d2a-9b4e-5f6a7b8c9d0e"
Source-chain burn transaction.
What Circle kept, once known.
"0"
The fee actually charged.
The fee you accepted.
Your current consent, if any.
accepted, stale (the fee rose before it could be used: a new offer is waiting), expired, or released (bridged at the standard fee).
"2026-09-24T10:03:00Z"
"2026-09-24T10:00:00Z"
safe or custodial.
"safe"
Withdrawals held for gas (waiting_gas / gas_above_fee): the latest the delivery completes, whatever gas does. null otherwise.
"2026-09-24T16:00:00Z"
Amount of that deposit in USDC — what was credited. null until the deposit is linked.
"48"
True once that deposit has credited your balance (it was accepted, or later). Use this rather than deposit_state: false while unlinked, still being checked, on hold, held in suspense, or rejected.
true
The Polygon deposit the mint created, once it is linked (it appears in your deposits). null until then.
48213
True when that deposit will never be credited: it was rejected, or its funds were returned to the sender. false otherwise.
false
State of that deposit (e.g. submitted, accepted). The USDC is credited only once it is accepted — a linked deposit is not yet a credited one. null until the deposit is linked.
"accepted"
Withdrawals: the recipient there. null on a deposit.
"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"
Withdrawals: the network the USDC is sent to. null on a deposit.
"ethereum"
in (a deposit) or out (a withdrawal to another network).
"in"
Why the bridge failed, when it did.
Withdrawals: the relayer's current estimate of the delivery cost on the destination chain, in USDC. null when not reported.
"1.1"
Our fee in USDC.
"2"
Withdrawals: the fee you paid in the withdrawal, in USDC.
"3"
Withdrawals: fee + amount burned — what left your wallet, in USDC.
"50"
Deposits: the address that sent each inbound transfer on the source network (lowercase), in the order of inbound_tx_hashes; an entry is null when that sender is unknown. null until reported, and on withdrawals.
[
"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"
]
Deposits received on the source chain that this bridge carries.
[
"0x4f3c0d6b0b4a2c5e9b0a3f1d2e6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f"
]
Polygon mint transaction.
When the USDC arrived on Polygon.
"2026-09-24T10:17:00Z"
The current fee quote while the bridge waits on gas; null otherwise.
Show child attributes
Show child attributes
"2026-09-24T10:10:00Z"
Source chain key.
"ethereum"
Source chain display name.
"Ethereum"
Deposits: waiting_minimum → bridging → attesting → minting → completed, or failed. While gas is high: awaiting_consent (accept the fee in quote, or wait) or waiting_gas (the fee is not below the amount: send more USDC to the same address, or wait; see wait_reason). Withdrawals: burned → attesting → minting → completed, or failed; waiting_gas (gas_above_fee) while destination gas is above what the fee covers — completed by deliver_by at the latest. A withdrawal failed with unsponsored was sent without our fee and is not delivered by us.
"completed"
"2026-09-24T10:17:00Z"
Why a waiting bridge waits: fee_exceeds_amount, budget_exhausted, consent_stale, fee_unavailable (the fee cannot be priced right now); for a withdrawal gas_above_fee or unsponsored; or null.
null
Withdrawals: the withdrawal record in your withdrawal history.
9121