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

# Get order by UUID

> Returns the current state of an order: status, amounts, transaction hashes, and the expanded `depositToken` and `settleToken` objects. No authentication required. Anyone who has the UUID can read the order, so store it securely.

Poll this endpoint to track an order, or pair it with the [SSE status stream](/api-reference/order-status-stream). Fetch current state here first and subscribe after, because the stream sends no initial snapshot.

An unknown or malformed UUID returns HTTP `500` with `{"statusCode": 500, "message": "Internal Server Error"}` and no `error` field. There is no `404` for missing orders.

<Note>The order UUID acts as a bearer capability: anyone holding it can read the order, addresses included, so treat it as a secret. Unknown UUIDs return `500`, not `404`. The full status table lives in [Order lifecycle](/api-reference/order-lifecycle).</Note>


## OpenAPI

````yaml /openapi.json get /v1/orders/{uuid}
openapi: 3.1.0
info:
  title: Vane API
  version: 1.0.0
  summary: Cross-chain and same-chain swaps filled by an open network of solvers.
  description: >-
    Vane turns a swap into an intent: you declare what you want to receive, the
    API returns a per-order deposit address, and a solver fills the order
    against the escrowed deposit ([how solvers fill
    orders](/features/solver-auctions)).


    **Authentication.** Most endpoints accept a tenant API key sent as the
    `x-tenant-api-key` header (accountless integration). The key pre-filled in
    the API playground is a shared public key for evaluating the API. Production
    integrations use their own tenant key, requested from support
    (help@vane.xyz) and kept server-side. A JWT access token from SIWX
    wallet-signature auth also satisfies these endpoints and attributes orders
    to a user account, which adds order history (`GET /v1/orders`) and points.


    **Error behavior.** Errors use the envelope `{statusCode, message, error}`.
    Field order varies and some errors omit `error`. Most business validation
    failures (an unknown token id, a malformed address, an invalid amount, an
    unknown order UUID) return HTTP `500` with a descriptive message, while
    `400` appears only for malformed query parameters. Match on the message text
    for programmatic handling, not just the status codes.


    **The fields `exchange` and `tradePath`** describe how a quote is priced and
    routed across order-book legs. They say nothing about settlement, which
    solvers perform separately.
  contact:
    name: Vane support
    email: help@vane.xyz
    url: https://vane.xyz
  termsOfService: https://vane.xyz/terms-and-conditions
servers:
  - url: https://api.vane.xyz/api
    description: Production
security:
  - tenantApiKey: []
tags:
  - name: Tokens
    description: The token catalog, swap limits, and quotes.
  - name: Orders
    description: Create swap orders and track them to a terminal state.
  - name: Auth
    description: >-
      Optional SIWX wallet-signature authentication. Adds order history and
      points.
paths:
  /v1/orders/{uuid}:
    get:
      tags:
        - Orders
      summary: Get order by UUID
      description: >-
        Returns the current state of an order: status, amounts, transaction
        hashes, and the expanded `depositToken` and `settleToken` objects. No
        authentication required. Anyone who has the UUID can read the order, so
        store it securely.


        Poll this endpoint to track an order, or pair it with the [SSE status
        stream](/api-reference/order-status-stream). Fetch current state here
        first and subscribe after, because the stream sends no initial snapshot.


        An unknown or malformed UUID returns HTTP `500` with `{"statusCode":
        500, "message": "Internal Server Error"}` and no `error` field. There is
        no `404` for missing orders.
      operationId: getOrderByUuid
      parameters:
        - name: uuid
          in: path
          required: true
          description: Order UUID returned by `POST /v1/orders/create`.
          schema:
            type: string
            format: uuid
          example: 7f9c2e4a-1b3d-4c5e-8f6a-2d9b0c1e3f5a
      responses:
        '200':
          description: The order, with expanded deposit and settle token objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderWithTokens'
              example:
                id: 74
                uuid: 7f9c2e4a-1b3d-4c5e-8f6a-2d9b0c1e3f5a
                status: AWAITING_USER_DEPOSIT
                timeout: '2026-01-15T14:30:00.000Z'
                intendedAmount: 0.005
                intendedIsDeposit: true
                initialQuote: 316.23212
                depositTokenId: 158
                settleTokenId: 231
                receivingAddress: '0x1234567890abcdef1234567890abcdef12345678'
                depositAmount: null
                depositEstSettleAmount: null
                settleAmount: null
                minimalAmount: 0.00020766
                maximalAmount: 0.14162023
                exchange: CEX
                senderDepositTx: null
                exchangeWithdrawTx: null
                exchangeWithdrawTxLink: null
                tradePath:
                  - symbol: BTCUSDT
                    side: SELL
                    inputToken: BTC
                    outputToken: USDT
                userId: null
                createdAt: '2026-01-15T14:00:00.000Z'
                walletAddress: bc1p...
                depositToken:
                  id: 158
                  name: Bitcoin
                  symbol: BTC
                  address: native
                  decimals: 8
                  blockchainId: 1
                  isBaseToken: true
                  isStablecoin: false
                  active: true
                  blockchain:
                    id: 1
                    name: Bitcoin
                    network: BTC
                    neededConfirmations: 2
                    depositsActive: true
                settleToken:
                  id: 231
                  name: TetherUS
                  symbol: USDT
                  address: '0xdac17f958d2ee523a2206206994597c13d831ec7'
                  decimals: 6
                  blockchainId: 2
                  isBaseToken: false
                  isStablecoin: true
                  active: true
                  blockchain:
                    id: 2
                    name: Ethereum (ERC20)
                    network: ETH
                    neededConfirmations: 12
                    depositsActive: true
        '500':
          description: >-
            Unknown or malformed UUID. The API returns `500` (never `404`) for
            missing orders, and this error body has no `error` field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                statusCode: 500
                message: Internal Server Error
      security: []
