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

# Get a tracked transaction

> Finds a transaction by source or destination hash, case-insensitively, within the integrator associated with the API key.

Get one tracking record by either its source transaction hash or destination transaction hash. Hash matching is case-insensitive.

```bash theme={null}
curl 'https://api.delora.build/v1/transactions/0xSOURCE_OR_DESTINATION_HASH' \
  --header 'x-api-key: YOUR_API_KEY'
```

<Note>
  `404` deliberately covers both unknown hashes and hashes outside your integrator scope. Delora does not reveal whether another integrator owns a transaction.
</Note>

The response uses the same transaction object returned by [List tracked transactions](/api-reference/endpoint/get-transactions). See [Transaction Tracking API](/api-reference/transaction-tracking/overview) for field and status semantics.


## OpenAPI

````yaml GET /v1/transactions/{txHash}
openapi: 3.1.1
info:
  title: Delora API
  description: Delora API
  version: 1.0.0
servers:
  - url: https://api.delora.build
security: []
tags:
  - name: Health
    description: Service health endpoints.
  - name: V1
    description: Routing and metadata endpoints.
  - name: Transaction Tracking
    description: Read-only, integrator-scoped transaction tracking.
paths:
  /v1/transactions/{txHash}:
    get:
      tags:
        - Transaction Tracking
      summary: Get one tracked transaction by source or destination hash
      description: >-
        Finds a transaction by source or destination hash, case-insensitively,
        within the integrator associated with the API key.
      operationId: getTransactionByHash
      parameters:
        - name: x-api-key
          in: header
          required: true
          description: Customer API key. Required for Transaction Tracking endpoints.
          schema:
            type: string
        - name: txHash
          in: path
          required: true
          description: Source or destination transaction hash.
          schema:
            type: string
            example: '0x596a6d35655f3d2d334abcffb6b69999b82d5661f18692ea24174589894a7d30'
      responses:
        '200':
          description: Tracked transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScannerTransactionResponseDto'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponseDto'
        '404':
          description: >-
            No transaction is available for the hash in the current integrator
            scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponseDto'
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponseDto'
        '503':
          description: Transaction Tracking service is temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponseDto'
      security:
        - api-key: []
