Off-Chain Interface
Overview
The Airlift API provides programmatic access to available routes for bridging assets across chains, fee quotes for transfers, and transaction status. It supports fetching transaction metadata, querying available routes, and estimating costs for operations like bridging.
Base URL: https://airlift.prod.glacis-api.network/v1/
🔐 Authentication
Endpoints require authentication, pass your API key in the request header:
x-apikey: YOUR_API_KEY📘 Endpoints
Get Routes
Endpoint: GET /routes
Security: API key
Query Parameters:
isEnabled(boolean, optional): Filter by enabled routes.limit(integer, optional): Number of results per page. Default is 100.offset(integer, optional): Pagination offset. Default is 0.
Response:
Returns a list of supported routes with fields such as:
fromChainName,toChainNamestandard(bridge protocol)estimatedGas,estimatedDurationminTransferSize,maxTransferSizeToken info (
tokenName,tokenId)
Example: List Routes
curl -H "x-apikey: YOUR_API_KEY" "https://airlift.prod.glacis-api.network/v1/routes?limit=1&offset=0"The request above responds with:
{
"paging": {
"self": "https://airlift.prod.glacis-api.network/v1/routes?limit=1&offset=0",
"next": "https://airlift.prod.glacis-api.network/v1/routes?limit=1&offset=1"
},
"data": [
{
"tokenId": "ANGLE",
"tokenName": "ANGLE",
"fromAddress": "0x31429d1856aD1377A8A0079410B297e1a9e214c2",
"toAddress": "0x58441E37255b09F9f545e9Dc957F1C41658ff665",
"fromChainId": "1",
"fromChainName": "Ethereum",
"toChainId": "10",
"toChainName": "OP Mainnet",
"minTransferSize": "0",
"maxTransferSize": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
"decimals": 18,
"estimatedDuration": 210,
"estimatedGas": 341457,
"standard": "LayerZeroV1OFTV1-ANGLE",
"isEnabled": true
}
]
}Pagination
For /routes endpoint, pagination metadata is included in the paging object:
prev: URI for previous pagenext: URI for next pageself: URI for current page
Get Fee Quote
Endpoint: POST /quote
Security: API key
Query Parameters:
fromChain(string, required): Chain ID of source chain (e.g. 10).toChain(string, required): Chain ID of destination chain (e.g. 42161).fromToken(string, required): Source token address (e.g. 0x...).fromAmount(string, required): Amount to transfer (e.g. 100000000000000000).
Response:
Returns an object with the following fields:
toAmount: Net amount after fees.estimatedGas: Estimated gas usage.estimatedDuration: Duration in seconds.feeCosts: Breakdown of bridgeFee and airliftFee (both nativeFee and tokenFee).
Example: Get a Quote
curl -X POST \
-H "x-apikey: YOUR_API_KEY" \
"https://airlift.prod.glacis-api.network/v1/quote?fromChain=10&toChain=42161&fromToken=0xB153FB3d196A8eB25522705560ac152eeEc57901&fromAmount=100000000000000000"The request above responds with:
{
"data": {
"toAmount": "99500000000000000",
"estimatedDuration": 49,
"estimatedGas": 328258,
"feeCosts": {
"bridgeFee": {
"tokenFee": "0",
"nativeFee": "185295726153960"
},
"airliftFee": {
"tokenFee": "500000000000000",
"nativeFee": "0"
}
}
}
}Get Transaction Status by Hash
Endpoint: GET /transactions/{txHash}
Security: API key
Path Parameters:
txHash(string, required): The transaction hash (must match the pattern^0x[0-9a-fA-F]{64}$).
Response: Returns the transaction status, which can be one of:
PENDINGDONEFAILEDNOT_FOUND
Each status has specific substatus values.
Example: Fetch Transaction Status
curl "x-apikey: YOUR_API_KEY" "https://airlift.prod.glacis-api.network/v1/transactions/0xff6e703eb0880718bd44d85715fc9344171ca60b98db90ac9c43315f54b70e84"The request above responds with:
{
"data": {
"status": "DONE",
"substatus": "COMPLETED",
"sourceTx": "0xff6e703eb0880718bd44d85715fc9344171ca60b98db90ac9c43315f54b70e84",
"destinationTx": "0x0ac82765ad624ac157ba9740372a37a14535e8f5f7aa593a8227e11b1519ebbb",
"explorerLink": "https://layerzeroscan.com/tx/0xff6e703eb0880718bd44d85715fc9344171ca60b98db90ac9c43315f54b70e84"
}
}🧾 Transaction Status Reference
Status: PENDING
Substatus values:
WAIT_SOURCE_CONFIRMATIONSWAIT_DESTINATION_TRANSACTIONBRIDGE_NOT_AVAILABLECHAIN_NOT_AVAILABLEREFUND_IN_PROGRESSUNKNOWN_ERROR
Status: DONE
Substatus values:
COMPLETEDPARTIALREFUNDED
Status: FAILED
Substatus values:
NOT_PROCESSABLE_REFUND_NEEDEDOUT_OF_GASSLIPPAGE_EXCEEDEDINSUFFICIENT_ALLOWANCEINSUFFICIENT_BALANCEUNKNOWN_ERROREXPIRED
❗ Error Responses
400
Bad Request
404
Not Found
500
Internal Server Error
503
Server Unavailable
Error format:
{
"error": "Bad Request"
}🧩 Token Standards Supported
The standard field in routes refers to one of:
CCTLayerZero V1 and V2 OFTsNTTM0LitePortalWarpRoute
Last updated