---
title: "Convert Batch"
method: POST
path: "/v1/convert"
---

# Convert Batch

`POST /v1/convert`

## Request body

- ConvertBatchRequest
  - `from` string, required
  - `pairs` array[], required
    - unknown[]
      - unknown

## Response `200`

Successful Response

- ConvertBatchResponse
  - `result` string
  - `from` string, required
  - `conversions` ConvertItem[], required
    - `to` string, required
    - `amount` number, required
    - `rate` number, required
    - `converted` number, required
    - `derived` boolean, required
    - `derivation_bps_max` number, nullable
  - `source` 'live' | 'ecb_daily' | 'fred_daily', required — Public `source` enum — wire contract (D2). NO `cached` value (cache lives in X-Cache).
  - `sources` object, required
  - `market_session` 'open' | 'weekend' | 'interbank_closed', required — Computed from a clock, no feed (D9). `interbank_closed` = a known non-weekend closure (e.g. an ECB/TARGET2 holiday detected via an empty Tier-C response — INGESTION §4).
  - `timestamp` string, required
  - `data_updated_at` string, required
  - `notice` string, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity
- `429` — Too Many Requests
- `500` — Internal Server Error
- `503` — Service Unavailable

## Changes

- **2026-07-26** `74895c8d2cd1` — 2 info
  - added the optional property `conversions/items/derivation_bps_max` to the response with the `200` status
  - added the required property `sources` to the response with the `200` status

[Change history](https://skmtc.dev/exchangerate/apis/exchangerate-dev/changes/v1/convert/post.md)

---

[API](https://skmtc.dev/exchangerate/apis/exchangerate-dev.md) · [All operations](https://skmtc.dev/exchangerate/apis/exchangerate-dev/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/exchangerate/exchangerate-dev/revisions/74895c8d2cd1/schema)
