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

# Real-time Metals bid/ask quote

> Latest bid/ask for up to 10 metals instruments, quoted exactly as the feed supplies them - no unit, purity or currency conversion is applied.

Instruments beyond the first 10 are reported under `warnings.ignored_instruments`, and unrecognised ones under `warnings.invalid_instruments`. The request fails only if no valid instrument is supplied at all.



## OpenAPI

````yaml get /metals/quote
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/quote:
    get:
      tags:
        - metals
        - plan-premium
      description: >-
        Latest bid/ask for up to 10 metals instruments, quoted exactly as the
        feed supplies them - no unit, purity or currency conversion is applied.


        Instruments beyond the first 10 are reported under
        `warnings.ignored_instruments`, and unrecognised ones under
        `warnings.invalid_instruments`. The request fails only if no valid
        instrument is supplied at all.
      parameters:
        - name: instruments
          in: query
          description: Comma-separated list of instrument symbols, maximum 10
          required: true
          schema:
            $ref: '#/components/schemas/MetalInstrumentList'
        - 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:
                type: object
                properties:
                  ms:
                    $ref: '#/components/schemas/ResponseTime'
                  source:
                    type: string
                    description: Origin of the price data
                  quotes:
                    type: object
                    description: Quotes keyed by instrument symbol
                    minProperties: 1
                    maxProperties: 10
                    additionalProperties:
                      $ref: '#/components/schemas/MetalQuote'
                  warnings:
                    type: object
                    description: >-
                      Present only when some supplied instruments were not
                      quoted
                    properties:
                      invalid_instruments:
                        type: array
                        description: Supplied symbols that are not recognised
                        items:
                          type: string
                      ignored_instruments:
                        type: array
                        description: >-
                          Valid symbols dropped for exceeding the 10 instrument
                          limit
                        items:
                          type: string
              example:
                quotes:
                  XAUUSD:
                    bid: '2500.10'
                    ask: '2500.90'
                    mid: '2500.50'
                    spread: '0.80'
                    tsp: 1739305030072
                    dtm: '2026-08-16T21:02:19Z'
                    metal: XAU
                    target: USD
                    unit: oz_t
                    purity: '1000'
                    cross_rate: false
                  XCUUSD:
                    bid: '9500.00'
                    ask: '9510.00'
                    mid: '9505.00'
                    spread: '10.00'
                    tsp: 1739305030072
                    dtm: '2026-08-16T21:02:19Z'
                    metal: XCU
                    target: USD
                    unit: metric_tonne
                    cross_rate: false
                source: otc_aggregate
                warnings:
                  invalid_instruments:
                    - XYZUSD
                ms: 8
        '400':
          description: Bad Request - no valid metals instruments provided
        '401':
          description: Not Authorized
        '403':
          description: Forbidden
        '429':
          description: Rate limit exceeded
        '500':
          description: Upstream price data unavailable
components:
  schemas:
    MetalInstrumentList:
      type: string
      pattern: '[A-Z]{6,7}(,[A-Z]{6,7})*'
      description: A comma-separated list of metals instrument symbols
      example: XAUUSD,XAGUSD
    VerboseFlag:
      type: string
      description: Truthy values are true, 1, yes and y. Anything else is treated as false.
      example: 'true'
    ResponseTime:
      type: number
      format: int32
      description: Server response time in milliseconds
    MetalQuote:
      type: object
      description: >-
        A single instrument quote, exactly as the feed supplies it. ask, mid and
        spread are absent when the feed has published no ask for the instrument.
      properties:
        bid:
          $ref: '#/components/schemas/MetalPrice'
        ask:
          $ref: '#/components/schemas/MetalPrice'
        mid:
          $ref: '#/components/schemas/MetalPrice'
        spread:
          $ref: '#/components/schemas/MetalPrice'
        tsp:
          $ref: '#/components/schemas/TimestampMillis'
        dtm:
          type: string
          description: Quote time, formatted per the account's datetime format
        metal:
          $ref: '#/components/schemas/MetalSymbol'
        metal_name:
          type: string
          description: Metal name. Verbose only.
        target:
          type: string
          pattern: '[A-Z0-9]{3,6}'
          description: What the instrument is priced against
        target_name:
          type: string
          description: Display name for the target. Verbose only.
        unit:
          $ref: '#/components/schemas/MetalUnit'
          description: >-
            Unit of mass quoted. Absent for a ratio instrument, which has no
            unit.
        unit_name:
          type: string
          description: Display name for the unit. Verbose only, and absent for a ratio.
        purity:
          type: string
          description: Purity code the instrument is quoted at. Precious metals only.
        cross_rate:
          type: boolean
          description: Always false here - this endpoint applies no conversion
      required:
        - bid
        - tsp
        - dtm
        - metal
        - target
        - cross_rate
    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
    MetalSymbol:
      type: string
      pattern: X[A-Z]{2}
      description: Three-letter metal symbol, e.g. XAU for gold
      example: XAU
    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
  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

````