---
title: "List currency pairs"
description: "Retrieves all supported currency pairs from all enabled providers."
protocol: rest
method: GET
endpoint: "/v1/fx/supported-currencies"
baseUrl: "https://api.gravv.xyz"
group: "Fx"
auth:
  label: "Api-Key"
  name: "Api-Key"
  in: header
---

# List currency pairs

<Endpoint method="GET" path="/v1/fx/supported-currencies" />

Retrieves all supported currency pairs from all enabled providers.

By default, only fiat currency pairs are returned. Set `include_crypto=true`
to include crypto pairs alongside fiat pairs.

This endpoint is cached for 1 hour.

## Query Parameters

<ParamField name="include_crypto" query="include_crypto" type="boolean" default="false">
  When `true`, returns both fiat and crypto supported currency pairs. When omitted or `false`, only fiat pairs are returned.
</ParamField>

## Responses

| Status | Description |
| --- | --- |
| `200` | List of supported currency pairs |
| `401` | Missing or invalid API key |
| `500` | Internal server error |

### 200 response

<ResponseField name="data" type="object[]">
  Array of supported currency pairs.

  <Expandable title="properties">
    <ResponseField name="from_currency" type="string">
      ISO 4217 currency code or crypto ticker for the source currency.
    </ResponseField>

    <ResponseField name="to_currency" type="string">
      ISO 4217 currency code or crypto ticker for the target currency.
    </ResponseField>

    <ResponseField name="currency_pair" type="string">
      The trading pair in `FROM/TO` format.
    </ResponseField>

    <ResponseField name="pair_type" type="string">
      Category of the currency pair.

      Possible values: `fiat/fiat`, `crypto/crypto`, `fiat/crypto`, `crypto/fiat`
    </ResponseField>

    <ResponseField name="from_currency_name" type="string">
      Full name of the source currency. Returns `null` when the name is unavailable.
    </ResponseField>

    <ResponseField name="to_currency_name" type="string">
      Full name of the target currency. Returns `null` when the name is unavailable.
    </ResponseField>

  </Expandable>
</ResponseField>

<ResponseField name="error" type="string,null">
  Error message. Returns `null` on success.
</ResponseField>

<ResponseExample>

```json title="fiat_only"
{
  "data": [
    {
      "currency_pair": "USD/ZAR",
      "pair_type": "fiat/fiat",
      "from_currency": "USD",
      "from_currency_name": "US Dollar",
      "to_currency": "ZAR",
      "to_currency_name": "South African Rand"
    },
    {
      "currency_pair": "USD/KES",
      "pair_type": "fiat/fiat",
      "from_currency": "USD",
      "from_currency_name": "US Dollar",
      "to_currency": "KES",
      "to_currency_name": "Kenyan Shilling"
    },
    {
      "currency_pair": "KES/TZS",
      "pair_type": "fiat/fiat",
      "from_currency": "KES",
      "from_currency_name": "Kenyan Shilling",
      "to_currency": "TZS",
      "to_currency_name": "Tanzanian Shilling"
    }
  ],
  "error": null
}
```

```json title="fiat_and_crypto"
{
  "data": [
    {
      "currency_pair": "USD/ZAR",
      "pair_type": "fiat/fiat",
      "from_currency": "USD",
      "from_currency_name": "US Dollar",
      "to_currency": "ZAR",
      "to_currency_name": "South African Rand"
    },
    {
      "currency_pair": "USDC/KES",
      "pair_type": "crypto/fiat",
      "from_currency": "USDC",
      "from_currency_name": "USD Coin",
      "to_currency": "KES",
      "to_currency_name": "Kenyan Shilling"
    },
    {
      "currency_pair": "USDC/MXN",
      "pair_type": "crypto/fiat",
      "from_currency": "USDC",
      "from_currency_name": "USD Coin",
      "to_currency": "MXN",
      "to_currency_name": "Mexican Peso"
    }
  ],
  "error": null
}
```

</ResponseExample>

### 401 response

<ResponseField name="data" type="null">
  Always null for error responses.
</ResponseField>

<ResponseField name="error" type="string">
  Human-readable error message.
</ResponseField>

<ResponseExample>

```json title="MissingApiKey"
{
  "data": null,
  "error": "Invalid or missing Api-Key header. Api-Key is required!"
}
```

```json title="InvalidApiKey"
{
  "data": null,
  "error": "Invalid token!"
}
```

</ResponseExample>

### 500 response

<ResponseField name="data" type="null">
  Always null for error responses.
</ResponseField>

<ResponseField name="error" type="string">
  Human-readable error message.
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "data": null,
  "error": "Internal server error"
}
```

</ResponseExample>

## Authorization

- **ApiKeyAuth**
