---
title: "Convert an amount between currencies"
method: GET
path: "/currencies/v1/convert"
tags: ["Currencies"]
---

# Convert an amount between currencies

`GET /currencies/v1/convert`

Converts amount from one currency into one or more targets. from and to are required; amount is optional and defaults to 1, so omitting it returns the unit rate as result. to accepts a comma-separated list of up to 5 currencies, and the response carries one object per target, in the order requested. The call is all-or-nothing: an unknown from, any unknown to, or more than 5 targets fails the whole request with 400. Both fiat and crypto codes are accepted.

## Query parameters

- `from` string, required
- `to` string, required
- `amount` number
- `pretty` boolean

## Response `200`

Conversion result, one object per requested target currency.

- ConvertResponse
  - `data` object, required
    - `objects` ConvertObject[], required
      - `from` Currency — A currency as { code, name, symbol }. symbol is null where the currency has no conventional sign (e.g. precious metals).
        - `code` string, required — Uppercase currency code (e.g. USD, BTC).
        - `name` string, required
        - `symbol` string, nullable, required
      - `to` Currency — A currency as { code, name, symbol }. symbol is null where the currency has no conventional sign (e.g. precious metals).
        - `code` string, required — Uppercase currency code (e.g. USD, BTC).
        - `name` string, required
        - `symbol` string, nullable, required
      - `amount` number — The input amount in the source currency (the amount sent, or 1 by default).
      - `rate` number — Units of the target currency per one unit of the source, read from the as_of snapshot.
      - `result` number — The converted amount (amount x rate).
      - `as_of` integer — Unix timestamp (seconds) the rate was sourced. Day-granular today.
    - `meta` ResultMeta
      - `total` integer, required — Number of objects returned.
      - `request_id` string, required
      - `duration` integer, required — Server-side processing time in milliseconds.

## Other responses

- `400` — Bad request. Malformed parameters or unsupported property.
- `401` — Unauthorized. Missing, invalid, expired, or revoked API key.
- `403` — Forbidden. The account is deleted, disabled, frozen, or pending approval; the request origin isn't in the key's allowed CORS origins; a paid-only field was used as a search, filter, or lookup target on a plan that doesn't include it; a limit above the plan's ceiling but within the paid maximum was requested on a non-paid plan; or the monthly quota has been exceeded past the soft-limit grace period.
- `404` — Not found. The route doesn't match any defined endpoint, the API isn't active, or listing isn't supported for this API version.
- `405` — Method not allowed. Every endpoint is GET-only.
- `410` — Gone. The requested API version is no longer active.
- `429` — Too Many Requests. Sustained traffic above the edge rate limit (20 requests per 10 seconds) is rejected by Cloudflare before the request reaches the API, so this response is generated at the edge and does not carry the standard JSON error envelope. Back off briefly and retry.

---

[API](https://skmtc.dev/restcountries/apis/rest-countries.md) · [All operations](https://skmtc.dev/restcountries/apis/rest-countries/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/restcountries/rest-countries/revisions/87a86bdd79f6/schema)
