curl --request GET \
--url https://api.delora.build/v1/transactions/{lookupKey} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.delora.build/v1/transactions/{lookupKey}"
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/{lookupKey}', 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/{lookupKey}",
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/{lookupKey}"
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/{lookupKey}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.delora.build/v1/transactions/{lookupKey}")
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{
"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"
}{
"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/..."
}Get a tracked transaction
Finds a transaction by Delora transactionId, source hash, or destination hash within the integrator associated with the API key.
curl --request GET \
--url https://api.delora.build/v1/transactions/{lookupKey} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.delora.build/v1/transactions/{lookupKey}"
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/{lookupKey}', 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/{lookupKey}",
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/{lookupKey}"
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/{lookupKey}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.delora.build/v1/transactions/{lookupKey}")
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{
"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"
}{
"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/..."
}transactionId, source transaction hash, or destination transaction hash. Lookup is scoped to the integrator associated with x-api-key.
curl 'https://api.delora.build/v1/transactions/TRANSACTION_ID_OR_TX_HASH' \
--header 'x-api-key: YOUR_API_KEY'
404 deliberately covers both unknown lookup keys and records outside your integrator scope. Delora does not reveal whether another integrator owns a transaction.Authorizations
Delora API key. Required by Transaction Tracking endpoints and optional for most routing endpoints.
Headers
Customer API key. Required for Transaction Tracking endpoints.
Path Parameters
Delora transactionId, source transaction hash, or destination transaction hash.
"0x596a6d35655f3d2d334abcffb6b69999b82d5661f18692ea24174589894a7d30"
Response
Tracked transaction.
A read-only transaction-tracking record. Nullable enrichment fields mean unavailable or not yet enriched, not zero.
Delora tracking record ID.
"123"
Delora transaction identifier when available.
Source chain ID stored for the transaction.
Normalized destination chain ID when available.
Canonical source chain ID used for filtering.
Canonical destination chain ID used for filtering.
Provider-specific chain identifier preserved for diagnostics.
Provider-specific chain identifier preserved for diagnostics.
Legacy alias of sourceBlockTimestamp.
Normalized bridge adapter or GENERIC_SWAP. Treat unknown values as forward-compatible.
"RELAY"
Delora route classification.
bridge, swap, bridge_swap, unknown Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Current asynchronous tracking status.
success, recovered, bridge_pending, refund_pending, refunded, bridge_failed, unknown Provider-specific supplementary status. Not a stable enum.
Source or combination of sources used for the current status.
analytics, receipt, bridge_api, mixed, unknown Provider-specific diagnostic payload. Its shape is not a stable public contract.
Timestamp of the scanner's most recent receipt-check attempt. Diagnostic only; it does not prove settlement or finality.
Timestamp of the scanner's most recent bridge-status check attempt. Diagnostic only; it does not prove settlement or finality.
Timestamp of a non-unknown bridge-provider result. Despite its name, it does not by itself mean the bridge settled successfully.