components:
  schemas:
    OrderWithTokens:
      description: An order with the deposit and settle token objects expanded.
      allOf:
        - $ref: '#/components/schemas/Order'
        - type: object
          properties:
            depositToken:
              $ref: '#/components/schemas/Token'
            settleToken:
              $ref: '#/components/schemas/Token'
          required:
            - depositToken
            - settleToken
    Error:
      type: object
      description: >-
        Canonical error envelope. Field order varies and `error` is sometimes
        omitted (the unknown-order `500` returns only `statusCode` and
        `message`); message casing varies too (`Internal Server Error` vs
        `Internal server error`). Most business validation failures return `500`
        with a descriptive message, so match on `message` for programmatic
        handling.
      properties:
        statusCode:
          type: integer
          description: HTTP status code.
        message:
          type: string
          description: >-
            Error description. The most reliable field for distinguishing
            causes.
        error:
          type: string
          description: >-
            HTTP status text, for example `Bad Request`, `Unauthorized`.
            Sometimes absent.
      required:
        - statusCode
        - message
    Order:
      description: >-
        A swap order. Created by `POST /v1/orders/create`. A solver fills it
        against the deposit escrowed at `walletAddress`.
      allOf:
        - $ref: '#/components/schemas/OrderBase'
        - type: object
          properties:
            walletAddress:
              type: string
              description: >-
                The deposit address: a per-order escrow address on the deposit
                token's chain (a taproot `bc1p...` address for BTC). Send only
                the exact deposit token here, within the min/max bounds, before
                `timeout`.
          required:
            - walletAddress
    Token:
      type: object
      description: >-
        A token in the catalog. The same asset has a distinct numeric id per
        chain.
      properties:
        id:
          type: integer
          description: >-
            Token id, unique per (asset, chain) pair. Use this in swap-limits,
            quote, and order requests.
        name:
          type: string
          description: Token display name, for example `TetherUS`.
        symbol:
          type: string
          description: Ticker symbol, for example `BTC`, `USDT`.
        address:
          type: string
          description: >-
            Contract address on the token's chain, or `native` for chain-native
            coins.
        decimals:
          type: integer
          description: Token decimals.
        blockchainId:
          type: integer
          description: Id of the chain this token lives on (matches `blockchain.id`).
        isBaseToken:
          type: boolean
          description: Whether this is the chain's base (native) asset.
        isStablecoin:
          type: boolean
          description: Whether this token is a stablecoin.
        active:
          type: boolean
          description: >-
            Whether the token is tradable. Filter on this before offering a
            pair.
        blockchain:
          $ref: '#/components/schemas/Blockchain'
      required:
        - id
        - name
        - symbol
        - address
        - decimals
        - blockchainId
        - isBaseToken
        - isStablecoin
        - active
        - blockchain
    OrderBase:
      type: object
      description: >-
        Common order fields, shared by the create and get responses and by
        order-history items.
      properties:
        id:
          type: integer
          description: >-
            Internal numeric order id. SSE events do not carry it; their
            `orderId` is the `uuid`.
        uuid:
          type: string
          format: uuid
          description: >-
            Public order identifier and a bearer capability: anyone holding it
            can read the order. Store it server-side and keep it out of public
            URLs. For accountless orders it is your only handle. SSE events echo
            it as `orderId`.
        status:
          $ref: '#/components/schemas/OrderStatus'
        timeout:
          type: string
          format: date-time
          description: >-
            UTC time at which the order expires if no deposit is received (30
            minutes after `createdAt`). Orders cannot expire after a deposit is
            made.
        intendedAmount:
          type: number
          description: >-
            Amount declared at creation. Not validated against `minimalAmount`
            and `maximalAmount`; those bounds bind the actual deposit.
        intendedIsDeposit:
          type: boolean
          description: Whether `intendedAmount` was expressed in deposit-token units.
        initialQuote:
          type: number
          description: >-
            Estimated settle amount computed from `intendedAmount` at creation.
            Comes back as `0` when the intent is below the minimum.
        depositTokenId:
          type: integer
          description: Id of the deposit token.
        settleTokenId:
          type: integer
          description: Id of the settle token.
        receivingAddress:
          type: string
          description: Address where the settle tokens are delivered.
        depositAmount:
          type:
            - number
            - 'null'
          description: Actual amount deposited, once detected. `null` before any deposit.
        depositEstSettleAmount:
          type:
            - number
            - 'null'
          description: >-
            Estimated settle amount recomputed from the actual `depositAmount`.
            `null` before any deposit.
        settleAmount:
          type:
            - number
            - 'null'
          description: >-
            Amount delivered to `receivingAddress`. Updates while the order
            settles and is final once `status` is `COMPLETED`. `null` before
            settlement starts.
        minimalAmount:
          type: number
          description: >-
            Minimum deposit-token amount this order accepts. It binds the actual
            deposit; creation does not check `intendedAmount` against it.
        maximalAmount:
          type: number
          description: >-
            Maximum deposit-token amount this order accepts. The actual deposit
            must stay at or below it.
        exchange:
          type: string
          description: >-
            Pricing source label carried over from the quote (for example
            `CEX`). Settlement still happens through solver intent matching.
        senderDepositTx:
          type:
            - string
            - 'null'
          description: Transaction hash of your deposit, once detected. `null` before that.
        exchangeWithdrawTx:
          type:
            - string
            - 'null'
          description: >-
            Transaction hash of the transfer delivering settle tokens to
            `receivingAddress`. `null` until the fill.
        exchangeWithdrawTxLink:
          type:
            - string
            - 'null'
          description: Block-explorer link for `exchangeWithdrawTx`. `null` until the fill.
        tradePath:
          type: array
          description: >-
            Order-book legs behind this order's quote. They describe pricing,
            not how the order settles.
          items:
            $ref: '#/components/schemas/TradePathLeg'
        userId:
          type:
            - string
            - 'null'
          description: >-
            User id for orders created with a JWT access token, a UUID string
            matching the `id` from `GET /auth/me`. `null` for accountless
            (tenant-key) orders.
        createdAt:
          type: string
          format: date-time
          description: UTC creation time.
      required:
        - id
        - uuid
        - status
        - timeout
        - intendedAmount
        - intendedIsDeposit
        - initialQuote
        - depositTokenId
        - settleTokenId
        - receivingAddress
        - depositAmount
        - depositEstSettleAmount
        - settleAmount
        - minimalAmount
        - maximalAmount
        - exchange
        - senderDepositTx
        - exchangeWithdrawTx
        - exchangeWithdrawTxLink
        - tradePath
        - userId
        - createdAt
    Blockchain:
      type: object
      description: A supported chain. The catalog spans 18 chains.
      properties:
        id:
          type: integer
          description: >-
            Chain id in Vane's catalog (for example `1` = Bitcoin, `2` =
            Ethereum (ERC20)).
        name:
          type: string
          description: Chain display name, for example `Ethereum (ERC20)`.
        network:
          type: string
          description: Short network code, for example `BTC`, `ETH`.
        neededConfirmations:
          type: integer
          description: >-
            On-chain confirmations required before a deposit on this chain
            counts as confirmed.
        depositsActive:
          type: boolean
          description: >-
            Whether deposits on this chain are enabled. Check this before
            offering a pair.
      required:
        - id
        - name
        - network
        - neededConfirmations
        - depositsActive
    OrderStatus:
      type: string
      description: >-
        Order lifecycle status.


        - `AWAITING_USER_DEPOSIT`: waiting for your deposit to the order's
        `walletAddress`.

        - `AWAITING_USER_DEPOSIT_CONFIRMATIONS`: deposit detected, waiting for
        on-chain confirmations (`blockchain.neededConfirmations`).

        - `PROCESSING`: transitional state between deposit confirmation and
        completion. Treat it as in flight.

        - `COMPLETED`: fill delivered and `settleAmount` is final. Terminal.

        - `ERROR`: the swap hit an error. Contact support with the order UUID.
        Terminal.

        - `TIMED_OUT`: no deposit arrived before `timeout`. Terminal.
      enum:
        - AWAITING_USER_DEPOSIT
        - AWAITING_USER_DEPOSIT_CONFIRMATIONS
        - PROCESSING
        - COMPLETED
        - ERROR
        - TIMED_OUT
    TradePathLeg:
      type: object
      description: >-
        One order-book leg used to price a quote. This is pricing and routing
        information only; solvers perform settlement through intent matching.
        Cross pairs may have multiple legs, and `inputToken`/`outputToken`
        casing may vary across legs in multi-leg responses (for example
        lowercase `sol`, `eth`), so match symbols without regard to case.
      properties:
        symbol:
          type: string
          description: Order-book pair symbol, for example `BTCUSDT`.
        side:
          type: string
          enum:
            - SELL
            - BUY
          description: Side of the order-book leg.
        inputToken:
          type: string
          description: Input token symbol for this leg.
        outputToken:
          type: string
          description: Output token symbol for this leg.
      required:
        - symbol
        - side
        - inputToken
        - outputToken
  securitySchemes:
    tenantApiKey:
      type: apiKey
      in: header
      name: x-tenant-api-key
      x-default: c7eccc0aaed64932a85d35658fa55a4fb2d60cd3d2c529cfd643dc676ee82e82
      description: >-
        Vane's shared tenant key. Contact support for a dedicated key if you
        need custom parameters or separate order tracking.

````