---
title: "Latest aggregated price per (symbol, currency, contract_type)"
method: GET
path: "/v1/prices"
tags: ["prices"]
---

# Latest aggregated price per (symbol, currency, contract_type)

`GET /v1/prices`

## Query parameters

- `symbol` string, nullable
- `include` string, nullable — Comma-separated field groups to include in the response. Tokens: sources, karat, stats, all. Unknown tokens are ignored. Omit for the lean default. The stats group requires authentication.

## Response `200`

Successful Response

- SpotListResponse — Envelope for `/v1/prices` — array of zero-or-more SpotResponse rows, one per (symbol, quote_currency, contract_type) latest.
  - `symbols` SpotResponse[], required
    - `symbol` string, required
    - `quote_currency` string, required
    - `unit` string, required
    - `contract_type` string, required
    - `price` string, nullable — Price value as Decimal (up to 8 decimal places). JSON-serialized as a string by Pydantic to avoid float drift; callers should parse with Decimal(), not float().
    - `bid` string, nullable — Price value as Decimal (up to 8 decimal places). JSON-serialized as a string by Pydantic to avoid float drift; callers should parse with Decimal(), not float().
    - `ask` string, nullable — Price value as Decimal (up to 8 decimal places). JSON-serialized as a string by Pydantic to avoid float drift; callers should parse with Decimal(), not float().
    - `is_stale` boolean, required
    - `divergence_flag` boolean, nullable — Present only when requested via ?include= (stats or all). True when a tokenized-gold source diverges > 0.5% from primary.
    - `computed_at` string, nullable
    - `sources` SourceEntry[], nullable — Present only when requested via ?include= (sources or all). Tier-filtered provenance array; vendor keys obfuscated.
      - `source` string, required
      - `display_name` string, nullable
      - `price` string, nullable
      - `unit` string, nullable
      - `license` string, nullable
      - `is_stale` boolean, nullable
      - `informational` boolean, nullable
    - `divergence_bps` integer, nullable
    - `value_stale` boolean, nullable
    - `live_quality` string, nullable — Selected live quote quality when a live source is served.
    - `price_gram_24k` string, nullable
    - `price_gram_22k` string, nullable
    - `price_gram_21k` string, nullable
    - `price_gram_20k` string, nullable
    - `price_gram_18k` string, nullable
    - `price_gram_16k` string, nullable
    - `price_gram_14k` string, nullable
    - `price_gram_10k` string, nullable
    - `open_price` string, nullable — Price value as Decimal (up to 8 decimal places). JSON-serialized as a string by Pydantic to avoid float drift; callers should parse with Decimal(), not float().
    - `high_price` string, nullable — Price value as Decimal (up to 8 decimal places). JSON-serialized as a string by Pydantic to avoid float drift; callers should parse with Decimal(), not float().
    - `low_price` string, nullable — Price value as Decimal (up to 8 decimal places). JSON-serialized as a string by Pydantic to avoid float drift; callers should parse with Decimal(), not float().
    - `prev_close_price` string, nullable
    - `ch` string, nullable
    - `chp` string, nullable
    - `open_time` integer, nullable

## Other responses

- `400` — Bad request.
- `401` — Authentication failed.
- `403` — The caller's tier does not allow this request.
- `422` — Validation Error
- `429` — Per-minute, anonymous, or monthly quota exceeded.
- `500` — The operation failed internally.
- `503` — A required backend or data source is temporarily unavailable.

---

[API](https://skmtc.net/goldprice/apis/gold-api.md) · [All operations](https://skmtc.net/goldprice/apis/gold-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/goldprice/gold-api/revisions/5e6518098e6e/schema)
