Skip to main content
GET
/
clients
/
me
/
chains
/
{chain}
/
transactions
/
{signature}
Get transaction details by signature
curl --request GET \
  --url https://api.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature}', 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.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$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.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

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.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.portalhq.io/api/v3/clients/me/chains/{chain}/transactions/{signature}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "data": {
    "evmTransaction": {
      "hash": "<string>",
      "from": "<string>",
      "to": "<string>",
      "value": "<string>",
      "nonce": "<string>",
      "blockNumber": "<string>",
      "blockHash": "<string>",
      "transactionIndex": "<string>",
      "gas": "<string>",
      "gasPrice": "<string>",
      "maxFeePerGas": "<string>",
      "maxPriorityFeePerGas": "<string>",
      "input": "<string>",
      "type": "<string>",
      "status": "<string>",
      "gasUsed": "<string>",
      "effectiveGasPrice": "<string>",
      "logs": [
        {
          "address": "<string>",
          "topics": [
            "<string>"
          ],
          "data": "<string>",
          "blockNumber": "<string>",
          "transactionHash": "<string>",
          "logIndex": "<string>"
        }
      ],
      "contractAddress": "<string>"
    },
    "evmUserOperation": {
      "sender": "<string>",
      "nonce": "<string>",
      "callData": "<string>",
      "callGasLimit": "<string>",
      "verificationGasLimit": "<string>",
      "preVerificationGas": "<string>",
      "maxFeePerGas": "<string>",
      "maxPriorityFeePerGas": "<string>",
      "signature": "<string>",
      "entryPoint": "<string>",
      "success": true,
      "actualGasCost": "<string>",
      "formattedActualGasCost": "<string>",
      "actualGasUsed": "<string>",
      "receipt": {
        "hash": "<string>",
        "from": "<string>",
        "to": "<string>",
        "value": "<string>",
        "nonce": "<string>",
        "blockNumber": "<string>",
        "blockHash": "<string>",
        "transactionIndex": "<string>",
        "gas": "<string>",
        "gasPrice": "<string>",
        "maxFeePerGas": "<string>",
        "maxPriorityFeePerGas": "<string>",
        "input": "<string>",
        "type": "<string>",
        "status": "<string>",
        "gasUsed": "<string>",
        "effectiveGasPrice": "<string>",
        "logs": [
          {
            "address": "<string>",
            "topics": [
              "<string>"
            ],
            "data": "<string>",
            "blockNumber": "<string>",
            "transactionHash": "<string>",
            "logIndex": "<string>"
          }
        ],
        "contractAddress": "<string>"
      }
    },
    "solanaTransaction": {
      "blockTime": 123,
      "error": "<string>",
      "signature": "<string>",
      "status": "<string>",
      "tokenMint": "<string>",
      "transactionDetails": {
        "transaction": {
          "message": {
            "accountKeys": [
              "<string>"
            ],
            "header": {},
            "instructions": [
              {}
            ],
            "recentBlockhash": "<string>"
          },
          "signatures": [
            "<string>"
          ]
        },
        "signatureDetails": {
          "blockTime": 123,
          "confirmationStatus": "<string>",
          "error": {},
          "memo": "<string>",
          "signature": "<string>",
          "slot": 123
        },
        "metadata": {
          "blockTime": 123,
          "slot": 123,
          "error": {},
          "fee": 123,
          "innerInstructions": [
            {}
          ],
          "loadedAddresses": {
            "readonly": [
              "<string>"
            ],
            "writable": [
              "<string>"
            ]
          },
          "logMessages": [
            "<string>"
          ],
          "postBalances": [
            123
          ],
          "postTokenBalances": [
            {}
          ],
          "preBalances": [
            123
          ],
          "preTokenBalances": [
            {}
          ],
          "rewards": [
            {}
          ],
          "status": {},
          "version": "<string>"
        }
      }
    },
    "bitcoinTransaction": {
      "txid": "<string>",
      "version": 123,
      "size": 123,
      "weight": 123,
      "locktime": 123,
      "fee": 123,
      "status": {
        "confirmed": true,
        "blockHeight": 123,
        "blockHash": "<string>",
        "blockTime": 123
      },
      "vin": [
        {
          "txid": "<string>",
          "vout": 123,
          "prevout": {
            "scriptpubkey": "<string>",
            "scriptpubkey_address": "<string>",
            "value": 123
          },
          "scriptsig": "<string>",
          "witness": [
            "<string>"
          ],
          "sequence": 123
        }
      ],
      "vout": [
        {
          "scriptpubkey": "<string>",
          "scriptpubkey_address": "<string>",
          "value": 123
        }
      ]
    },
    "stellarTransaction": {
      "id": "<string>",
      "hash": "<string>",
      "ledger": 123,
      "createdAt": "<string>",
      "sourceAccount": "<string>",
      "feeCharged": "<string>",
      "maxFee": "<string>",
      "operationCount": 123,
      "successful": true,
      "memo": "<string>",
      "memoType": "<string>",
      "operations": [
        {
          "id": "<string>",
          "type": "<string>",
          "sourceAccount": "<string>"
        }
      ]
    },
    "tronTransaction": {
      "txID": "<string>",
      "blockNumber": 123,
      "blockTimeStamp": 123,
      "contractResult": [
        "<string>"
      ],
      "receipt": {
        "result": "<string>",
        "energyUsage": 123,
        "energyUsageTotal": 123,
        "netUsage": 123
      },
      "contractType": "<string>",
      "contractData": {},
      "result": "<string>"
    }
  },
  "metadata": {
    "chainId": "<string>",
    "signature": "<string>"
  }
}
{
"error": "<string>"
}
{
"error": "<string>"
}
{
"error": "<string>"
}

Authorizations

Authorization
string
header
required

Client API Key or Client Session Token (CST). Pass as a Bearer token in the Authorization header.

Path Parameters

chain
string
required

The blockchain chain identifier. Use either a friendly name or CAIP-2 format. When using CAIP-2 format in URLs, ensure the colon (:) is URI-encoded as %3A.

Supported chains:

  • ethereum (eip155:1)
  • sepolia (eip155:11155111)
  • base (eip155:8453)
  • base-sepolia (eip155:84532)
  • polygon (eip155:137)
  • polygon-mumbai (eip155:80001)
  • celo (eip155:42220)
  • celo-alfajores (eip155:44787)
  • monad (eip155:143)
  • monad-testnet (eip155:10143)
  • solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp)
  • solana-devnet (solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1)
  • tron (tron:mainnet)
  • tron-nile (tron:nile)
  • tron-shasta (tron:shasta)
  • stellar (stellar:pubnet)
  • stellar-testnet (stellar:testnet)
  • bitcoin-segwit (bip122:000000000019d6689c085ae165831e93-p2wpkh)
  • bitcoin-segwit-testnet (bip122:000000000933ea01ad0ee984209779ba-p2wpkh)
  • bitcoin-p2wpkh (bip122:000000000019d6689c085ae165831e93-p2wpkh)
  • bitcoin-p2wpkh-testnet (bip122:000000000933ea01ad0ee984209779ba-p2wpkh)
signature
string
required

The transaction hash, signature, or txid to look up. The format depends on the chain type (e.g. EVM transaction hash, Solana signature, Bitcoin txid).

Response

Transaction details retrieved successfully

data
object

Exactly one of the chain-specific fields will be non-null, depending on the chain namespace of the requested transaction.

metadata
object