components:
  schemas:
    ScannerTransactionResponseDto:
      type: object
      description: >-
        A read-only transaction-tracking record. Nullable enrichment fields mean
        unavailable or not yet enriched, not zero.
      properties:
        id:
          type: string
          description: Delora tracking record ID.
          example: '123'
        transactionId:
          type:
            - string
            - 'null'
          description: Delora transaction identifier when available.
        sourceTxHash:
          type: string
        destTxHash:
          type:
            - string
            - 'null'
        sourceBlockNumber:
          type:
            - integer
            - 'null'
        sourceLogIndex:
          type:
            - integer
            - 'null'
        sourceChainId:
          type: integer
          description: Source chain ID stored for the transaction.
        destChainId:
          type:
            - integer
            - 'null'
          description: Normalized destination chain ID when available.
        canonicalSourceChainId:
          type: integer
          description: Canonical source chain ID used for filtering.
        canonicalDestChainId:
          type:
            - integer
            - 'null'
          description: Canonical destination chain ID used for filtering.
        protocolRawSourceChainId:
          $ref: '#/components/schemas/ScannerProtocolRawChainId'
        protocolRawDestChainId:
          $ref: '#/components/schemas/ScannerProtocolRawChainId'
        sourceNetwork:
          type: string
        destNetwork:
          type:
            - string
            - 'null'
        date:
          type: string
          format: date-time
          description: Legacy alias of sourceBlockTimestamp.
        sourceBlockTimestamp:
          type: string
          format: date-time
        destinationBlockTimestamp:
          type:
            - string
            - 'null'
          format: date-time
        sender:
          type:
            - string
            - 'null'
        receiver:
          type:
            - string
            - 'null'
        integrator:
          type:
            - string
            - 'null'
        protocol:
          type: string
          description: >-
            Normalized bridge adapter or GENERIC_SWAP. Treat unknown values as
            forward-compatible.
          example: RELAY
        routeType:
          $ref: '#/components/schemas/ScannerRouteType'
        hasDestCall:
          type: boolean
        inputToken:
          oneOf:
            - $ref: '#/components/schemas/ScannerTokenAmountDto'
            - type: 'null'
        outputToken:
          oneOf:
            - $ref: '#/components/schemas/ScannerTokenAmountDto'
            - type: 'null'
        sourceGasFee:
          oneOf:
            - $ref: '#/components/schemas/ScannerFeeAmountDto'
            - type: 'null'
        destinationGasFee:
          oneOf:
            - $ref: '#/components/schemas/ScannerFeeAmountDto'
            - type: 'null'
        integratorFee:
          oneOf:
            - $ref: '#/components/schemas/ScannerFeeAmountDto'
            - type: 'null'
        deloraFee:
          oneOf:
            - $ref: '#/components/schemas/ScannerFeeAmountDto'
            - type: 'null'
        status:
          $ref: '#/components/schemas/ScannerStatus'
        substatus:
          type:
            - string
            - 'null'
          description: Provider-specific supplementary status. Not a stable enum.
        statusSource:
          $ref: '#/components/schemas/ScannerStatusSource'
        bridgeScanUrl:
          type:
            - string
            - 'null'
          format: uri
        rawBridgeStatus:
          $ref: '#/components/schemas/ScannerProviderDiagnosticDto'
        lastReceiptCheckedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Timestamp of the scanner's most recent receipt-check attempt.
            Diagnostic only; it does not prove settlement or finality.
        lastBridgeCheckedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Timestamp of the scanner's most recent bridge-status check attempt.
            Diagnostic only; it does not prove settlement or finality.
        lastBridgeSuccessCheckedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Timestamp of a non-unknown bridge-provider result. Despite its name,
            it does not by itself mean the bridge settled successfully.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - transactionId
        - sourceTxHash
        - destTxHash
        - sourceBlockNumber
        - sourceLogIndex
        - sourceChainId
        - destChainId
        - canonicalSourceChainId
        - canonicalDestChainId
        - protocolRawSourceChainId
        - protocolRawDestChainId
        - sourceNetwork
        - destNetwork
        - date
        - sourceBlockTimestamp
        - destinationBlockTimestamp
        - sender
        - receiver
        - integrator
        - protocol
        - routeType
        - hasDestCall
        - inputToken
        - outputToken
        - sourceGasFee
        - destinationGasFee
        - integratorFee
        - deloraFee
        - status
        - substatus
        - statusSource
        - bridgeScanUrl
        - rawBridgeStatus
        - lastReceiptCheckedAt
        - lastBridgeCheckedAt
        - lastBridgeSuccessCheckedAt
        - createdAt
        - updatedAt
    StandardErrorResponseDto:
      type: object
      properties:
        statusCode:
          type: number
          example: 400
        code:
          enum:
            - NO_AVAILABLE_QUOTES
            - AMOUNT_TOO_LOW
            - WRONG_ADDRESS
            - RATE_LIMIT
            - SLIPPAGE_EXCEEDED
            - ADAPTER_BAD_REQUEST
            - ADAPTER_UNAUTHORIZED
            - ADAPTER_INTERNAL
            - VALIDATION_ERROR
            - NOT_FOUND
            - UNKNOWN
          type: string
          description: >-
            Machine-readable Delora error code.

            - NO_AVAILABLE_QUOTES: No bridge or exchange adapter returned an
            executable quote for the requested transfer.

            - AMOUNT_TOO_LOW: The requested input amount is below the minimum
            supported by the available bridge route.

            - WRONG_ADDRESS: A wallet address is missing, malformed, or
            incompatible with the requested chain type.

            - RATE_LIMIT: The request exceeded the configured rate limit.

            - SLIPPAGE_EXCEEDED: The expected output amount fell below the
            route's permitted minimum.

            - ADAPTER_BAD_REQUEST: An upstream bridge or exchange adapter
            rejected the request as invalid.

            - ADAPTER_UNAUTHORIZED: An upstream bridge or exchange adapter
            rejected the request because credentials are missing or invalid.

            - ADAPTER_INTERNAL: An upstream bridge or exchange adapter failed
            with an internal error.

            - VALIDATION_ERROR: The request failed Delora API validation,
            including invalid query parameters, body fields, or address formats.

            - NOT_FOUND: The requested chain, token, or resource was not found.

            - UNKNOWN: The request failed with an unexpected error that does not
            map to a more specific code.
          x-enumDescriptions:
            - >-
              No bridge or exchange adapter returned an executable quote for the
              requested transfer.
            - >-
              The requested input amount is below the minimum supported by the
              available bridge route.
            - >-
              A wallet address is missing, malformed, or incompatible with the
              requested chain type.
            - The request exceeded the configured rate limit.
            - >-
              The expected output amount fell below the route's permitted
              minimum.
            - >-
              An upstream bridge or exchange adapter rejected the request as
              invalid.
            - >-
              An upstream bridge or exchange adapter rejected the request
              because credentials are missing or invalid.
            - >-
              An upstream bridge or exchange adapter failed with an internal
              error.
            - >-
              The request failed Delora API validation, including invalid query
              parameters, body fields, or address formats.
            - The requested chain, token, or resource was not found.
            - >-
              The request failed with an unexpected error that does not map to a
              more specific code.
          example: VALIDATION_ERROR
        message:
          type: string
          example: Invalid request parameters
        details:
          description: >-
            Optional error details. When details is an object, `message` can be
            either a string or an array of strings.
          oneOf:
            - type: object
              additionalProperties: true
              properties:
                message:
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                  description: >-
                    Human-readable details. Validation errors may return
                    multiple messages.
                errorCode:
                  type: string
                code:
                  oneOf:
                    - type: string
                    - type: number
                status:
                  oneOf:
                    - type: string
                    - type: number
            - type: string
            - type: array
              items:
                type: string
          example:
            message:
              - One or more request parameters are invalid.
        timestamp:
          type: string
          example: '2026-05-13T18:00:00.000Z'
        path:
          type: string
          example: /v1/...
      required:
        - statusCode
        - code
        - message
        - timestamp
    ScannerProtocolRawChainId:
      oneOf:
        - type: integer
        - type: string
        - type: 'null'
      description: Provider-specific chain identifier preserved for diagnostics.
    ScannerRouteType:
      type: string
      enum:
        - bridge
        - swap
        - bridge_swap
        - unknown
      description: Delora route classification.
    ScannerTokenAmountDto:
      type: object
      properties:
        chainId:
          type:
            - integer
            - 'null'
          description: Canonical token chain ID when available.
        address:
          type:
            - string
            - 'null'
        symbol:
          type:
            - string
            - 'null'
        amountRaw:
          type: string
          description: Token amount in base units, represented as a decimal string.
          example: '1000000'
        amountFormatted:
          type:
            - string
            - 'null'
          description: Human-readable token amount when decimals are available.
        decimals:
          type:
            - integer
            - 'null'
        amountUsd:
          type:
            - string
            - 'null'
          description: Best-effort USD value as a decimal string.
      required:
        - chainId
        - address
        - symbol
        - amountRaw
        - amountFormatted
        - decimals
        - amountUsd
    ScannerFeeAmountDto:
      type: object
      properties:
        token:
          type:
            - string
            - 'null'
        amountRaw:
          type: string
          description: Fee amount in base units, represented as a decimal string.
          example: '21000000000000'
        amountFormatted:
          type:
            - string
            - 'null'
        decimals:
          type:
            - integer
            - 'null'
        amountUsd:
          type:
            - string
            - 'null'
          description: Best-effort USD value as a decimal string.
      required:
        - token
        - amountRaw
        - amountFormatted
        - decimals
        - amountUsd
    ScannerStatus:
      type: string
      enum:
        - success
        - recovered
        - bridge_pending
        - refund_pending
        - refunded
        - bridge_failed
        - unknown
      description: Current asynchronous tracking status.
    ScannerStatusSource:
      type: string
      enum:
        - analytics
        - receipt
        - bridge_api
        - mixed
        - unknown
      description: Source or combination of sources used for the current status.
    ScannerProviderDiagnosticDto:
      description: >-
        Provider-specific diagnostic payload. Its shape is not a stable public
        contract.
      oneOf:
        - type: object
          additionalProperties: true
        - type: array
          items: {}
        - type: string
        - type: number
        - type: boolean
        - type: 'null'
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Delora API key. Required by Transaction Tracking endpoints and optional
        for most routing endpoints.

````