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

# List your orders

> Returns the authenticated user's order history, paginated. A JWT access token from SIWX authentication is required; a tenant API key alone returns `401` "Access token not found in cookies or authorization header.". Accountless (tenant-key) orders belong to no user and never appear here, while orders created with a Bearer access token carry the user's id as `userId` and do.

The response envelope is `{status, items, meta}`. History items carry the full order fields plus the expanded `depositToken` and `settleToken` objects, but omit `walletAddress`. Defaults are `current=1` and `limit=10`. A page past the last returns an empty `items` array rather than an error, and the sort order is unspecified, so sort client-side if you need one.



## OpenAPI

````yaml /openapi.json get /v1/orders
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:
    get:
      tags:
        - Orders
      summary: List your orders
      description: >-
        Returns the authenticated user's order history, paginated. A JWT access
        token from SIWX authentication is required; a tenant API key alone
        returns `401` "Access token not found in cookies or authorization
        header.". Accountless (tenant-key) orders belong to no user and never
        appear here, while orders created with a Bearer access token carry the
        user's id as `userId` and do.


        The response envelope is `{status, items, meta}`. History items carry
        the full order fields plus the expanded `depositToken` and `settleToken`
        objects, but omit `walletAddress`. Defaults are `current=1` and
        `limit=10`. A page past the last returns an empty `items` array rather
        than an error, and the sort order is unspecified, so sort client-side if
        you need one.
      operationId: listOrders
      parameters:
        - name: current
          in: query
          required: false
          description: >-
            Page number (default 1). A page beyond the last returns empty
            `items`.
          schema:
            type: integer
            default: 1
          example: 1
        - name: limit
          in: query
          required: false
          description: Items per page (default 10).
          schema:
            type: integer
            default: 10
          example: 10
      responses:
        '200':
          description: Paginated order history for the authenticated user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersPage'
              example:
                status: 200
                items:
                  - 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: 315.18714
                    depositTokenId: 158
                    settleTokenId: 231
                    receivingAddress: '0x1234567890abcdef1234567890abcdef12345678'
                    depositAmount: null
                    depositEstSettleAmount: null
                    settleAmount: null
                    minimalAmount: 0.00021204
                    maximalAmount: 0.141999
                    exchange: CEX
                    senderDepositTx: null
                    exchangeWithdrawTx: null
                    exchangeWithdrawTxLink: null
                    tradePath:
                      - symbol: BTCUSDT
                        side: SELL
                        inputToken: BTC
                        outputToken: USDT
                    userId: 7c9e6679-7425-40de-944b-e07fc1f90ae7
                    createdAt: '2026-01-15T14:00:00.000Z'
                    depositToken:
                      id: 158
                      name: Bitcoin
                      symbol: BTC
                      address: native
                      blockchainId: 1
                      isBaseToken: true
                      isStablecoin: false
                      active: true
                      decimals: 8
                      blockchain:
                        id: 1
                        name: Bitcoin
                        neededConfirmations: 2
                        network: BTC
                        depositsActive: true
                    settleToken:
                      id: 231
                      name: TetherUS
                      symbol: USDT
                      address: '0xdac17f958d2ee523a2206206994597c13d831ec7'
                      blockchainId: 2
                      isBaseToken: false
                      isStablecoin: true
                      active: true
                      decimals: 6
                      blockchain:
                        id: 2
                        name: Ethereum (ERC20)
                        neededConfirmations: 12
                        network: ETH
                        depositsActive: true
                meta:
                  currentPage: 1
                  itemCount: 1
                  itemsPerPage: 10
                  totalPages: 1
                  totalItems: 1
        '401':
          $ref: '#/components/responses/UnauthorizedJwt'
      security:
        - bearerAuth: []
components:
  schemas:
    OrdersPage:
      type: object
      description: Paginated order history. The envelope is `{status, items, meta}`.
      properties:
        status:
          type: integer
          description: 'HTTP status repeated in the body: `200`.'
          example: 200
        items:
          type: array
          description: Orders on this page.
          items:
            $ref: '#/components/schemas/OrderHistoryItem'
        meta:
          type: object
          description: Pagination metadata.
          properties:
            currentPage:
              type: integer
              description: Page number returned.
            itemCount:
              type: integer
              description: Number of items on this page.
            itemsPerPage:
              type: integer
              description: The `limit` applied.
            totalPages:
              type: integer
              description: Total number of pages.
            totalItems:
              type: integer
              description: Total number of orders across all pages.
          required:
            - currentPage
            - itemCount
            - itemsPerPage
            - totalPages
            - totalItems
      required:
        - status
        - items
        - meta
    OrderHistoryItem:
      description: >-
        An order as returned in `GET /v1/orders` history items: the full order
        fields plus the expanded `depositToken` and `settleToken` objects, but
        without `walletAddress`. History items omit the deposit address, so
        fetch the order by UUID if you need it.
      allOf:
        - $ref: '#/components/schemas/OrderBase'
        - 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
    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
    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
    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
    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
  responses:
    UnauthorizedJwt:
      description: >-
        Missing or invalid JWT access token. A tenant API key alone does not
        satisfy this endpoint.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Access token not found in cookies or authorization header.
            error: Unauthorized
            statusCode: 401
  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.
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        JWT from SIWX wallet-signature authentication, sent as `Authorization:
        Bearer <token>` or automatically through HttpOnly cookies in browsers.
        Access tokens last 15 minutes and refresh tokens last 30 days.

````