---
title: "Check CCTP bridge transaction status"
method: GET
path: "/api/v1/cctp/bridge/check"
tags: ["cctp"]
---

# Check CCTP bridge transaction status

`GET /api/v1/cctp/bridge/check`

Returns information about a cross-chain CCTP bridge transaction, including attestation status, amount, fee, and destination transaction. Rate limited to 1 request per 10 seconds.

## Query parameters

- `chainId` number, required
- `txHash` string, required

## Response `200`

Bridge transaction status and details

- CctpBridgeTransactionResponse
  - `sourceChainId` number, required — Source chain ID where the CCTP burn was initiated
  - `sourceTxHash` string, required — Source chain transaction hash
  - `destinationChainId` number — Destination chain ID where the mint occurs
  - `destinationTxHash` string — Destination chain transaction hash (if mint has completed)
  - `status` 'pending' | 'inflight' | 'delivered' | 'failed' | 'ready_for_manual_execution' | 'unknown', required — Overall bridge status. ready_for_manual_execution: the burn is attested but the destination mint has not been executed — claim it via /api/v1/cctp/bridge/claim.
  - `transferType` 'fast' | 'standard' — CCTP transfer type based on finalityThresholdExecuted: "fast" (<= 1000) or "standard" (>= 2000)
  - `delayReason` string — Reason Circle reports for delayed message processing (insufficient_fee, amount_above_max, insufficient_allowance_available).
  - `forward` ForwardingStatusInfo
    - `state` string, required — Raw forward state reported by Circle's Forwarding Service (e.g. PENDING, COMPLETED, FAILED). Present only for forwarding-service transfers (incl. HyperCore deposits).
    - `errorCode` string — Error code when the forward failed (e.g. INSUFFICIENT_FEE).
    - `errorDetails` string — Human-readable details when the forward failed.
    - `txHash` string — Transaction hash of the forward (mint) transaction on the destination chain.
  - `depositForBurn` DepositForBurnParams
    - `amount` string, required — Amount in token subunits
    - `destinationDomain` number, required — CCTP destination domain ID
    - `mintRecipient` string, required — Mint recipient as bytes32
    - `burnToken` string, required — Burn token address on source chain
    - `destinationCaller` string, required — Destination caller restriction (bytes32(0) = anyone)
    - `maxFee` string, required — Maximum fee in token subunits
    - `minFinalityThreshold` number, required — Minimum finality threshold
  - `depositForBurnDecoded` DepositForBurnDecoded
    - `burnToken` TokenAmount, required
      - `token` TokenInfo, required
        - `address` string, required — Token contract address
        - `symbol` string — Token symbol (e.g., USDT, USDC)
        - `name` string — Token full name
        - `decimals` number — Token decimals
      - `amount` string, required — Token amount (in wei/smallest unit)
    - `destinationChainId` number, required — Destination chain ID
    - `mintRecipient` string, required — Recipient address on destination chain (decoded from bytes32)
    - `destinationCaller` string, required — Destination caller as EVM address (decoded from bytes32)
    - `maxFee` TokenAmount, required
      - `token` TokenInfo, required
        - `address` string, required — Token contract address
        - `symbol` string — Token symbol (e.g., USDT, USDC)
        - `name` string — Token full name
        - `decimals` number — Token decimals
      - `amount` string, required — Token amount (in wei/smallest unit)
    - `minFinalityThreshold` FinalityInfo, required
      - `value` number, required — Raw finality threshold value
      - `type` 'fast' | 'standard', required — Transfer type: fast (<= 1000) or standard (>= 2000)
    - `finalityThresholdExecuted` FinalityInfo
      - `value` number, required — Raw finality threshold value
      - `type` 'fast' | 'standard', required — Transfer type: fast (<= 1000) or standard (>= 2000)
    - `feeExecuted` TokenAmount
      - `token` TokenInfo, required
        - `address` string, required — Token contract address
        - `symbol` string — Token symbol (e.g., USDT, USDC)
        - `name` string — Token full name
        - `decimals` number — Token decimals
      - `amount` string, required — Token amount (in wei/smallest unit)
  - `depositForBurnWithHook` DepositForBurnWithHookParams
    - `amount` string, required — Amount in token subunits
    - `destinationDomain` number, required — CCTP destination domain ID
    - `mintRecipient` string, required — Mint recipient as bytes32
    - `burnToken` string, required — Burn token address on source chain
    - `destinationCaller` string, required — Destination caller restriction (bytes32(0) = anyone)
    - `maxFee` string, required — Maximum fee in token subunits
    - `minFinalityThreshold` number, required — Minimum finality threshold
    - `hookData` string, required — Raw hookData bytes
  - `depositForBurnWithHookDecoded` DepositForBurnWithHookDecoded
    - `burnToken` TokenAmount, required
      - `token` TokenInfo, required
        - `address` string, required — Token contract address
        - `symbol` string — Token symbol (e.g., USDT, USDC)
        - `name` string — Token full name
        - `decimals` number — Token decimals
      - `amount` string, required — Token amount (in wei/smallest unit)
    - `destinationChainId` number, required — Destination chain ID
    - `mintRecipient` string, required — Recipient address on destination chain (decoded from bytes32)
    - `destinationCaller` string, required — Destination caller as EVM address (decoded from bytes32)
    - `maxFee` TokenAmount, required
      - `token` TokenInfo, required
        - `address` string, required — Token contract address
        - `symbol` string — Token symbol (e.g., USDT, USDC)
        - `name` string — Token full name
        - `decimals` number — Token decimals
      - `amount` string, required — Token amount (in wei/smallest unit)
    - `minFinalityThreshold` FinalityInfo, required
      - `value` number, required — Raw finality threshold value
      - `type` 'fast' | 'standard', required — Transfer type: fast (<= 1000) or standard (>= 2000)
    - `finalityThresholdExecuted` FinalityInfo
      - `value` number, required — Raw finality threshold value
      - `type` 'fast' | 'standard', required — Transfer type: fast (<= 1000) or standard (>= 2000)
    - `feeExecuted` TokenAmount
      - `token` TokenInfo, required
        - `address` string, required — Token contract address
        - `symbol` string — Token symbol (e.g., USDT, USDC)
        - `name` string — Token full name
        - `decimals` number — Token decimals
      - `amount` string, required — Token amount (in wei/smallest unit)
    - `hookData` HookDataInfo, required
      - `raw` string, required — Raw hookData bytes
      - `forwardingService` boolean, required — Whether the hookData payload matches Circle's Forwarding Service "cctp-forward" magic bytes.
      - `hyperCoreTransfer` boolean — True when the hookData is the 56-byte HyperCore forwarding payload (forwards the mint into HyperCore via the CctpForwarder).
      - `hyperCoreRecipient` string — HyperCore recipient decoded from the forwarding hookData (present for HyperCore transfers).
      - `hyperCoreDestinationDex` number — Raw destinationDex from the HyperCore hookData (0 = perps, 4294967295 = spot).
      - `hyperCoreDestinationDexType` 'perps' | 'spot' | 'unknown' — Human-readable HyperCore destination DEX.
  - `ensoSourceEvent` EnsoEvent
    - `accountId` string — Account ID from ShortcutExecuted event
    - `requestId` string — Request ID from ShortcutExecuted event
    - `blockNumber` number, required — Block number where the event was emitted
    - `transactionHash` string, required — Transaction hash
    - `chainId` number, required — Chain ID where the event was emitted
    - `success` boolean, required — Whether the shortcut execution was successful
    - `error` string — Error data if execution failed
    - `refundDetails` RefundDetails
      - `token` string, required — Token address (0xeee... for native token)
      - `amount` string, required — Amount refunded
      - `recipient` string, required — Recipient address
      - `isNative` boolean, required — Whether the refund is in native token
  - `error` string — Error message if the check failed

## Other responses

- `429` — Rate limit exceeded (max 1 request per 10 seconds)

---

[API](https://skmtc.net/enso/apis/untitled-api.md) · [All operations](https://skmtc.net/enso/apis/untitled-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/enso/untitled-api/revisions/b70d36b7002b/schema)
