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

# Transfer status

> **Use this one** unless you are migrating existing aggregator code — see `GET /status` for that.

Key by `txHash` for contract-call routes, or by `depositAddress` (+ `depositMemo`) for deposit-based routes.

Anonymous — no API key, so it is safe to call straight from your frontend. Resolves our own settlement lifecycle first and falls back to the upstream router's status for swaps we did not settle ourselves.

Poll until the status is terminal (`DONE` or `FAILED`). A cross-chain route has no `receiving` leg until the destination transaction lands — that is normal progress, not a stall.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/status
openapi: 3.1.0
info:
  title: Hypermid API
  description: >-
    Price and execute cross-chain swaps, read reference data and payer balances,
    and quote the fiat on-ramp. Quotes return an executable `transactionRequest`
    your frontend submits directly, so Hypermid never custodies the funds.


    Payments — `checkout`, `deposit`, and `withdrawal` sessions — and
    payment-link management are available through these merchant REST endpoints
    and the [`@hypermid/sdk`](https://docs.hypermid.io/sdk/payments) package.
    Payer-facing routes are intentionally omitted.
  version: 0.2.0
  contact: {}
servers:
  - url: https://server.hypermid.io
    description: Production — live keys (sk_live_…)
  - url: https://server.hypermid.io
    description: Sandbox — test keys (sk_test_…), testnets only
security: []
tags:
  - name: payments
    description: >-
      Create and read payment sessions, manage webhooks, and configure payout
      addresses with a secret partner key.
  - name: payment links
    description: >-
      Create, read, version, and revoke reusable checkout payment links with a
      secret partner key.
  - name: quote
    description: >-
      Route pricing for the orchestration product. Returns an executable
      `transactionRequest` your frontend submits directly, so Hypermid never
      custodies the funds.
  - name: status
    description: >-
      Resolve the state of a submitted swap or transfer. Two endpoints with
      different audiences — see each one's description before choosing.
  - name: catalog
    description: >-
      Reference data an integration needs to render a picker: supported chains
      and tokens, prices, routable connections, and fee configuration. A sandbox
      key sees only testnets here.
  - name: balances
    description: Read a payer wallet's token balances across supported chains.
  - name: onramp
    description: >-
      The fiat rail — card and bank payment for crypto, quoted and settled
      through our onramp partner. Requires per-partner onramp credentials on
      your account.
  - name: webhooks
    description: >-
      Events Hypermid sends TO you when a session completes. These are requests
      we make to your server, not endpoints you call.
paths:
  /v1/status:
    get:
      tags:
        - status
      summary: Transfer status
      description: >-
        **Use this one** unless you are migrating existing aggregator code — see
        `GET /status` for that.


        Key by `txHash` for contract-call routes, or by `depositAddress` (+
        `depositMemo`) for deposit-based routes.


        Anonymous — no API key, so it is safe to call straight from your
        frontend. Resolves our own settlement lifecycle first and falls back to
        the upstream router's status for swaps we did not settle ourselves.


        Poll until the status is terminal (`DONE` or `FAILED`). A cross-chain
        route has no `receiving` leg until the destination transaction lands —
        that is normal progress, not a stall.
      operationId: StatusV1Controller_resolve
      parameters:
        - name: toChain
          required: false
          in: query
          schema:
            type: string
        - name: fromChain
          required: false
          in: query
          schema:
            type: string
        - name: bridge
          required: false
          in: query
          schema:
            type: string
        - name: depositMemo
          required: false
          in: query
          schema:
            type: string
        - name: depositAddress
          required: false
          in: query
          schema:
            type: string
        - name: txHash
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponseDto'
components:
  schemas:
    StatusResponseDto:
      type: object
      properties:
        transactionId:
          type: string
          description: Transfer identifier (the Warp messageId). Stable across both legs.
        tool:
          type: string
          example: hypermid
          description: Bridging tool — always `hypermid`.
        status:
          type: string
          enum:
            - NOT_FOUND
            - INVALID
            - PENDING
            - DONE
            - FAILED
          description: Top-level status. Poll until DONE or FAILED.
        substatus:
          type:
            - object
            - 'null'
          description: >-
            Finer-grained status, using the standard aggregator substatus
            vocabulary.
        substatusMessage:
          type:
            - object
            - 'null'
          description: Human-readable explanation.
        fromAddress:
          type:
            - object
            - 'null'
          description: Sender (source) address.
        toAddress:
          type:
            - object
            - 'null'
          description: Recipient (destination) address.
        sending:
          description: Source-chain leg. Absent until the source tx is indexed.
          anyOf:
            - allOf:
                - $ref: '#/components/schemas/StatusTxInfoDto'
            - type: 'null'
        receiving:
          description: >-
            Destination-chain leg. Absent until the dest tx is mined
            (DONE/REFUNDED).
          anyOf:
            - allOf:
                - $ref: '#/components/schemas/StatusTxInfoDto'
            - type: 'null'
        metadata:
          type: object
          description: Integrator metadata.
          example:
            integrator: hypermid
      required:
        - transactionId
        - tool
        - status
    StatusTxInfoDto:
      type: object
      properties:
        txHash:
          type: string
          description: On-chain transaction hash on this leg's chain.
        txLink:
          type:
            - object
            - 'null'
          description: Block-explorer URL for txHash.
        chainId:
          type: number
          example: 8453
          description: Numeric EVM chain id for this leg.
        token:
          description: The token moved in this transaction.
          allOf:
            - $ref: '#/components/schemas/StatusTokenDto'
        amount:
          type: string
          description: Amount in token smallest units (decimal string).
          example: '1011313'
        timestamp:
          type:
            - object
            - 'null'
          description: Unix seconds when this leg's tx was observed.
          example: 1780657275
      required:
        - txHash
        - chainId
        - token
        - amount
    StatusTokenDto:
      type: object
      properties:
        address:
          type: string
          example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          description: Token contract address.
        chainId:
          type: number
          example: 8453
          description: Numeric EVM chain id.
        symbol:
          type: string
          example: USDC
          description: Token symbol.
        decimals:
          type: number
          example: 6
          description: Decimal places for formatting the amount.
        name:
          type: string
          example: USD Coin
          description: Full token name.
      required:
        - address
        - chainId
        - symbol
        - decimals
        - name

````