> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enso.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Check CCTP bridge transaction status

> 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.



## OpenAPI

````yaml /public/openapi.json get /api/v1/cctp/bridge/check
openapi: 3.0.0
info:
  title: Enso API
  description: >-
    #### Enso API

    - Find detailed documentation on
    [docs.enso.finance](https://docs.enso.finance).

    - To use the API, **you must include your API Key in the Authorization
    header** (Bearer format).

    - For testing, Swagger pre-authorizes you using the key:
    `1e02632d-6feb-4a75-a157-documentation` (1rps).

    - Get your own API Key at
    [enso.finance/developers](https://enso.finance/developers).
  version: 1.0.1
  contact: {}
servers:
  - url: https://api.enso.build
security:
  - {}
tags:
  - name: shortcuts
    description: ''
paths:
  /api/v1/cctp/bridge/check:
    get:
      tags:
        - Integration
        - Crosschain
      summary: Check CCTP bridge transaction status
      description: >-
        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.
      operationId: CctpController_checkBridgeTransaction
      parameters:
        - name: chainId
          required: true
          in: query
          description: Chain ID of the source transaction
          schema:
            example: 143
            type: number
        - name: txHash
          required: true
          in: query
          description: Transaction hash of the CCTP bridge transaction on source chain
          schema:
            example: '0x4ac72089eef92b827702281bb2668b416ee6d3e9d953600dc363842e473a157c'
            type: string
      responses:
        '200':
          description: Bridge transaction status and details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CctpBridgeTransactionResponse'
        '429':
          description: Rate limit exceeded (max 1 request per 10 seconds)
components:
  schemas:
    CctpBridgeTransactionResponse:
      type: object
      properties:
        sourceChainId:
          type: number
          description: Source chain ID where the CCTP burn was initiated
          example: 143
        sourceTxHash:
          type: string
          description: Source chain transaction hash
          example: '0x4ac72089eef92b827702281bb2668b416ee6d3e9d953600dc363842e473a157c'
        destinationChainId:
          type: number
          description: Destination chain ID where the mint occurs
          example: 1
        destinationTxHash:
          type: string
          description: Destination chain transaction hash (if mint has completed)
        status:
          type: string
          description: >-
            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.
          enum:
            - pending
            - inflight
            - delivered
            - failed
            - ready_for_manual_execution
            - unknown
        transferType:
          type: string
          description: >-
            CCTP transfer type based on finalityThresholdExecuted: "fast" (<=
            1000) or "standard" (>= 2000)
          enum:
            - fast
            - standard
        delayReason:
          type: string
          description: >-
            Reason Circle reports for delayed message processing
            (insufficient_fee, amount_above_max,
            insufficient_allowance_available).
          example: insufficient_fee
        forward:
          description: >-
            Forwarding Service status for transfers with a forwarding hook
            (incl. HyperCore deposits). The bridge is only 'delivered' once the
            forward completes.
          allOf:
            - $ref: '#/components/schemas/ForwardingStatusInfo'
        depositForBurn:
          description: >-
            Raw depositForBurn function parameters. Present iff the source-chain
            call was plain depositForBurn (no hookData).
          allOf:
            - $ref: '#/components/schemas/DepositForBurnParams'
        depositForBurnDecoded:
          description: >-
            Decoded depositForBurn parameters with token metadata, chain IDs,
            and human-readable values.
          allOf:
            - $ref: '#/components/schemas/DepositForBurnDecoded'
        depositForBurnWithHook:
          description: >-
            Raw depositForBurnWithHook function parameters. Present iff the
            source-chain call was depositForBurnWithHook (non-empty hookData).
          allOf:
            - $ref: '#/components/schemas/DepositForBurnWithHookParams'
        depositForBurnWithHookDecoded:
          description: >-
            Decoded depositForBurnWithHook parameters with token metadata, chain
            IDs, and human-readable values.
          allOf:
            - $ref: '#/components/schemas/DepositForBurnWithHookDecoded'
        ensoSourceEvent:
          description: >-
            Enso shortcut event from source chain (ShortcutExecuted + execution
            result). Null if not found.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/EnsoEvent'
        ensoDestinationEvent:
          description: >-
            Enso shortcut event from the destination chain. Standard CCTP
            transfers carry none; on an intent route it is read from the
            keeper's execution transaction (destinationExecutionTxHash).
          nullable: true
          allOf:
            - $ref: '#/components/schemas/EnsoEvent'
        intent:
          description: >-
            Present when the source transaction published a cross-chain intent:
            this bridge only delivers funds to the intent's ephemeral executor,
            and a keeper then executes the intent (or refunds it past its
            deadline) in a separate destination transaction. `status: delivered`
            means the bridge delivered the funds to the executor; the execution
            itself is reported here (phase, keeper status, execution / repayment
            transactions).
          allOf:
            - $ref: '#/components/schemas/BridgeRouteIntent'
        destinationExecutionTxHash:
          type: string
          description: >-
            The keeper's intent execution transaction on the destination chain,
            once executed - the transaction that performed the Enso swap.
            destinationTxHash is only the bridge delivery that funded the
            executor.
        error:
          type: string
          description: Error message if the check failed
      required:
        - sourceChainId
        - sourceTxHash
        - status
    ForwardingStatusInfo:
      type: object
      properties:
        state:
          type: string
          description: >-
            Raw forward state reported by Circle's Forwarding Service (e.g.
            PENDING, COMPLETED, FAILED). Present only for forwarding-service
            transfers (incl. HyperCore deposits).
          example: FAILED
        errorCode:
          type: string
          description: Error code when the forward failed (e.g. INSUFFICIENT_FEE).
          example: INSUFFICIENT_FEE
        errorDetails:
          type: string
          description: Human-readable details when the forward failed.
          example: Fee provided insufficient for forwarding
        txHash:
          type: string
          description: >-
            Transaction hash of the forward (mint) transaction on the
            destination chain.
      required:
        - state
    DepositForBurnParams:
      type: object
      properties:
        amount:
          type: string
          description: Amount in token subunits
          example: '100000'
        destinationDomain:
          type: number
          description: CCTP destination domain ID
          example: 0
        mintRecipient:
          type: string
          description: Mint recipient as bytes32
          example: '0x00000000000000000000000042d023187acedd3306e3dce2f1b9e4a81d636503'
        burnToken:
          type: string
          description: Burn token address on source chain
          example: '0x754704bc059f8c67012fed69bc8a327a5aafb603'
        destinationCaller:
          type: string
          description: Destination caller restriction (bytes32(0) = anyone)
          example: '0x0000000000000000000000000000000000000000000000000000000000000000'
        maxFee:
          type: string
          description: Maximum fee in token subunits
          example: '0'
        minFinalityThreshold:
          type: number
          description: Minimum finality threshold
          example: 1000
      required:
        - amount
        - destinationDomain
        - mintRecipient
        - burnToken
        - destinationCaller
        - maxFee
        - minFinalityThreshold
    DepositForBurnDecoded:
      type: object
      properties:
        burnToken:
          $ref: '#/components/schemas/TokenAmount'
        destinationChainId:
          type: number
          description: Destination chain ID
          example: 1
        mintRecipient:
          type: string
          description: Recipient address on destination chain (decoded from bytes32)
          example: '0x42d023187acedd3306e3dce2f1b9e4a81d636503'
        destinationCaller:
          type: string
          description: Destination caller as EVM address (decoded from bytes32)
          example: '0x0000000000000000000000000000000000000000'
        maxFee:
          description: Maximum fee with token info
          allOf:
            - $ref: '#/components/schemas/TokenAmount'
        minFinalityThreshold:
          description: Requested finality threshold and type
          allOf:
            - $ref: '#/components/schemas/FinalityInfo'
        finalityThresholdExecuted:
          description: >-
            Actual finality threshold executed by Circle (may differ from
            requested)
          allOf:
            - $ref: '#/components/schemas/FinalityInfo'
        feeExecuted:
          description: Actual fee deducted from minted amount, with token info
          allOf:
            - $ref: '#/components/schemas/TokenAmount'
      required:
        - burnToken
        - destinationChainId
        - mintRecipient
        - destinationCaller
        - maxFee
        - minFinalityThreshold
    DepositForBurnWithHookParams:
      type: object
      properties:
        amount:
          type: string
          description: Amount in token subunits
          example: '100000'
        destinationDomain:
          type: number
          description: CCTP destination domain ID
          example: 0
        mintRecipient:
          type: string
          description: Mint recipient as bytes32
          example: '0x00000000000000000000000042d023187acedd3306e3dce2f1b9e4a81d636503'
        burnToken:
          type: string
          description: Burn token address on source chain
          example: '0x754704bc059f8c67012fed69bc8a327a5aafb603'
        destinationCaller:
          type: string
          description: Destination caller restriction (bytes32(0) = anyone)
          example: '0x0000000000000000000000000000000000000000000000000000000000000000'
        maxFee:
          type: string
          description: Maximum fee in token subunits
          example: '0'
        minFinalityThreshold:
          type: number
          description: Minimum finality threshold
          example: 1000
        hookData:
          type: string
          description: Raw hookData bytes
          example: '0x636374702d666f72776172640000000000000000000000000000000000000000'
      required:
        - amount
        - destinationDomain
        - mintRecipient
        - burnToken
        - destinationCaller
        - maxFee
        - minFinalityThreshold
        - hookData
    DepositForBurnWithHookDecoded:
      type: object
      properties:
        burnToken:
          $ref: '#/components/schemas/TokenAmount'
        destinationChainId:
          type: number
          description: Destination chain ID
          example: 1
        mintRecipient:
          type: string
          description: Recipient address on destination chain (decoded from bytes32)
          example: '0x42d023187acedd3306e3dce2f1b9e4a81d636503'
        destinationCaller:
          type: string
          description: Destination caller as EVM address (decoded from bytes32)
          example: '0x0000000000000000000000000000000000000000'
        maxFee:
          description: Maximum fee with token info
          allOf:
            - $ref: '#/components/schemas/TokenAmount'
        minFinalityThreshold:
          description: Requested finality threshold and type
          allOf:
            - $ref: '#/components/schemas/FinalityInfo'
        finalityThresholdExecuted:
          description: >-
            Actual finality threshold executed by Circle (may differ from
            requested)
          allOf:
            - $ref: '#/components/schemas/FinalityInfo'
        feeExecuted:
          description: Actual fee deducted from minted amount, with token info
          allOf:
            - $ref: '#/components/schemas/TokenAmount'
        hookData:
          description: >-
            hookData payload. `forwardingService` is true when the bytes match
            Circle's "cctp-forward" magic.
          allOf:
            - $ref: '#/components/schemas/HookDataInfo'
      required:
        - burnToken
        - destinationChainId
        - mintRecipient
        - destinationCaller
        - maxFee
        - minFinalityThreshold
        - hookData
    EnsoEvent:
      type: object
      properties:
        accountId:
          type: string
          description: Account ID from ShortcutExecuted event
        requestId:
          type: string
          description: Request ID from ShortcutExecuted event
        blockNumber:
          type: number
          description: Block number where the event was emitted
        transactionHash:
          type: string
          description: Transaction hash
        chainId:
          type: number
          description: Chain ID where the event was emitted
        success:
          type: boolean
          description: Whether the shortcut execution was successful
        error:
          type: string
          description: Error data if execution failed
        refundDetails:
          description: Refund details if execution failed and funds were returned
          allOf:
            - $ref: '#/components/schemas/RefundDetails'
      required:
        - blockNumber
        - transactionHash
        - chainId
        - success
    BridgeRouteIntent:
      type: object
      properties:
        requestId:
          type: string
          description: Intent request id (bytes32) published by the source transaction
        executor:
          type: string
          description: >-
            Ephemeral executor address the bridge delivers to on the execution
            chain (lowercase)
        executionChainId:
          type: number
          description: Chain the intent executes (and refunds) on
        phase:
          type: string
          description: Coarse lifecycle phase of the destination stage
          enum:
            - awaiting_funds
            - executing
            - executed
            - refunding
            - refunded
            - failed
            - unknown
        status:
          type: string
          description: >-
            The keeper's own lifecycle status (pending | waiting_funds |
            inflight | executed | failed | failed_permanent | expired |
            refund_pending | refund_inflight | refunded | refund_skipped |
            refund_failed), or unknown
        statusDescription:
          type: string
          description: Human-readable status explanation
        source:
          type: string
          description: >-
            Where the stage was read from: the intent keeper, or only the chain
            itself
          enum:
            - keeper
            - onchain
        deadline:
          type: string
          description: Intent deadline (ISO 8601). Past it the executor can only refund.
        executionTxHash:
          type: string
          description: The keeper's execution transaction
        executionExplorerUrl:
          type: string
          description: Block-explorer link for the execution transaction
        executedAt:
          type: string
          description: When the execution mined (ISO 8601)
        refundTxHash:
          type: string
          description: The repayment transaction, when funds were swept back
        refundExplorerUrl:
          type: string
          description: Block-explorer link for the repayment transaction
        refundedAt:
          type: string
          description: When the repayment mined (ISO 8601)
        error:
          type: string
          description: Last error the keeper recorded for this intent, if any
      required:
        - requestId
        - executor
        - phase
        - status
        - source
    TokenAmount:
      type: object
      properties:
        token:
          description: Token information
          allOf:
            - $ref: '#/components/schemas/TokenInfo'
        amount:
          type: string
          description: Token amount (in wei/smallest unit)
          example: '1000000000000000000'
      required:
        - token
        - amount
    FinalityInfo:
      type: object
      properties:
        value:
          type: number
          description: Raw finality threshold value
          example: 1000
        type:
          type: string
          description: 'Transfer type: fast (<= 1000) or standard (>= 2000)'
          enum:
            - fast
            - standard
          example: fast
      required:
        - value
        - type
    HookDataInfo:
      type: object
      properties:
        raw:
          type: string
          description: Raw hookData bytes
          example: '0x636374702d666f72776172640000000000000000000000000000000000000000'
        forwardingService:
          type: boolean
          description: >-
            Whether the hookData payload matches Circle's Forwarding Service
            "cctp-forward" magic bytes.
          example: true
        hyperCoreTransfer:
          type: boolean
          description: >-
            True when the hookData is the 56-byte HyperCore forwarding payload
            (forwards the mint into HyperCore via the CctpForwarder).
          example: true
        hyperCoreRecipient:
          type: string
          description: >-
            HyperCore recipient decoded from the forwarding hookData (present
            for HyperCore transfers).
          example: '0x42d023187acedd3306e3dce2f1b9e4a81d636503'
        hyperCoreDestinationDex:
          type: number
          description: >-
            Raw destinationDex from the HyperCore hookData (0 = perps,
            4294967295 = spot).
          example: 4294967295
        hyperCoreDestinationDexType:
          type: string
          description: Human-readable HyperCore destination DEX.
          enum:
            - perps
            - spot
            - unknown
          example: spot
      required:
        - raw
        - forwardingService
    RefundDetails:
      type: object
      properties:
        token:
          type: string
          description: Token address (0xeee... for native token)
        amount:
          type: string
          description: Amount refunded
        recipient:
          type: string
          description: Recipient address
        isNative:
          type: boolean
          description: Whether the refund is in native token
      required:
        - token
        - amount
        - recipient
        - isNative
    TokenInfo:
      type: object
      properties:
        address:
          type: string
          description: Token contract address
          example: '0x55d398326f99059fF775485246999027B3197955'
        symbol:
          type: string
          description: Token symbol (e.g., USDT, USDC)
          example: USDT
        name:
          type: string
          description: Token full name
          example: Tether USD
        decimals:
          type: number
          description: Token decimals
          example: 18
      required:
        - address

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.