---
title: "Signed ECB euro reference exchange rate"
method: GET
path: "/v1/oracle/fx"
---

# Signed ECB euro reference exchange rate

`GET /v1/oracle/fx`

## Request

- Base URL: `https://soren.com`
- URL: `https://soren.com/v1/oracle/fx`
- Auth: none declared

European Central Bank euro reference rate for any pair among the ~30 currencies the ECB publishes, returned with a SHA-256 of the exact upstream bytes, the read time, and an Ed25519 signature. Non-EUR pairs are crossed via EUR and the derivation is stated, because that cross is Soren's calculation and not an ECB figure. The ECB publishes these free of charge; the attestation is what is sold.

## Query parameters

- `pair` string, required

## Response `200`

Signed rate.

- object
  - `value` object
    - `pair` string
    - `base` string
    - `quote` string
    - `rate` number
    - `reference_date` string
    - `derivation` string
    - `note` string
  - `source` object
    - `name` string
    - `url` string
    - `licence` string
    - `notice` string
  - `provenance` object
    - `resource` string
    - `upstream_sha256` string
    - `observed_at` string, date-time
    - `signature` object
      - `algorithm` string
      - `over` string
      - `value` string
      - `public_key` string
    - `verify` string
  - `attestation` string
  - `settlement` string, nullable

## Other responses

- `400`: Missing or malformed pair. Refused before payment.
- `402`: Payment required. Requirements in the PAYMENT-REQUIRED header (x402 v2) and the body (v1).
- `404`: Currency not in the ECB reference set.
- `503`: The ECB did not answer.

---

[API](https://skmtc.dev/soren/apis/soren-free-games-api.md) · [All operations](https://skmtc.dev/soren/apis/soren-free-games-api/llms.txt) · [OpenAPI document](https://skmtc.dev/soren/apis/soren-free-games-api/revisions/00402cfcf30d?raw)
