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

# Estimate price

> Estimate the volume-weighted price to buy or sell a quantity of an asset. The estimate is nonbinding and does not create an order or reserve funds.

> [!NOTE]
>
> This endpoint is currently available in **Sandbox** only. It is not yet available in **Production**.

The estimate is for a `quantity` of the `base` asset, priced in the `quote` asset, and it is nonbinding: it does not create an order, reserve funds or guarantee that an order will trade at that price. The response has only the `price` and the `snapshotAt` time of the order book snapshot it was calculated from.

If the order book cannot cover the `quantity`, the request fails with the depth that is available, so you can retry with a smaller quantity. If the pair cannot be traded, the request fails with `asset_pair_not_supported`. Read more about [price estimates](../introduction#price-estimates).


## OpenAPI

````yaml _media/specs/trading-openapi.mintlify.json post /trading/prices
openapi: 3.1.0
info:
  version: 0.1.0
  title: Trading API
  description: >-
    The Trading API provides resources to estimate prices and place fill-or-kill
    orders.
  contact:
    name: Uphold API Team
    email: developer@uphold.com
    url: https://developer.uphold.com
servers:
  - url: https://api.enterprise.sandbox.uphold.com
    description: Sandbox
  - url: https://api.enterprise.uphold.com
    description: Production
security:
  - OAuth2: []
tags:
  - name: Prices
    description: Prices.
  - name: Orders
    description: Orders.
paths:
  /trading/prices:
    post:
      tags:
        - Prices
      summary: Estimate price
      description: >-
        Estimate the volume-weighted price to buy or sell a quantity of an
        asset. The estimate is nonbinding and does not create an order or
        reserve funds.
      operationId: trading.estimate-price
      requestBody:
        $ref: '#/components/requestBodies/estimate-trading-price-request-body'
      responses:
        '200':
          $ref: '#/components/responses/estimate-trading-price-response'
        '409':
          $ref: '#/components/responses/estimate-trading-price-conflict-response'
        '503':
          $ref: >-
            #/components/responses/estimate-trading-price-service-unavailable-response
      security:
        - OAuth2:
            - trading.prices:create
components:
  requestBodies:
    estimate-trading-price-request-body:
      content:
        application/json:
          schema:
            type: object
            properties:
              base:
                description: The base asset, the one bought or sold.
                type: string
                minLength: 1
              quote:
                description: The quote asset, the one the price is expressed in.
                type: string
                minLength: 1
              side:
                $ref: '#/components/schemas/trading-order-side'
              quantity:
                allOf:
                  - $ref: '#/components/schemas/non-zero-decimal-amount'
                  - description: The quantity of the base asset to estimate the price of.
            additionalProperties: false
            required:
              - base
              - quote
              - side
              - quantity
          examples:
            Sell Half A Bitcoin:
              value:
                base: BTC
                quote: USD
                side: sell
                quantity: '0.5'
            Buy Half A Bitcoin:
              value:
                base: BTC
                quote: USD
                side: buy
                quantity: '0.5'
  responses:
    estimate-trading-price-response:
      description: Price estimated.
      content:
        application/json:
          schema:
            type: object
            properties:
              price:
                description: >-
                  The estimated volume-weighted execution price, in the quote
                  asset per one unit of the base asset.
                type: string
              snapshotAt:
                description: >-
                  The time of the order book snapshot the price was calculated
                  from. It is not the time of the request or of the calculation.
                type: string
                format: date-time
            additionalProperties: false
            required:
              - price
              - snapshotAt
          examples:
            Price Estimated:
              value:
                price: '61919.14'
                snapshotAt: '2026-10-12T10:31:04.218Z'
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
    estimate-trading-price-conflict-response:
      description: Business logic error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            Insufficient Book Depth:
              value:
                code: transaction_amount_invalid
                message: The amount exceeds the available order book depth
                details:
                  context: body
                  property: quantity
                  rule: insufficient-book-depth
                  limit:
                    availableAmount: '7.84'
            Asset Pair Not Supported:
              value:
                code: asset_pair_not_supported
                message: The asset pair is not supported for trading
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
    estimate-trading-price-service-unavailable-response:
      description: The venue is unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            Service Unavailable:
              value:
                code: service_unavailable
                message: Service Unavailable
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
  schemas:
    trading-order-side:
      description: Whether the base asset is bought or sold.
      type: string
      enum:
        - buy
        - sell
    non-zero-decimal-amount:
      type: string
      pattern: ^(?!0+(\.0+)?$)\d+(\.\d+)?$
    error:
      description: The error information.
      allOf:
        - $ref: '#/components/schemas/feedback'
    feedback:
      description: A feedback message with a code and human-readable description.
      type: object
      properties:
        code:
          description: A short string with a brief explanation about the code reported.
          type: string
        message:
          description: A human-readable message providing more details.
          type: string
        details:
          description: Additional information about the feedback reported.
          type: object
          additionalProperties: true
      required:
        - code
        - message
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0
      flows:
        clientCredentials:
          tokenUrl: /core/oauth2/token
          scopes:
            trading.prices:create: Grants access to estimate prices.
            trading.orders:create: Grants access to create orders.
            trading.orders:read: Grants access to read orders and their trades.

````