curl --request GET \
--url https://api.delora.build/v1/transactions \
--header 'x-api-key: <api-key>'import requests
url = "https://api.delora.build/v1/transactions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.delora.build/v1/transactions', 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.delora.build/v1/transactions",
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-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"
"net/http"
"io"
)
func main() {
url := "https://api.delora.build/v1/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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://api.delora.build/v1/transactions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.delora.build/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "123",
"transactionId": "<string>",
"sourceTxHash": "<string>",
"destTxHash": "<string>",
"sourceBlockNumber": 123,
"sourceLogIndex": 123,
"sourceChainId": 123,
"destChainId": 123,
"canonicalSourceChainId": 123,
"canonicalDestChainId": 123,
"protocolRawSourceChainId": 123,
"protocolRawDestChainId": 123,
"sourceNetwork": "<string>",
"destNetwork": "<string>",
"date": "2023-11-07T05:31:56Z",
"sourceBlockTimestamp": "2023-11-07T05:31:56Z",
"destinationBlockTimestamp": "2023-11-07T05:31:56Z",
"sender": "<string>",
"receiver": "<string>",
"integrator": "<string>",
"protocol": "RELAY",
"routeType": "bridge",
"hasDestCall": true,
"inputToken": {
"chainId": 123,
"address": "<string>",
"symbol": "<string>",
"amountRaw": "1000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"outputToken": {
"chainId": 123,
"address": "<string>",
"symbol": "<string>",
"amountRaw": "1000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"sourceGasFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"destinationGasFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"integratorFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"deloraFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"status": "success",
"substatus": "<string>",
"statusSource": "analytics",
"bridgeScanUrl": "<string>",
"rawBridgeStatus": {},
"lastReceiptCheckedAt": "2023-11-07T05:31:56Z",
"lastBridgeCheckedAt": "2023-11-07T05:31:56Z",
"lastBridgeSuccessCheckedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"nextCursor": "<string>"
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}List tracked transactions
Returns an asynchronously materialized transaction-tracking page. The API key determines the integrator scope; the optional integrator parameter is only a same-scope assertion.
curl --request GET \
--url https://api.delora.build/v1/transactions \
--header 'x-api-key: <api-key>'import requests
url = "https://api.delora.build/v1/transactions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.delora.build/v1/transactions', 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.delora.build/v1/transactions",
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-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"
"net/http"
"io"
)
func main() {
url := "https://api.delora.build/v1/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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://api.delora.build/v1/transactions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.delora.build/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "123",
"transactionId": "<string>",
"sourceTxHash": "<string>",
"destTxHash": "<string>",
"sourceBlockNumber": 123,
"sourceLogIndex": 123,
"sourceChainId": 123,
"destChainId": 123,
"canonicalSourceChainId": 123,
"canonicalDestChainId": 123,
"protocolRawSourceChainId": 123,
"protocolRawDestChainId": 123,
"sourceNetwork": "<string>",
"destNetwork": "<string>",
"date": "2023-11-07T05:31:56Z",
"sourceBlockTimestamp": "2023-11-07T05:31:56Z",
"destinationBlockTimestamp": "2023-11-07T05:31:56Z",
"sender": "<string>",
"receiver": "<string>",
"integrator": "<string>",
"protocol": "RELAY",
"routeType": "bridge",
"hasDestCall": true,
"inputToken": {
"chainId": 123,
"address": "<string>",
"symbol": "<string>",
"amountRaw": "1000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"outputToken": {
"chainId": 123,
"address": "<string>",
"symbol": "<string>",
"amountRaw": "1000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"sourceGasFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"destinationGasFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"integratorFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"deloraFee": {
"token": "<string>",
"amountRaw": "21000000000000",
"amountFormatted": "<string>",
"decimals": 123,
"amountUsd": "<string>"
},
"status": "success",
"substatus": "<string>",
"statusSource": "analytics",
"bridgeScanUrl": "<string>",
"rawBridgeStatus": {},
"lastReceiptCheckedAt": "2023-11-07T05:31:56Z",
"lastBridgeCheckedAt": "2023-11-07T05:31:56Z",
"lastBridgeSuccessCheckedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"nextCursor": "<string>"
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"timestamp": "2026-05-13T18:00:00.000Z",
"details": {
"message": [
"One or more request parameters are invalid."
]
},
"path": "/v1/..."
}x-api-key.
integrator in normal requests. If you send it, it must exactly match the integrator associated with the key.Filters
All supplied filters combine withAND.
| Parameter | Notes |
|---|---|
cursor | Opaque pagination cursor returned by a prior response. Do not construct, decode, or alter it. |
limit | Number of records: 1–200; defaults to 50. |
status | One of the documented tracking statuses. |
routeType | bridge, swap, bridge_swap, or unknown. |
sourceChainId | Canonical source chain ID. |
destChainId | Canonical destination chain ID. |
integrator | Optional same-scope assertion only. A different integrator returns 403. |
nextCursor is null when there are no more results. The API does not return a total count or provide a snapshot guarantee while new transactions are being ingested.
Response data
Each item is the full tracking record. Amounts and fees use decimal strings in raw token units, and enrichment fields may benull when unavailable rather than zero. Use canonical chain IDs for filters, preserve nextCursor unchanged, and treat provider diagnostics as supplementary data. See Transaction Tracking API for the complete field contract.
The returned transactionId, sourceTxHash, and destTxHash can be used as lookup keys with Get a tracked transaction and Get a tracked transaction status. destTxHash is null until destination-side data is known.
curl --get 'https://api.delora.build/v1/transactions' \
--data-urlencode 'limit=50' \
--data-urlencode 'status=bridge_pending' \
--data-urlencode 'destChainId=42161' \
--header 'x-api-key: YOUR_API_KEY'
Authorizations
Delora API key. Required by Transaction Tracking endpoints and optional for most routing endpoints.
Headers
Customer API key. Required for Transaction Tracking endpoints.
Query Parameters
Opaque cursor returned by a prior response. Pass it through unchanged.
Maximum number of records to return.
1 <= x <= 20050
Optional assertion of the integrator associated with the API key. It cannot be used to select another integrator.
Filter by current tracking status. Current asynchronous tracking status.
success, recovered, bridge_pending, refund_pending, refunded, bridge_failed, unknown Filter by route type. Delora route classification.
bridge, swap, bridge_swap, unknown Filter by canonical source chain ID.
8453
Filter by canonical destination chain ID.
42161

