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

# Metal Spot Price

> Spot price for a single metal, in the currency, unit of mass and purity you ask for.

The instrument actually quoted is chosen from the metal, currency and unit together, and is reported as `source_instrument`. Where no instrument is quoted directly in the requested currency, the price is crossed via USD and `cross_rate` is true - this consumes an additional FX product call and widens the bid/ask gap.



## OpenAPI

````yaml get /metals/spot
openapi: 3.0.3
info:
  title: fastFOREX.io
  version: 2.4.0
  description: Foreign & cryptocurrency exchange rate API
  termsOfService: https://www.fastforex.io/terms-of-sale
  contact:
    email: support@fastforex.io
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.fastforex.io
    description: Production
  - url: https://api.beta.fastforex.io
    description: Beta
security:
  - api_key: []
  - apiKeyHeader: []
  - bearerAuth: []
  - basicAuth: []
tags:
  - name: currency
    description: Physical currencies, rates and conversions
  - name: crypto
    description: Digital currencies, pairs & prices
  - name: fx
    description: Realtime FX trading pairs - instruments, prices and history
  - name: metals
    description: Precious and base metals - instruments, units, purities and prices
  - name: admin
    description: Account admin
  - name: plan-one
    description: Available on The One Plan
  - name: plan-extra
    description: Available on The Extra Plan
  - name: plan-premium
    description: Available on The Premium Plan
externalDocs:
  description: Find out more about fastFOREX.io
  url: https://www.fastforex.io
paths:
  /metals/spot:
    get:
      tags:
        - metals
        - plan-premium
      description: >-
        Spot price for a single metal, in the currency, unit of mass and purity
        you ask for.


        The instrument actually quoted is chosen from the metal, currency and
        unit together, and is reported as `source_instrument`. Where no
        instrument is quoted directly in the requested currency, the price is
        crossed via USD and `cross_rate` is true - this consumes an additional
        FX product call and widens the bid/ask gap.
      parameters:
        - name: metal
          in: query
          description: Metal symbol, defaults to XAU
          required: false
          allowEmptyValue: true
          schema:
            $ref: '#/components/schemas/MetalSymbol'
        - name: currency
          in: query
          description: Target currency, defaults to USD
          required: false
          allowEmptyValue: true
          schema:
            $ref: '#/components/schemas/Currency'
        - name: unit
          in: query
          description: >-
            Unit of mass to price in. Defaults to oz_t for precious metals and
            metric_tonne for base metals.
          required: false
          allowEmptyValue: true
          schema:
            $ref: '#/components/schemas/MetalUnit'
        - name: purity
          in: query
          description: >-
            Purity to price at, for precious metals only - ignored for base
            metals. Either a code from /metals/purities, or any custom fineness
            between 0 and 1000 exclusive of zero. Omit for the quoted (pure)
            price.
          required: false
          allowEmptyValue: true
          schema:
            $ref: '#/components/schemas/MetalPurityCode'
        - name: verbose
          in: query
          description: Include the display-name fields in the response
          required: false
          allowEmptyValue: true
          schema:
            $ref: '#/components/schemas/VerboseFlag'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/MetalSpot'
                  - type: object
                    properties:
                      ms:
                        $ref: '#/components/schemas/ResponseTime'
              examples:
                precious:
                  summary: Gold in USD per troy ounce
                  value:
                    bid: '2500.10'
                    ask: '2500.90'
                    mid: '2500.50'
                    spread: '0.80'
                    metal: XAU
                    currency: USD
                    unit: oz_t
                    tsp: 1739305030072
                    dtm: '2026-08-16T21:02:19Z'
                    cross_rate: false
                    source: otc_aggregate
                    source_instrument: XAUUSD
                    purity: '1000'
                    purity_name: Pure Gold Spot
                    ms: 6
                purity_and_unit:
                  summary: 18 carat gold per gram, verbose
                  value:
                    bid: '60.3097'
                    ask: '60.3290'
                    mid: '60.3193'
                    spread: '0.0193'
                    metal: XAU
                    metal_name: Gold
                    currency: USD
                    currency_name: United States Dollar
                    unit: gram
                    unit_name: Gram
                    tsp: 1739305030072
                    dtm: '2026-08-16T21:02:19Z'
                    cross_rate: false
                    source: otc_aggregate
                    source_instrument: GAUUSD
                    purity: '750'
                    purity_name: 18K
                    ms: 7
                base_metal:
                  summary: Copper in USD per tonne, crossed via USD
                  value:
                    bid: '9500.00'
                    ask: '9510.00'
                    mid: '9505.00'
                    spread: '10.00'
                    metal: XCU
                    currency: EUR
                    unit: metric_tonne
                    tsp: 1739305030072
                    dtm: '2026-08-16T21:02:19Z'
                    cross_rate: true
                    source: otc_aggregate
                    source_instrument: XCUUSD
                    grade: grade_a
                    ms: 9
        '400':
          description: Bad Request - unknown metal, currency, unit or purity
        '401':
          description: Not Authorized
        '403':
          description: Forbidden
        '429':
          description: Rate limit exceeded
        '500':
          description: Upstream price data unavailable
components:
  schemas:
    MetalSymbol:
      type: string
      pattern: X[A-Z]{2}
      description: Three-letter metal symbol, e.g. XAU for gold
      example: XAU
    Currency:
      type: string
      pattern: '[A-Z]{3}'
      description: Three-letter ISO 4217 currency code
    MetalUnit:
      type: string
      description: Handle for a unit of mass that metal prices can be quoted in
      enum:
        - gram
        - kilogram
        - metric_tonne
        - grain
        - pennyweight
        - oz_t
        - lb_t
        - oz_av
        - lb_av
        - tael
        - baht
        - tola
    MetalPurityCode:
      type: string
      description: >-
        A purity code from /metals/purities (e.g. '750'), or any custom fineness
        in parts per thousand between 1 and 1000. A custom value is echoed back
        with a purity_name of 'custom'.
      example: '750'
    VerboseFlag:
      type: string
      description: Truthy values are true, 1, yes and y. Anything else is treated as false.
      example: 'true'
    MetalSpot:
      type: object
      description: >-
        A spot price converted to the requested currency, unit and purity. The
        *_name fields appear only when verbose is set. grade fields appear for
        base metals, purity fields for precious metals.
      properties:
        bid:
          $ref: '#/components/schemas/MetalPrice'
        ask:
          $ref: '#/components/schemas/MetalPrice'
        mid:
          $ref: '#/components/schemas/MetalPrice'
        spread:
          $ref: '#/components/schemas/MetalPrice'
        metal:
          $ref: '#/components/schemas/MetalSymbol'
        metal_name:
          type: string
          description: Metal name. Verbose only.
        currency:
          $ref: '#/components/schemas/Currency'
        currency_name:
          type: string
          description: Currency name. Verbose only.
        unit:
          $ref: '#/components/schemas/MetalUnit'
        unit_name:
          type: string
          description: Display name for the unit. Verbose only.
        tsp:
          $ref: '#/components/schemas/TimestampMillis'
        dtm:
          type: string
          description: Quote time, formatted per the account's datetime format
        cross_rate:
          type: boolean
          description: >-
            True when the price was crossed via USD rather than quoted directly
            in the requested currency
        source:
          type: string
          description: Origin of the price data
        source_instrument:
          type: string
          description: The instrument actually quoted to build this price
        grade:
          type: string
          description: Deliverable contract grade. Base metals only.
        grade_name:
          type: string
          description: Display name for the contract grade. Base metals only, verbose only.
        grade_min_purity_pct:
          type: number
          format: float
          description: >-
            Minimum purity of the contract grade, as a percentage. Base metals
            only, verbose only.
        purity:
          type: string
          description: Purity code the price is quoted at. Precious metals only.
        purity_name:
          type: string
          description: >-
            Display name for the purity, or 'custom' for a caller-supplied
            fineness. Precious metals only.
      required:
        - bid
        - metal
        - currency
        - unit
        - tsp
        - dtm
        - cross_rate
        - source
        - source_instrument
    ResponseTime:
      type: number
      format: int32
      description: Server response time in milliseconds
    MetalPrice:
      type: string
      description: >-
        A price, as a string to preserve the significant figures of the source
        quote. Parse as a decimal rather than a float where precision matters.
      example: '2500.50'
    TimestampMillis:
      type: number
      format: int64
      description: >-
        Milliseconds since Jan 1 1970 (unix timestamp with millisecond
        precision)
      example: 1739305030072
  securitySchemes:
    api_key:
      type: apiKey
      name: api_key
      in: query
    apiKeyHeader:
      type: apiKey
      name: X-API-KEY
      in: header
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: api_key
    basicAuth:
      type: http
      scheme: basic

````